@stackmemoryai/stackmemory 1.10.5 → 1.14.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 (225) hide show
  1. package/LICENSE +131 -64
  2. package/README.md +107 -24
  3. package/bin/claude-sm +16 -1
  4. package/bin/claude-smd +16 -1
  5. package/bin/codex-smd +16 -1
  6. package/bin/gemini-sm +16 -1
  7. package/bin/hermes-sm +21 -0
  8. package/bin/hermes-smd +21 -0
  9. package/bin/opencode-sm +16 -1
  10. package/dist/src/cli/claude-sm.js +266 -84
  11. package/dist/src/cli/codex-sm.js +225 -33
  12. package/dist/src/cli/commands/bench.js +209 -2
  13. package/dist/src/cli/commands/brain.js +206 -0
  14. package/dist/src/cli/commands/cache.js +126 -0
  15. package/dist/src/cli/commands/company-os.js +184 -0
  16. package/dist/src/cli/commands/context.js +5 -0
  17. package/dist/src/cli/commands/daemon.js +41 -0
  18. package/dist/src/cli/commands/handoff.js +40 -9
  19. package/dist/src/cli/commands/onboard.js +70 -3
  20. package/dist/src/cli/commands/operator.js +127 -0
  21. package/dist/src/cli/commands/optimize.js +117 -0
  22. package/dist/src/cli/commands/orchestrate.js +232 -5
  23. package/dist/src/cli/commands/orchestrator.js +315 -26
  24. package/dist/src/cli/commands/pack.js +322 -0
  25. package/dist/src/cli/commands/patterns.js +254 -0
  26. package/dist/src/cli/commands/portal.js +161 -0
  27. package/dist/src/cli/commands/scaffold.js +92 -0
  28. package/dist/src/cli/commands/search.js +40 -1
  29. package/dist/src/cli/commands/setup.js +178 -11
  30. package/dist/src/cli/commands/skills.js +10 -1
  31. package/dist/src/cli/commands/state.js +265 -0
  32. package/dist/src/cli/commands/sync.js +253 -0
  33. package/dist/src/cli/commands/tasks.js +130 -1
  34. package/dist/src/cli/commands/vision.js +221 -0
  35. package/dist/src/cli/gemini-sm.js +19 -29
  36. package/dist/src/cli/hermes-sm.js +224 -0
  37. package/dist/src/cli/index.js +105 -39
  38. package/dist/src/cli/opencode-sm.js +38 -21
  39. package/dist/src/cli/utils/determinism-watcher.js +66 -0
  40. package/dist/src/cli/utils/real-cli-bin.js +116 -0
  41. package/dist/src/core/brain/brain-store.js +187 -0
  42. package/dist/src/core/brain/brain-sync.js +193 -0
  43. package/dist/src/core/brain/index.js +78 -0
  44. package/dist/src/core/brain/types.js +10 -0
  45. package/dist/src/core/cache/content-cache.js +238 -0
  46. package/dist/src/{integrations/diffmem → core/cache}/index.js +5 -5
  47. package/dist/src/core/cache/token-estimator.js +39 -0
  48. package/dist/src/core/config/feature-flags.js +2 -6
  49. package/dist/src/core/context/frame-database.js +79 -27
  50. package/dist/src/core/context/recursive-context-manager.js +1 -1
  51. package/dist/src/core/context/rehydration.js +2 -1
  52. package/dist/src/core/cross-search/cross-project-search.js +269 -0
  53. package/dist/src/core/cross-search/index.js +10 -0
  54. package/dist/src/core/database/sqlite-adapter.js +14 -84
  55. package/dist/src/core/extensions/provider-adapter.js +5 -0
  56. package/dist/src/core/models/model-router.js +54 -2
  57. package/dist/src/core/models/provider-pricing.js +58 -4
  58. package/dist/src/core/monitoring/logger.js +2 -1
  59. package/dist/src/core/optimization/trace-optimizer.js +413 -0
  60. package/dist/src/core/patterns/index.js +22 -0
  61. package/dist/src/core/patterns/pattern-applier.js +39 -0
  62. package/dist/src/core/patterns/pattern-observer.js +157 -0
  63. package/dist/src/core/patterns/pattern-store.js +259 -0
  64. package/dist/src/core/patterns/types.js +19 -0
  65. package/dist/src/core/provenance/confidence-scorer.js +128 -0
  66. package/dist/src/core/provenance/index.js +40 -0
  67. package/dist/src/core/provenance/provenance-store.js +194 -0
  68. package/dist/src/core/provenance/types.js +82 -0
  69. package/dist/src/core/retrieval/llm-context-retrieval.js +5 -4
  70. package/dist/src/core/retrieval/unified-context-assembler.js +11 -66
  71. package/dist/src/core/session/project-handoff.js +64 -0
  72. package/dist/src/core/session/session-manager.js +28 -0
  73. package/dist/src/core/shared-state/canonical-store.js +564 -0
  74. package/dist/src/core/skill-packs/index.js +18 -0
  75. package/dist/src/core/skill-packs/parser.js +42 -0
  76. package/dist/src/core/skill-packs/registry.js +224 -0
  77. package/dist/src/core/skill-packs/types.js +79 -0
  78. package/dist/src/core/storage/cloud-sync-manager.js +116 -0
  79. package/dist/src/core/storage/cloud-sync.js +574 -0
  80. package/dist/src/core/storage/two-tier-storage.js +5 -1
  81. package/dist/src/core/tasks/master-tasks-template.js +43 -0
  82. package/dist/src/core/tasks/md-task-parser.js +138 -0
  83. package/dist/src/core/trace/trace-event-store.js +282 -0
  84. package/dist/src/core/vision/index.js +27 -0
  85. package/dist/src/core/vision/signals.js +79 -0
  86. package/dist/src/core/vision/types.js +22 -0
  87. package/dist/src/core/vision/vision-file.js +146 -0
  88. package/dist/src/core/vision/vision-loop.js +220 -0
  89. package/dist/src/core/wiki/wiki-compiler.js +103 -1
  90. package/dist/src/daemon/daemon-config.js +52 -0
  91. package/dist/src/daemon/services/desire-path-service.js +566 -0
  92. package/dist/src/daemon/services/github-service.js +126 -0
  93. package/dist/src/daemon/services/research-stream-service.js +320 -0
  94. package/dist/src/daemon/services/telemetry-service.js +192 -0
  95. package/dist/src/daemon/unified-daemon.js +58 -1
  96. package/dist/src/features/browser/cli-browser-agent.js +417 -0
  97. package/dist/src/features/browser/stagehand-workflows.js +578 -0
  98. package/dist/src/features/operator/adapter-factory.js +62 -0
  99. package/dist/src/features/operator/browser-adapter.js +109 -0
  100. package/dist/src/features/operator/desktop-adapter.js +125 -0
  101. package/dist/src/features/operator/index.js +39 -0
  102. package/dist/src/features/operator/llm-decision.js +137 -0
  103. package/dist/src/features/operator/operator-logger.js +92 -0
  104. package/dist/src/features/operator/overnight-runner.js +327 -0
  105. package/dist/src/features/operator/screen-adapter.js +91 -0
  106. package/dist/src/features/operator/session-manager.js +127 -0
  107. package/dist/src/features/operator/state-machine.js +227 -0
  108. package/dist/src/features/operator/task-queue.js +81 -0
  109. package/dist/src/features/portal/index.js +26 -0
  110. package/dist/src/features/portal/server.js +240 -0
  111. package/dist/src/features/portal/types.js +14 -0
  112. package/dist/src/features/portal/ui.js +195 -0
  113. package/dist/src/features/sweep/pty-wrapper.js +13 -5
  114. package/dist/src/features/tasks/task-aware-context.js +2 -1
  115. package/dist/src/features/tui/simple-monitor.js +0 -23
  116. package/dist/src/features/tui/swarm-monitor.js +8 -66
  117. package/dist/src/features/web/client/hooks/use-socket.js +12 -0
  118. package/dist/src/{core/merge/index.js → features/web/client/lib/utils.js} +8 -4
  119. package/dist/src/features/web/client/next-env.d.js +4 -0
  120. package/dist/src/features/web/client/stores/session-store.js +12 -0
  121. package/dist/src/features/web/server/gcp-billing.js +76 -0
  122. package/dist/src/features/web/server/index.js +10 -0
  123. package/dist/src/features/web/server/spend-calculator.js +228 -0
  124. package/dist/src/hooks/schemas.js +6 -1
  125. package/dist/src/integrations/anthropic/client.js +3 -2
  126. package/dist/src/integrations/claude-code/agent-bridge.js +0 -3
  127. package/dist/src/integrations/claude-code/subagent-client.js +307 -11
  128. package/dist/src/integrations/claude-code/task-coordinator.js +2 -1
  129. package/dist/src/integrations/github/pr-state.js +158 -0
  130. package/dist/src/integrations/linear/client.js +4 -1
  131. package/dist/src/integrations/linear/webhook-retry.js +196 -0
  132. package/dist/src/integrations/linear/webhook-server.js +18 -22
  133. package/dist/src/integrations/mcp/handlers/cloud-sync-handlers.js +101 -0
  134. package/dist/src/integrations/mcp/handlers/index.js +40 -84
  135. package/dist/src/integrations/mcp/server.js +542 -641
  136. package/dist/src/integrations/mcp/tool-alias-registry.js +297 -0
  137. package/dist/src/integrations/mcp/tool-definitions.js +152 -682
  138. package/dist/src/mcp/stackmemory-mcp-server.js +571 -231
  139. package/dist/src/orchestrators/multimodal/determinism.js +244 -0
  140. package/dist/src/orchestrators/multimodal/harness.js +149 -78
  141. package/dist/src/orchestrators/multimodal/providers.js +44 -3
  142. package/dist/src/skills/recursive-agent-orchestrator.js +2 -4
  143. package/dist/src/utils/hook-installer.js +0 -8
  144. package/dist/src/utils/process-cleanup.js +1 -7
  145. package/docs/README.md +42 -0
  146. package/docs/guides/README_INSTALL.md +208 -0
  147. package/package.json +27 -9
  148. package/packs/coding/python-fastapi/instructions.md +60 -0
  149. package/packs/coding/python-fastapi/pack.yaml +28 -0
  150. package/packs/coding/typescript-react/instructions.md +47 -0
  151. package/packs/coding/typescript-react/pack.yaml +28 -0
  152. package/packs/core/commands/capture.md +32 -0
  153. package/packs/core/commands/learn.md +73 -0
  154. package/packs/core/commands/next.md +36 -0
  155. package/packs/core/commands/restart.md +58 -0
  156. package/packs/core/commands/restore.md +29 -0
  157. package/packs/core/commands/start.md +57 -0
  158. package/packs/core/commands/stop.md +65 -0
  159. package/packs/core/commands/summary.md +40 -0
  160. package/packs/core/manifest.json +24 -0
  161. package/packs/ops/decision-recovery/instructions.md +65 -0
  162. package/packs/ops/decision-recovery/pack.yaml +89 -0
  163. package/scripts/claude-code-wrapper.sh +11 -0
  164. package/scripts/claude-sm-setup.sh +12 -1
  165. package/scripts/codex-wrapper.sh +11 -0
  166. package/scripts/git-hooks/branch-context-manager.sh +11 -0
  167. package/scripts/git-hooks/post-checkout-stackmemory.sh +11 -0
  168. package/scripts/git-hooks/post-commit-stackmemory.sh +11 -0
  169. package/scripts/git-hooks/pre-commit-stackmemory.sh +11 -0
  170. package/scripts/hooks/cleanup-shell.sh +12 -1
  171. package/scripts/hooks/task-complete.sh +12 -1
  172. package/scripts/install-code-execution-hooks.sh +12 -1
  173. package/scripts/install-sweep-hook.sh +12 -0
  174. package/scripts/install.sh +11 -0
  175. package/scripts/opencode-wrapper.sh +11 -0
  176. package/scripts/portal/cloud-init.yaml +69 -0
  177. package/scripts/portal/setup.sh +69 -0
  178. package/scripts/portal/stackmemory-portal.service +34 -0
  179. package/scripts/setup-claude-integration.sh +12 -1
  180. package/scripts/smoke-init-db.sh +23 -0
  181. package/scripts/stackmemory-daemon.sh +11 -0
  182. package/scripts/verify-dist.cjs +11 -4
  183. package/dist/src/cli/commands/ralph.js +0 -1053
  184. package/dist/src/cli/commands/team.js +0 -168
  185. package/dist/src/core/context/shared-context-layer.js +0 -620
  186. package/dist/src/core/context/stack-merge-resolver.js +0 -748
  187. package/dist/src/core/merge/conflict-detector.js +0 -430
  188. package/dist/src/core/merge/resolution-engine.js +0 -557
  189. package/dist/src/core/merge/stack-diff.js +0 -531
  190. package/dist/src/core/merge/unified-merge-resolver.js +0 -302
  191. package/dist/src/hooks/diffmem-hooks.js +0 -376
  192. package/dist/src/integrations/diffmem/client.js +0 -208
  193. package/dist/src/integrations/diffmem/config.js +0 -14
  194. package/dist/src/integrations/greptile/client.js +0 -101
  195. package/dist/src/integrations/greptile/config.js +0 -14
  196. package/dist/src/integrations/greptile/index.js +0 -11
  197. package/dist/src/integrations/mcp/handlers/cord-handlers.js +0 -397
  198. package/dist/src/integrations/mcp/handlers/diffmem-handlers.js +0 -455
  199. package/dist/src/integrations/mcp/handlers/greptile-handlers.js +0 -456
  200. package/dist/src/integrations/mcp/handlers/provider-handlers.js +0 -227
  201. package/dist/src/integrations/mcp/handlers/team-handlers.js +0 -211
  202. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +0 -863
  203. package/dist/src/integrations/ralph/context/context-budget-manager.js +0 -308
  204. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +0 -391
  205. package/dist/src/integrations/ralph/index.js +0 -17
  206. package/dist/src/integrations/ralph/learning/pattern-learner.js +0 -435
  207. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +0 -448
  208. package/dist/src/integrations/ralph/loopmax.js +0 -488
  209. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +0 -293
  210. package/dist/src/integrations/ralph/monitoring/swarm-registry.js +0 -107
  211. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +0 -508
  212. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +0 -407
  213. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +0 -495
  214. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +0 -387
  215. package/dist/src/integrations/ralph/performance/performance-optimizer.js +0 -357
  216. package/dist/src/integrations/ralph/recovery/crash-recovery.js +0 -461
  217. package/dist/src/integrations/ralph/state/state-reconciler.js +0 -420
  218. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +0 -444
  219. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +0 -1007
  220. package/dist/src/integrations/ralph/visualization/ralph-debugger.js +0 -635
  221. package/scripts/ralph-loop-implementation.js +0 -404
  222. /package/dist/src/core/{merge → cache}/types.js +0 -0
  223. /package/dist/src/{integrations/diffmem/types.js → core/storage/cloud-sync-types.js} +0 -0
  224. /package/dist/src/{integrations/greptile/types.js → core/trace/trace-event.js} +0 -0
  225. /package/dist/src/{integrations/ralph → features/operator}/types.js +0 -0
