@stackmemoryai/stackmemory 1.7.0 → 1.8.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 (83) hide show
  1. package/dist/src/agents/core/agent-task-manager.js +3 -3
  2. package/dist/src/agents/verifiers/formatter-verifier.js +1 -1
  3. package/dist/src/agents/verifiers/llm-judge.js +2 -2
  4. package/dist/src/cli/commands/context-rehydrate.js +2 -2
  5. package/dist/src/cli/commands/log.js +1 -1
  6. package/dist/src/cli/commands/onboard.js +4 -4
  7. package/dist/src/cli/commands/search.js +3 -3
  8. package/dist/src/cli/commands/setup.js +1 -1
  9. package/dist/src/cli/commands/signup.js +1 -1
  10. package/dist/src/cli/commands/skills.js +2 -2
  11. package/dist/src/cli/commands/worktree.js +1 -1
  12. package/dist/src/core/config/config-manager.js +3 -1
  13. package/dist/src/core/config/types.js +7 -0
  14. package/dist/src/core/context/dual-stack-manager.js +2 -2
  15. package/dist/src/core/context/frame-database.js +38 -0
  16. package/dist/src/core/context/frame-enrichment.js +93 -0
  17. package/dist/src/core/context/frame-handoff-manager.js +1 -1
  18. package/dist/src/core/context/frame-manager.js +4 -4
  19. package/dist/src/core/context/rehydration.js +6 -6
  20. package/dist/src/core/database/sqlite-adapter.js +136 -15
  21. package/dist/src/core/digest/frame-digest-integration.js +1 -1
  22. package/dist/src/core/digest/hybrid-digest-generator.js +1 -1
  23. package/dist/src/core/digest/hybrid-digest.js +3 -3
  24. package/dist/src/core/errors/recovery.js +1 -1
  25. package/dist/src/core/extensions/loader.js +10 -10
  26. package/dist/src/core/extensions/plugin-system.js +1 -1
  27. package/dist/src/core/monitoring/logger.js +2 -2
  28. package/dist/src/core/monitoring/metrics.js +2 -2
  29. package/dist/src/core/monitoring/progress-tracker.js +2 -2
  30. package/dist/src/core/performance/lazy-context-loader.js +1 -1
  31. package/dist/src/core/performance/performance-benchmark.js +8 -8
  32. package/dist/src/core/performance/performance-profiler.js +2 -2
  33. package/dist/src/core/performance/streaming-jsonl-parser.js +1 -1
  34. package/dist/src/core/projects/project-isolation.js +1 -1
  35. package/dist/src/core/projects/project-manager.js +5 -5
  36. package/dist/src/core/session/clear-survival.js +3 -3
  37. package/dist/src/core/session/handoff-generator.js +1 -1
  38. package/dist/src/core/session/session-manager.js +4 -4
  39. package/dist/src/core/skills/skill-storage.js +2 -2
  40. package/dist/src/core/storage/remote-storage.js +2 -2
  41. package/dist/src/core/trace/cli-trace-wrapper.js +3 -3
  42. package/dist/src/core/trace/debug-trace.js +2 -2
  43. package/dist/src/core/trace/trace-detector.js +1 -1
  44. package/dist/src/core/worktree/worktree-manager.js +2 -2
  45. package/dist/src/features/analytics/api/analytics-api.js +1 -1
  46. package/dist/src/features/analytics/core/analytics-service.js +2 -2
  47. package/dist/src/features/analytics/queries/metrics-queries.js +1 -1
  48. package/dist/src/features/web/server/index.js +8 -8
  49. package/dist/src/integrations/anthropic/client.js +4 -4
  50. package/dist/src/integrations/claude-code/post-task-hooks.js +3 -3
  51. package/dist/src/integrations/claude-code/subagent-client.js +2 -2
  52. package/dist/src/integrations/diffmem/client.js +1 -1
  53. package/dist/src/integrations/linear/client.js +1 -1
  54. package/dist/src/integrations/linear/migration.js +1 -1
  55. package/dist/src/integrations/linear/oauth-server.js +2 -2
  56. package/dist/src/integrations/linear/sync.js +1 -1
  57. package/dist/src/integrations/linear/webhook-handler.js +2 -2
  58. package/dist/src/integrations/linear/webhook-server.js +2 -2
  59. package/dist/src/integrations/linear/webhook.js +2 -2
  60. package/dist/src/integrations/mcp/handlers/discovery-handlers.js +3 -3
  61. package/dist/src/integrations/mcp/handlers/linear-handlers.js +1 -1
  62. package/dist/src/integrations/mcp/handlers/skill-handlers.js +2 -2
  63. package/dist/src/integrations/mcp/handlers/task-handlers.js +2 -2
  64. package/dist/src/integrations/mcp/handlers/trace-handlers.js +1 -1
  65. package/dist/src/integrations/mcp/refactored-server.js +2 -2
  66. package/dist/src/integrations/mcp/remote-server.js +1 -1
  67. package/dist/src/integrations/mcp/server.js +4 -4
  68. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +13 -13
  69. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +1 -1
  70. package/dist/src/integrations/ralph/learning/pattern-learner.js +3 -3
  71. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +1 -1
  72. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +2 -2
  73. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +19 -19
  74. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +5 -5
  75. package/dist/src/integrations/ralph/performance/performance-optimizer.js +1 -1
  76. package/dist/src/integrations/ralph/recovery/crash-recovery.js +1 -1
  77. package/dist/src/integrations/ralph/state/state-reconciler.js +1 -1
  78. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +4 -4
  79. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +8 -8
  80. package/dist/src/integrations/ralph/visualization/ralph-debugger.js +3 -3
  81. package/dist/src/orchestrators/multimodal/harness.js +3 -3
  82. package/dist/src/servers/production/auth-middleware.js +2 -2
  83. package/package.json +1 -1
@@ -117,7 +117,7 @@ class SwarmCoordinator {
117
117
  /**
118
118
  * Launch a swarm of agents to work on a complex project
119
119
  */
120
- async launchSwarm(projectDescription, agents, coordination) {
120
+ async launchSwarm(projectDescription, agents, _coordination) {
121
121
  logger.info("Launching swarm", {
122
122
  project: projectDescription.substring(0, 100),
123
123
  agentCount: agents.length
@@ -236,7 +236,7 @@ class SwarmCoordinator {
236
236
  /**
237
237
  * Initialize specialized agents with role-specific configurations
238
238
  */
239
- async initializeSpecializedAgents(specifications, tasks) {
239
+ async initializeSpecializedAgents(specifications, _tasks) {
240
240
  const agents = [];
241
241
  for (const spec of specifications) {
242
242
  const agent = {
@@ -704,7 +704,7 @@ You are a PROJECT COORDINATOR. Your role is to:
704
704
  complexity: "medium"
705
705
  };
706
706
  }
707
- extractCoreFeatures(description) {
707
+ extractCoreFeatures(_description) {
708
708
  return [
709
709
  {
710
710
  name: "Core Feature",
@@ -760,7 +760,7 @@ You are a PROJECT COORDINATOR. Your role is to:
760
760
  agentCanHandle(agent, role) {
761
761
  return agent.role === role || agent.capabilities.includes(role);
762
762
  }
763
- selectOptimalAgent(agents, task) {
763
+ selectOptimalAgent(agents, _task) {
764
764
  return agents.reduce((best, current) => {
765
765
  const bestLoad = best.currentTask ? 1 : 0;
766
766
  const currentLoad = current.currentTask ? 1 : 0;
@@ -792,18 +792,18 @@ You are a PROJECT COORDINATOR. Your role is to:
792
792
  };
793
793
  return iterations[task.estimatedEffort] || 10;
794
794
  }
795
- async getSwarmContext(task) {
795
+ async getSwarmContext(_task) {
796
796
  const relatedTasks = Array.from(this.activeAgents.values()).filter((a) => a.currentTask).map((a) => `- Agent ${a.role} is working on task ${a.currentTask}`).join("\n");
797
797
  return relatedTasks || "No other agents currently active";
798
798
  }
799
- getCoordinationInstructions(agent) {
799
+ getCoordinationInstructions(_agent) {
800
800
  return `
801
801
  - Save progress to shared context regularly
802
802
  - Check for updates from collaborators
803
803
  - Request help if blocked for more than 2 iterations
804
804
  - Report completion immediately`;
805
805
  }
806
- setupAgentCoordination(agent, ralph, assignment) {
806
+ setupAgentCoordination(agent, _ralph, _assignment) {
807
807
  logger.debug(`Setting up coordination for agent ${agent.id}`);
808
808
  }
809
809
  updateAgentPerformance(agent, success) {
@@ -839,7 +839,7 @@ You are a PROJECT COORDINATOR. Your role is to:
839
839
  });
840
840
  }
841
841
  }
842
- async detectTunnelVision(agent) {
842
+ async detectTunnelVision(_agent) {
843
843
  return false;
844
844
  }
845
845
  async provideAlternativeApproach(agent) {
@@ -200,11 +200,11 @@ class RalphDebugger {
200
200
  try {
201
201
  const statePath = path.join(session.ralphDir, "state.json");
202
202
  const iterationPath = path.join(session.ralphDir, "iteration.txt");
203
- let currentState = {};
203
+ let _currentState = {};
204
204
  let currentIteration = 0;
205
205
  try {
206
206
  const stateData = await fs.readFile(statePath, "utf8");
207
- currentState = JSON.parse(stateData);
207
+ _currentState = JSON.parse(stateData);
208
208
  const iterData = await fs.readFile(iterationPath, "utf8");
209
209
  currentIteration = parseInt(iterData.trim()) || 0;
210
210
  } catch {
@@ -435,7 +435,7 @@ class RalphDebugger {
435
435
  return exportPath;
436
436
  }
437
437
  // Helper methods
438
- determineIterationPhase(ralphDir) {
438
+ determineIterationPhase(_ralphDir) {
439
439
  return "working";
440
440
  }
441
441
  async calculateContextSize(ralphDir) {
@@ -81,7 +81,7 @@ Constraints: Keep the plan minimal and implementable in a single PR.`;
81
81
  const iterations = [];
82
82
  let approved = false;
83
83
  let lastCommand = "";
84
- let lastOutput = "";
84
+ let _lastOutput = "";
85
85
  let lastCritique = {
86
86
  approved: true,
87
87
  issues: [],
@@ -106,14 +106,14 @@ Incorporate reviewer suggestions: ${lastCritique.suggestions.join("; ")}`;
106
106
  );
107
107
  ok = impl.ok;
108
108
  lastCommand = impl.command;
109
- lastOutput = impl.output;
109
+ _lastOutput = impl.output;
110
110
  } else {
111
111
  const impl = await implementWithClaude(implPrompt, {
112
112
  model: options.plannerModel
113
113
  });
114
114
  ok = impl.ok;
115
115
  lastCommand = `claude:${options.plannerModel || "sonnet"} prompt`;
116
- lastOutput = impl.output;
116
+ _lastOutput = impl.output;
117
117
  }
118
118
  const diff = options.dryRun !== false ? "(dry run \u2014 no diff)" : captureGitDiff(input.repoPath);
119
119
  const checks = options.dryRun !== false ? null : runPostImplChecks(input.repoPath);
@@ -10,7 +10,7 @@ import BetterSqlite3 from "better-sqlite3";
10
10
  import { logger } from "../../core/monitoring/logger.js";
11
11
  import { metrics } from "../../core/monitoring/metrics.js";
12
12
  import { getUserModel } from "../../models/user.model.js";
13
- function getEnv(key, defaultValue) {
13
+ function _getEnv(key, defaultValue) {
14
14
  const value = process.env[key];
15
15
  if (value === void 0) {
16
16
  if (defaultValue !== void 0) return defaultValue;
@@ -18,7 +18,7 @@ function getEnv(key, defaultValue) {
18
18
  }
19
19
  return value;
20
20
  }
21
- function getOptionalEnv(key) {
21
+ function _getOptionalEnv(key) {
22
22
  return process.env[key];
23
23
  }
24
24
  class AuthMiddleware {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackmemoryai/stackmemory",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "Lossless, project-scoped memory for AI coding tools. Durable context across sessions with 56 MCP tools, FTS5 search, conductor orchestrator, loop/watch monitoring, snapshot capture, pre-flight overlap checks, Claude/Codex/OpenCode wrappers, Linear sync, and automatic hooks.",
5
5
  "engines": {
6
6
  "node": ">=20.0.0",