@@ -15,14 +15,12 @@ import {
15
15
  import {
16
16
  DiscoveryHandlers
17
17
  } from "./discovery-handlers.js";
18
- import {
19
- ProviderHandlers
20
- } from "./provider-handlers.js";
21
- import { TeamHandlers } from "./team-handlers.js";
22
- import { CordHandlers } from "./cord-handlers.js";
23
18
  import {
24
19
  ProvenantHandlers
25
20
  } from "./provenant-handlers.js";
21
+ import {
22
+ CloudSyncHandlers
23
+ } from "./cloud-sync-handlers.js";
26
24
  import {
27
25
  ContextHandlers as ContextHandlers2
28
26
  } from "./context-handlers.js";
@@ -31,19 +29,18 @@ import {
31
29
  LinearHandlers as LinearHandlers2
32
30
  } from "./linear-handlers.js";
33
31
  import { TraceHandlers as TraceHandlers2 } from "./trace-handlers.js";
34
- import { ProviderHandlers as ProviderHandlers2 } from "./provider-handlers.js";
35
- import { TeamHandlers as TeamHandlers2 } from "./team-handlers.js";
36
- import { CordHandlers as CordHandlers2 } from "./cord-handlers.js";
37
32
  import { ProvenantHandlers as ProvenantHandlers2 } from "./provenant-handlers.js";
33
+ import { CloudSyncHandlers as CloudSyncHandlers2 } from "./cloud-sync-handlers.js";
34
+ import {
35
+ resolveToolAlias
36
+ } from "../tool-alias-registry.js";
38
37
  class MCPHandlerFactory {
39
38
  contextHandlers;
40
39
  taskHandlers;
41
40
  linearHandlers;
42
41
  traceHandlers;
43
- providerHandlers;
44
- teamHandlers;
45
- cordHandlers;
46
42
  provenantHandlers;
43
+ cloudSyncHandlers;
47
44
  constructor(deps) {
48
45
  this.contextHandlers = new ContextHandlers2({
49
46
  frameManager: deps.frameManager
@@ -61,28 +58,29 @@ class MCPHandlerFactory {
61
58
  traceDetector: deps.traceDetector,
62
59
  browserMCP: deps.browserMCP
63
60
  });
64
- this.providerHandlers = new ProviderHandlers2();
65
- if (deps.dbAdapter) {
66
- this.teamHandlers = new TeamHandlers2({
67
- frameManager: deps.frameManager,
68
- dbAdapter: deps.dbAdapter
69
- });
70
- this.cordHandlers = new CordHandlers2({
71
- frameManager: deps.frameManager,
72
- dbAdapter: deps.dbAdapter
73
- });
74
- }
75
61
  if (deps.projectDir) {
76
62
  this.provenantHandlers = new ProvenantHandlers2({
77
63
  projectDir: deps.projectDir
78
64
  });
79
65
  }
66
+ this.cloudSyncHandlers = new CloudSyncHandlers2({
67
+ syncManager: null
68
+ // Initialized lazily when cloud sync is configured
69
+ });
80
70
  }
81
71
  /**
82
- * Get handler for a specific tool
72
+ * Set the cloud sync manager (called after config/auth is loaded)
73
+ */
74
+ setCloudSyncManager(manager) {
75
+ this.cloudSyncHandlers = new CloudSyncHandlers2({ syncManager: manager });
76
+ }
77
+ /**
78
+ * Get handler for a specific tool.
79
+ * Resolves tool name aliases before lookup.
83
80
  */
84
81
  getHandler(toolName) {
85
- switch (toolName) {
82
+ const { canonicalName } = resolveToolAlias(toolName);
83
+ switch (canonicalName) {
86
84
  // Context handlers
87
85
  case "get_context":
88
86
  return this.contextHandlers.handleGetContext.bind(this.contextHandlers);
@@ -138,45 +136,6 @@ class MCPHandlerFactory {
138
136
  this.traceHandlers
139
137
  );
140
138
  // Provider handlers
141
- case "delegate_to_model":
142
- return this.providerHandlers.handleDelegateToModel.bind(
143
- this.providerHandlers
144
- );
145
- case "batch_submit":
146
- return this.providerHandlers.handleBatchSubmit.bind(
147
- this.providerHandlers
148
- );
149
- case "batch_check":
150
- return this.providerHandlers.handleBatchCheck.bind(
151
- this.providerHandlers
152
- );
153
- // Team handlers
154
- case "team_context_get":
155
- if (!this.teamHandlers) throw new Error("Team tools require dbAdapter");
156
- return this.teamHandlers.handleTeamContextGet.bind(this.teamHandlers);
157
- case "team_context_share":
158
- if (!this.teamHandlers) throw new Error("Team tools require dbAdapter");
159
- return this.teamHandlers.handleTeamContextShare.bind(this.teamHandlers);
160
- case "team_search":
161
- if (!this.teamHandlers) throw new Error("Team tools require dbAdapter");
162
- return this.teamHandlers.handleTeamSearch.bind(this.teamHandlers);
163
- // Cord orchestration handlers
164
- case "cord_spawn":
165
- if (!this.cordHandlers) throw new Error("Cord tools require dbAdapter");
166
- return this.cordHandlers.handleCordSpawn.bind(this.cordHandlers);
167
- case "cord_fork":
168
- if (!this.cordHandlers) throw new Error("Cord tools require dbAdapter");
169
- return this.cordHandlers.handleCordFork.bind(this.cordHandlers);
170
- case "cord_complete":
171
- if (!this.cordHandlers) throw new Error("Cord tools require dbAdapter");
172
- return this.cordHandlers.handleCordComplete.bind(this.cordHandlers);
173
- case "cord_ask":
174
- if (!this.cordHandlers) throw new Error("Cord tools require dbAdapter");
175
- return this.cordHandlers.handleCordAsk.bind(this.cordHandlers);
176
- case "cord_tree":
177
- if (!this.cordHandlers) throw new Error("Cord tools require dbAdapter");
178
- return this.cordHandlers.handleCordTree.bind(this.cordHandlers);
179
- // Provenant decision graph handlers
180
139
  case "provenant_search":
181
140
  if (!this.provenantHandlers)
182
141
  throw new Error("Provenant tools require projectDir");
@@ -201,6 +160,14 @@ class MCPHandlerFactory {
201
160
  return this.provenantHandlers.handleResolve.bind(
202
161
  this.provenantHandlers
203
162
  );
163
+ // Cross-project search handlers
164
+ case "cloud_sync_push":
165
+ return this.cloudSyncHandlers.handlePush.bind(this.cloudSyncHandlers);
166
+ case "cloud_sync_pull":
167
+ return this.cloudSyncHandlers.handlePull.bind(this.cloudSyncHandlers);
168
+ case "cloud_sync_status":
169
+ return this.cloudSyncHandlers.handleStatus.bind(this.cloudSyncHandlers);
170
+ // Workflow handlers
204
171
  default:
205
172
  throw new Error(`Unknown tool: ${toolName}`);
206
173
  }
@@ -233,44 +200,33 @@ class MCPHandlerFactory {
233
200
  "take_screenshot",
234
201
  "execute_script",
235
202
  "stop_browser_debug",
236
- // Provider tools (conditionally active)
237
- "delegate_to_model",
238
- "batch_submit",
239
- "batch_check",
240
- // Team tools
241
- "team_context_get",
242
- "team_context_share",
243
- "team_search",
244
- // Cord orchestration tools
245
- "cord_spawn",
246
- "cord_fork",
247
- "cord_complete",
248
- "cord_ask",
249
- "cord_tree",
250
- // Provenant decision graph tools
203
+ // Provenant tools
251
204
  "provenant_search",
252
205
  "provenant_log",
253
206
  "provenant_status",
254
207
  "provenant_contradictions",
255
- "provenant_resolve"
208
+ "provenant_resolve",
209
+ // Cloud sync tools
210
+ "cloud_sync_push",
211
+ "cloud_sync_pull",
212
+ "cloud_sync_status"
256
213
  ];
257
214
  }
258
215
  /**
259
- * Check if a tool exists
216
+ * Check if a tool exists (resolves aliases)
260
217
  */
261
218
  hasHandler(toolName) {
262
- return this.getAvailableTools().includes(toolName);
219
+ const { canonicalName } = resolveToolAlias(toolName);
220
+ return this.getAvailableTools().includes(canonicalName);
263
221
  }
264
222
  }
265
223
  export {
224
+ CloudSyncHandlers,
266
225
  ContextHandlers,
267
- CordHandlers,
268
226
  DiscoveryHandlers,
269
227
  LinearHandlers,
270
228
  MCPHandlerFactory,
271
229
  ProvenantHandlers,
272
- ProviderHandlers,
273
230
  TaskHandlers,
274
- TeamHandlers,
275
231
  TraceHandlers
276
232
  };