@stackmemoryai/stackmemory 0.1.0 → 0.2.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 (77) hide show
  1. package/dist/scripts/initialize.js +15 -15
  2. package/dist/scripts/initialize.js.map +1 -1
  3. package/dist/scripts/status.js +21 -11
  4. package/dist/scripts/status.js.map +1 -1
  5. package/dist/src/beads/beads-task-store.d.ts +117 -0
  6. package/dist/src/beads/beads-task-store.d.ts.map +1 -0
  7. package/dist/src/beads/beads-task-store.js +318 -0
  8. package/dist/src/beads/beads-task-store.js.map +1 -0
  9. package/dist/src/beads/task-aware-context.d.ts +103 -0
  10. package/dist/src/beads/task-aware-context.d.ts.map +1 -0
  11. package/dist/src/beads/task-aware-context.js +395 -0
  12. package/dist/src/beads/task-aware-context.js.map +1 -0
  13. package/dist/src/beads-task-store.d.ts +117 -0
  14. package/dist/src/beads-task-store.d.ts.map +1 -0
  15. package/dist/src/beads-task-store.js +318 -0
  16. package/dist/src/beads-task-store.js.map +1 -0
  17. package/dist/src/cli/cli.d.ts +7 -0
  18. package/dist/src/cli/cli.d.ts.map +1 -0
  19. package/dist/src/cli/cli.js +471 -0
  20. package/dist/src/cli/cli.js.map +1 -0
  21. package/dist/src/core/error-handler.d.ts +46 -0
  22. package/dist/src/core/error-handler.d.ts.map +1 -0
  23. package/dist/src/core/error-handler.js +212 -0
  24. package/dist/src/core/error-handler.js.map +1 -0
  25. package/dist/src/core/frame-manager.d.ts +106 -0
  26. package/dist/src/core/frame-manager.d.ts.map +1 -0
  27. package/dist/src/core/frame-manager.js +387 -0
  28. package/dist/src/core/frame-manager.js.map +1 -0
  29. package/dist/src/core/logger.d.ts +24 -0
  30. package/dist/src/core/logger.d.ts.map +1 -0
  31. package/dist/src/core/logger.js +121 -0
  32. package/dist/src/core/logger.js.map +1 -0
  33. package/dist/src/core/logger.test.d.ts +2 -0
  34. package/dist/src/core/logger.test.d.ts.map +1 -0
  35. package/dist/src/core/logger.test.js +31 -0
  36. package/dist/src/core/logger.test.js.map +1 -0
  37. package/dist/src/index.d.ts +4 -4
  38. package/dist/src/index.d.ts.map +1 -1
  39. package/dist/src/index.js +4 -4
  40. package/dist/src/index.js.map +1 -1
  41. package/dist/src/integrations/linear-auth.d.ts +99 -0
  42. package/dist/src/integrations/linear-auth.d.ts.map +1 -0
  43. package/dist/src/integrations/linear-auth.js +319 -0
  44. package/dist/src/integrations/linear-auth.js.map +1 -0
  45. package/dist/src/integrations/linear-auto-sync.d.ts +77 -0
  46. package/dist/src/integrations/linear-auto-sync.d.ts.map +1 -0
  47. package/dist/src/integrations/linear-auto-sync.js +268 -0
  48. package/dist/src/integrations/linear-auto-sync.js.map +1 -0
  49. package/dist/src/integrations/linear-client.d.ts +86 -0
  50. package/dist/src/integrations/linear-client.d.ts.map +1 -0
  51. package/dist/src/integrations/linear-client.js +275 -0
  52. package/dist/src/integrations/linear-client.js.map +1 -0
  53. package/dist/src/integrations/linear-config.d.ts +51 -0
  54. package/dist/src/integrations/linear-config.d.ts.map +1 -0
  55. package/dist/src/integrations/linear-config.js +103 -0
  56. package/dist/src/integrations/linear-config.js.map +1 -0
  57. package/dist/src/integrations/linear-sync.d.ts +95 -0
  58. package/dist/src/integrations/linear-sync.d.ts.map +1 -0
  59. package/dist/src/integrations/linear-sync.js +340 -0
  60. package/dist/src/integrations/linear-sync.js.map +1 -0
  61. package/dist/src/mcp/mcp-server.d.ts +38 -0
  62. package/dist/src/mcp/mcp-server.d.ts.map +1 -0
  63. package/dist/src/mcp/mcp-server.js +812 -0
  64. package/dist/src/mcp/mcp-server.js.map +1 -0
  65. package/dist/src/pebbles/pebbles-task-store.d.ts +117 -0
  66. package/dist/src/pebbles/pebbles-task-store.d.ts.map +1 -0
  67. package/dist/src/pebbles/pebbles-task-store.js +335 -0
  68. package/dist/src/pebbles/pebbles-task-store.js.map +1 -0
  69. package/dist/src/pebbles/task-aware-context.d.ts +103 -0
  70. package/dist/src/pebbles/task-aware-context.d.ts.map +1 -0
  71. package/dist/src/pebbles/task-aware-context.js +412 -0
  72. package/dist/src/pebbles/task-aware-context.js.map +1 -0
  73. package/dist/src/task-aware-context.d.ts +103 -0
  74. package/dist/src/task-aware-context.d.ts.map +1 -0
  75. package/dist/src/task-aware-context.js +395 -0
  76. package/dist/src/task-aware-context.js.map +1 -0
  77. package/package.json +40 -9
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Initialize StackMemory in the current project
4
4
  */
5
- import { existsSync, mkdirSync, writeFileSync } from 'fs';
5
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, appendFileSync, } from 'fs';
6
6
  import { join } from 'path';
7
7
  import { execSync } from 'child_process';
8
8
  import chalk from 'chalk';
@@ -21,9 +21,9 @@ else {
21
21
  const gitignorePath = join(projectRoot, '.gitignore');
22
22
  const gitignoreEntry = '\n# StackMemory\n.stackmemory/*.db\n.stackmemory/*.db-*\n';
23
23
  if (existsSync(gitignorePath)) {
24
- const gitignore = require('fs').readFileSync(gitignorePath, 'utf-8');
24
+ const gitignore = readFileSync(gitignorePath, 'utf-8');
25
25
  if (!gitignore.includes('.stackmemory')) {
26
- require('fs').appendFileSync(gitignorePath, gitignoreEntry);
26
+ appendFileSync(gitignorePath, gitignoreEntry);
27
27
  console.log(chalk.green('✓') + ' Added .stackmemory to .gitignore');
28
28
  }
29
29
  }
@@ -38,7 +38,7 @@ if (!existsSync(configPath)) {
38
38
  projectId: projectRoot.split('/').pop(),
39
39
  userId: process.env.USER || 'default',
40
40
  teamId: 'local',
41
- initialized: new Date().toISOString()
41
+ initialized: new Date().toISOString(),
42
42
  };
43
43
  writeFileSync(configPath, JSON.stringify(config, null, 2));
44
44
  console.log(chalk.green('✓') + ' Created config file');
@@ -50,7 +50,7 @@ if (!existsSync(jsonlPath)) {
50
50
  id: 'init_' + Date.now(),
51
51
  type: 'system',
52
52
  content: 'StackMemory initialized',
53
- timestamp: Date.now()
53
+ timestamp: Date.now(),
54
54
  };
55
55
  writeFileSync(jsonlPath, JSON.stringify(initialFrame) + '\n');
56
56
  console.log(chalk.green('✓') + ' Created frames.jsonl');
@@ -59,15 +59,15 @@ if (!existsSync(jsonlPath)) {
59
59
  const mcpConfigPath = join(process.env.HOME || '~', '.config', 'claude', 'mcp.json');
60
60
  console.log(chalk.blue('\n📝 MCP Configuration for Claude Code:\n'));
61
61
  const mcpConfig = {
62
- "mcpServers": {
63
- "stackmemory": {
64
- "command": "node",
65
- "args": [join(projectRoot, "dist", "mcp-server.js")],
66
- "env": {
67
- "PROJECT_ROOT": projectRoot
68
- }
69
- }
70
- }
62
+ mcpServers: {
63
+ stackmemory: {
64
+ command: 'node',
65
+ args: [join(projectRoot, 'dist', 'mcp-server.js')],
66
+ env: {
67
+ PROJECT_ROOT: projectRoot,
68
+ },
69
+ },
70
+ },
71
71
  };
72
72
  console.log(chalk.gray('Add this to your Claude Code MCP configuration:'));
73
73
  console.log(chalk.gray('(' + mcpConfigPath + ')\n'));
@@ -78,7 +78,7 @@ try {
78
78
  execSync('npm run build', { stdio: 'inherit', cwd: projectRoot });
79
79
  console.log(chalk.green('✓') + ' Build completed');
80
80
  }
81
- catch (e) {
81
+ catch {
82
82
  console.log(chalk.yellow('⚠') + ' Build failed - run npm run build manually');
83
83
  }
84
84
  console.log(chalk.green.bold('\n✅ StackMemory initialized successfully!\n'));
@@ -1 +1 @@
1
- {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../scripts/initialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../scripts/initialize.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAElC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;AAEnE,mCAAmC;AACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,iCAAiC,CAAC,CAAC;AACpE,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,wCAAwC,CAAC,CAAC;AAC5E,CAAC;AAED,uBAAuB;AACvB,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AACtD,MAAM,cAAc,GAClB,2DAA2D,CAAC;AAE9D,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACxC,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,mCAAmC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;KAAM,CAAC;IACN,aAAa,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,uCAAuC,CAAC,CAAC;AAC1E,CAAC;AAED,wBAAwB;AACxB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;QACvC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS;QACrC,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;IACF,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAC;AACzD,CAAC;AAED,+BAA+B;AAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACjD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG;QACnB,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;QACxB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,yBAAyB;QAClC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;IACF,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC;AAC1D,CAAC;AAED,uCAAuC;AACvC,MAAM,aAAa,GAAG,IAAI,CACxB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EACvB,SAAS,EACT,QAAQ,EACR,UAAU,CACX,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;AAErE,MAAM,SAAS,GAAG;IAChB,UAAU,EAAE;QACV,WAAW,EAAE;YACX,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;YAClD,GAAG,EAAE;gBACH,YAAY,EAAE,WAAW;aAC1B;SACF;KACF;CACF,CAAC;AAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;AAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC;AACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,uBAAuB;AACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;AAC/D,IAAI,CAAC;IACH,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC;AACrD,CAAC;AAAC,MAAM,CAAC;IACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,4CAA4C,CAAC,CAAC;AAChF,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;AAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;AAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;AAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC9C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,iCAAiC,CACpE,CAAC;AACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,6BAA6B,CAAC,CAAC;AAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,4BAA4B,CAAC,CAAC"}
@@ -19,7 +19,9 @@ console.log(chalk.blue.bold('\n📊 StackMemory Status\n'));
19
19
  const stats = {
20
20
  contexts: db.prepare('SELECT COUNT(*) as count FROM contexts').get(),
21
21
  frames: db.prepare('SELECT COUNT(*) as count FROM frames').get(),
22
- attention: db.prepare('SELECT COUNT(*) as count FROM attention_log').get(),
22
+ attention: db
23
+ .prepare('SELECT COUNT(*) as count FROM attention_log')
24
+ .get(),
23
25
  };
24
26
  console.log(chalk.green('Database:') + ` ${dbPath}`);
25
27
  console.log(chalk.green('Contexts:') + ` ${stats.contexts.count}`);
@@ -27,12 +29,14 @@ console.log(chalk.green('Frames:') + ` ${stats.frames.count}`);
27
29
  console.log(chalk.green('Attention logs:') + ` ${stats.attention.count}`);
28
30
  // Get top contexts by importance
29
31
  console.log(chalk.blue('\n🎯 Top Contexts by Importance:\n'));
30
- const topContexts = db.prepare(`
32
+ const topContexts = db
33
+ .prepare(`
31
34
  SELECT type, substr(content, 1, 60) as preview, importance, access_count
32
35
  FROM contexts
33
36
  ORDER BY importance DESC, access_count DESC
34
37
  LIMIT 5
35
- `).all();
38
+ `)
39
+ .all();
36
40
  topContexts.forEach((ctx, i) => {
37
41
  const importance = '●'.repeat(Math.round(ctx.importance * 5));
38
42
  console.log(chalk.cyan(`${i + 1}.`) +
@@ -42,22 +46,25 @@ topContexts.forEach((ctx, i) => {
42
46
  console.log(chalk.gray(` ${ctx.preview}...`));
43
47
  });
44
48
  // Get active frames
45
- const activeFrames = db.prepare(`
49
+ const activeFrames = db
50
+ .prepare(`
46
51
  SELECT task, datetime(created_at, 'unixepoch') as started
47
52
  FROM frames
48
53
  WHERE status = 'active'
49
54
  ORDER BY created_at DESC
50
55
  LIMIT 3
51
- `).all();
56
+ `)
57
+ .all();
52
58
  if (activeFrames.length > 0) {
53
59
  console.log(chalk.blue('\n🔄 Active Tasks:\n'));
54
- activeFrames.forEach(frame => {
60
+ activeFrames.forEach((frame) => {
55
61
  console.log(chalk.green('•') + ` ${frame.task}`);
56
62
  console.log(chalk.gray(` Started: ${frame.started}`));
57
63
  });
58
64
  }
59
65
  // Get recent attention patterns
60
- const recentAttention = db.prepare(`
66
+ const recentAttention = db
67
+ .prepare(`
61
68
  SELECT
62
69
  substr(query, 1, 50) as query_preview,
63
70
  COUNT(*) as count
@@ -66,19 +73,22 @@ const recentAttention = db.prepare(`
66
73
  GROUP BY query_preview
67
74
  ORDER BY count DESC
68
75
  LIMIT 3
69
- `).all();
76
+ `)
77
+ .all();
70
78
  if (recentAttention.length > 0) {
71
79
  console.log(chalk.blue('\n👁️ Recent Query Patterns:\n'));
72
- recentAttention.forEach(pattern => {
80
+ recentAttention.forEach((pattern) => {
73
81
  console.log(chalk.yellow('?') + ` "${pattern.query_preview}..." (${pattern.count}x)`);
74
82
  });
75
83
  }
76
84
  // Show context decay
77
- const oldContexts = db.prepare(`
85
+ const oldContexts = db
86
+ .prepare(`
78
87
  SELECT COUNT(*) as count
79
88
  FROM contexts
80
89
  WHERE last_accessed < unixepoch() - 86400 * 7
81
- `).get();
90
+ `)
91
+ .get();
82
92
  if (oldContexts.count > 0) {
83
93
  console.log(chalk.yellow(`\n⚠️ ${oldContexts.count} contexts haven't been accessed in 7+ days`));
84
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../scripts/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../scripts/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Beads-Inspired Task Storage
3
+ * Git-native JSONL storage with SQLite cache for tasks
4
+ */
5
+ import Database from 'better-sqlite3';
6
+ export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'blocked' | 'cancelled';
7
+ export type TaskPriority = 'low' | 'medium' | 'high' | 'urgent';
8
+ export interface BeadsTask {
9
+ id: string;
10
+ type: 'task_create' | 'task_update' | 'task_complete' | 'task_block';
11
+ timestamp: number;
12
+ parent_id?: string;
13
+ frame_id: string;
14
+ title: string;
15
+ description?: string;
16
+ status: TaskStatus;
17
+ priority: TaskPriority;
18
+ assignee?: string;
19
+ created_at: number;
20
+ started_at?: number;
21
+ completed_at?: number;
22
+ estimated_effort?: number;
23
+ actual_effort?: number;
24
+ depends_on: string[];
25
+ blocks: string[];
26
+ tags: string[];
27
+ external_refs?: {
28
+ linear?: {
29
+ id: string;
30
+ url: string;
31
+ };
32
+ github?: {
33
+ issue: number;
34
+ url: string;
35
+ };
36
+ };
37
+ context_score?: number;
38
+ last_accessed?: number;
39
+ }
40
+ export interface TaskMetrics {
41
+ total_tasks: number;
42
+ by_status: Record<TaskStatus, number>;
43
+ by_priority: Record<TaskPriority, number>;
44
+ completion_rate: number;
45
+ avg_effort_accuracy: number;
46
+ blocked_tasks: number;
47
+ overdue_tasks: number;
48
+ }
49
+ export declare class BeadsTaskStore {
50
+ private db;
51
+ private projectRoot;
52
+ private tasksFile;
53
+ private cacheFile;
54
+ constructor(projectRoot: string, db: Database.Database);
55
+ private initializeCache;
56
+ /**
57
+ * Load existing tasks from JSONL into SQLite cache
58
+ */
59
+ private loadFromJSONL;
60
+ /**
61
+ * Create a new task with content-hash ID
62
+ */
63
+ createTask(options: {
64
+ title: string;
65
+ description?: string;
66
+ priority?: TaskPriority;
67
+ frameId: string;
68
+ parentId?: string;
69
+ dependsOn?: string[];
70
+ tags?: string[];
71
+ estimatedEffort?: number;
72
+ assignee?: string;
73
+ }): string;
74
+ /**
75
+ * Update task status with new event
76
+ */
77
+ updateTaskStatus(taskId: string, newStatus: TaskStatus, reason?: string): void;
78
+ /**
79
+ * Add dependency relationship
80
+ */
81
+ addDependency(taskId: string, dependsOnId: string): void;
82
+ /**
83
+ * Get current active tasks
84
+ */
85
+ getActiveTasks(frameId?: string): BeadsTask[];
86
+ /**
87
+ * Get task by ID (latest version)
88
+ */
89
+ getTask(taskId: string): BeadsTask | undefined;
90
+ /**
91
+ * Get tasks that are blocking other tasks
92
+ */
93
+ getBlockingTasks(): BeadsTask[];
94
+ /**
95
+ * Get metrics for current project
96
+ */
97
+ getMetrics(): TaskMetrics;
98
+ /**
99
+ * Export tasks for Linear integration (Phase 2)
100
+ */
101
+ exportForLinear(): Array<{
102
+ title: string;
103
+ description?: string;
104
+ priority: number;
105
+ status: string;
106
+ estimate?: number;
107
+ dependencies: string[];
108
+ }>;
109
+ private appendTask;
110
+ private upsertToCache;
111
+ private generateTaskId;
112
+ private hydrateTask;
113
+ private hydrateTasks;
114
+ private mapPriorityToLinear;
115
+ private mapStatusToLinear;
116
+ }
117
+ //# sourceMappingURL=beads-task-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads-task-store.d.ts","sourceRoot":"","sources":["../../../src/beads/beads-task-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Beads-Inspired Task Storage
3
+ * Git-native JSONL storage with SQLite cache for tasks
4
+ */
5
+ import { createHash } from 'crypto';
6
+ import { appendFile, existsSync, mkdirSync, readFileSync } from 'fs';
7
+ import { join } from 'path';
8
+ import { logger } from '../core/logger.js';
9
+ export class BeadsTaskStore {
10
+ db;
11
+ projectRoot;
12
+ tasksFile;
13
+ cacheFile;
14
+ constructor(projectRoot, db) {
15
+ this.projectRoot = projectRoot;
16
+ this.db = db;
17
+ // Ensure .stackmemory directory exists
18
+ const stackmemoryDir = join(projectRoot, '.stackmemory');
19
+ if (!existsSync(stackmemoryDir)) {
20
+ mkdirSync(stackmemoryDir, { recursive: true });
21
+ }
22
+ this.tasksFile = join(stackmemoryDir, 'tasks.jsonl');
23
+ this.cacheFile = join(stackmemoryDir, 'cache.db');
24
+ this.initializeCache();
25
+ this.loadFromJSONL();
26
+ }
27
+ initializeCache() {
28
+ this.db.exec(`
29
+ CREATE TABLE IF NOT EXISTS task_cache (
30
+ id TEXT PRIMARY KEY,
31
+ type TEXT NOT NULL,
32
+ timestamp INTEGER NOT NULL,
33
+ parent_id TEXT,
34
+ frame_id TEXT NOT NULL,
35
+ title TEXT NOT NULL,
36
+ description TEXT,
37
+ status TEXT NOT NULL,
38
+ priority TEXT NOT NULL,
39
+ assignee TEXT,
40
+ created_at INTEGER NOT NULL,
41
+ started_at INTEGER,
42
+ completed_at INTEGER,
43
+ estimated_effort INTEGER,
44
+ actual_effort INTEGER,
45
+ depends_on TEXT DEFAULT '[]',
46
+ blocks TEXT DEFAULT '[]',
47
+ tags TEXT DEFAULT '[]',
48
+ external_refs TEXT DEFAULT '{}',
49
+ context_score REAL DEFAULT 0.5,
50
+ last_accessed INTEGER
51
+ );
52
+
53
+ CREATE INDEX IF NOT EXISTS idx_task_status ON task_cache(status);
54
+ CREATE INDEX IF NOT EXISTS idx_task_priority ON task_cache(priority);
55
+ CREATE INDEX IF NOT EXISTS idx_task_frame ON task_cache(frame_id);
56
+ CREATE INDEX IF NOT EXISTS idx_task_timestamp ON task_cache(timestamp);
57
+ CREATE INDEX IF NOT EXISTS idx_task_parent ON task_cache(parent_id);
58
+ `);
59
+ }
60
+ /**
61
+ * Load existing tasks from JSONL into SQLite cache
62
+ */
63
+ loadFromJSONL() {
64
+ if (!existsSync(this.tasksFile))
65
+ return;
66
+ const content = readFileSync(this.tasksFile, 'utf-8');
67
+ const lines = content.split('\n').filter(line => line.trim());
68
+ let loaded = 0;
69
+ for (const line of lines) {
70
+ try {
71
+ const task = JSON.parse(line);
72
+ this.upsertToCache(task);
73
+ loaded++;
74
+ }
75
+ catch (error) {
76
+ logger.warn('Failed to parse task line', { line, error });
77
+ }
78
+ }
79
+ logger.info('Loaded tasks from JSONL', { loaded, file: this.tasksFile });
80
+ }
81
+ /**
82
+ * Create a new task with content-hash ID
83
+ */
84
+ createTask(options) {
85
+ const now = Math.floor(Date.now() / 1000);
86
+ // Create content for hash (ensures deterministic ID)
87
+ const content = `${options.title}:${options.frameId}:${now}:${Math.random()}`;
88
+ const id = this.generateTaskId(content);
89
+ const task = {
90
+ id,
91
+ type: 'task_create',
92
+ timestamp: now,
93
+ parent_id: options.parentId,
94
+ frame_id: options.frameId,
95
+ title: options.title,
96
+ description: options.description,
97
+ status: 'pending',
98
+ priority: options.priority || 'medium',
99
+ assignee: options.assignee,
100
+ created_at: now,
101
+ estimated_effort: options.estimatedEffort,
102
+ depends_on: options.dependsOn || [],
103
+ blocks: [],
104
+ tags: options.tags || [],
105
+ context_score: 0.5
106
+ };
107
+ this.appendTask(task);
108
+ return id;
109
+ }
110
+ /**
111
+ * Update task status with new event
112
+ */
113
+ updateTaskStatus(taskId, newStatus, reason) {
114
+ const existing = this.getTask(taskId);
115
+ if (!existing)
116
+ throw new Error(`Task not found: ${taskId}`);
117
+ const now = Math.floor(Date.now() / 1000);
118
+ const updates = {
119
+ status: newStatus,
120
+ timestamp: now
121
+ };
122
+ // Automatic time tracking
123
+ if (newStatus === 'in_progress' && existing.status === 'pending') {
124
+ updates.started_at = now;
125
+ updates.type = 'task_update';
126
+ }
127
+ else if (newStatus === 'completed' && existing.status === 'in_progress') {
128
+ updates.completed_at = now;
129
+ updates.type = 'task_complete';
130
+ if (existing.started_at) {
131
+ updates.actual_effort = Math.floor((now - existing.started_at) / 60); // Minutes
132
+ }
133
+ }
134
+ else if (newStatus === 'blocked') {
135
+ updates.type = 'task_block';
136
+ }
137
+ const updatedTask = { ...existing, ...updates };
138
+ this.appendTask(updatedTask);
139
+ }
140
+ /**
141
+ * Add dependency relationship
142
+ */
143
+ addDependency(taskId, dependsOnId) {
144
+ const task = this.getTask(taskId);
145
+ const dependsOnTask = this.getTask(dependsOnId);
146
+ if (!task)
147
+ throw new Error(`Task not found: ${taskId}`);
148
+ if (!dependsOnTask)
149
+ throw new Error(`Dependency task not found: ${dependsOnId}`);
150
+ // Update task dependencies
151
+ const updatedTask = {
152
+ ...task,
153
+ depends_on: [...new Set([...task.depends_on, dependsOnId])],
154
+ timestamp: Math.floor(Date.now() / 1000),
155
+ type: 'task_update'
156
+ };
157
+ // Update blocking task
158
+ const updatedBlockingTask = {
159
+ ...dependsOnTask,
160
+ blocks: [...new Set([...dependsOnTask.blocks, taskId])],
161
+ timestamp: Math.floor(Date.now() / 1000),
162
+ type: 'task_update'
163
+ };
164
+ this.appendTask(updatedTask);
165
+ this.appendTask(updatedBlockingTask);
166
+ }
167
+ /**
168
+ * Get current active tasks
169
+ */
170
+ getActiveTasks(frameId) {
171
+ let query = `
172
+ SELECT * FROM task_cache
173
+ WHERE status IN ('pending', 'in_progress')
174
+ `;
175
+ const params = [];
176
+ if (frameId) {
177
+ query += ` AND frame_id = ?`;
178
+ params.push(frameId);
179
+ }
180
+ query += ` ORDER BY priority DESC, created_at ASC`;
181
+ const rows = this.db.prepare(query).all(...params);
182
+ return this.hydrateTasks(rows);
183
+ }
184
+ /**
185
+ * Get task by ID (latest version)
186
+ */
187
+ getTask(taskId) {
188
+ const row = this.db.prepare(`
189
+ SELECT * FROM task_cache WHERE id = ?
190
+ `).get(taskId);
191
+ return row ? this.hydrateTask(row) : undefined;
192
+ }
193
+ /**
194
+ * Get tasks that are blocking other tasks
195
+ */
196
+ getBlockingTasks() {
197
+ const rows = this.db.prepare(`
198
+ SELECT * FROM task_cache
199
+ WHERE JSON_ARRAY_LENGTH(blocks) > 0
200
+ AND status NOT IN ('completed', 'cancelled')
201
+ ORDER BY priority DESC
202
+ `).all();
203
+ return this.hydrateTasks(rows);
204
+ }
205
+ /**
206
+ * Get metrics for current project
207
+ */
208
+ getMetrics() {
209
+ const statusCounts = this.db.prepare(`
210
+ SELECT status, COUNT(*) as count
211
+ FROM task_cache
212
+ GROUP BY status
213
+ `).all();
214
+ const priorityCounts = this.db.prepare(`
215
+ SELECT priority, COUNT(*) as count
216
+ FROM task_cache
217
+ GROUP BY priority
218
+ `).all();
219
+ const totalTasks = statusCounts.reduce((sum, s) => sum + s.count, 0);
220
+ const completedTasks = statusCounts.find(s => s.status === 'completed')?.count || 0;
221
+ const blockedTasks = statusCounts.find(s => s.status === 'blocked')?.count || 0;
222
+ // Calculate effort accuracy
223
+ const effortRows = this.db.prepare(`
224
+ SELECT estimated_effort, actual_effort
225
+ FROM task_cache
226
+ WHERE estimated_effort IS NOT NULL
227
+ AND actual_effort IS NOT NULL
228
+ `).all();
229
+ let avgEffortAccuracy = 0;
230
+ if (effortRows.length > 0) {
231
+ const accuracies = effortRows.map(r => 1 - Math.abs(r.estimated_effort - r.actual_effort) / Math.max(r.estimated_effort, 1));
232
+ avgEffortAccuracy = accuracies.reduce((sum, acc) => sum + acc, 0) / accuracies.length;
233
+ }
234
+ return {
235
+ total_tasks: totalTasks,
236
+ by_status: Object.fromEntries(statusCounts.map(s => [s.status, s.count])),
237
+ by_priority: Object.fromEntries(priorityCounts.map(p => [p.priority, p.count])),
238
+ completion_rate: totalTasks > 0 ? completedTasks / totalTasks : 0,
239
+ avg_effort_accuracy: avgEffortAccuracy,
240
+ blocked_tasks: blockedTasks,
241
+ overdue_tasks: 0 // TODO: implement due dates
242
+ };
243
+ }
244
+ /**
245
+ * Export tasks for Linear integration (Phase 2)
246
+ */
247
+ exportForLinear() {
248
+ const tasks = this.db.prepare(`
249
+ SELECT * FROM task_cache
250
+ WHERE external_refs IS NULL OR JSON_EXTRACT(external_refs, '$.linear') IS NULL
251
+ ORDER BY created_at ASC
252
+ `).all();
253
+ return tasks.map(task => ({
254
+ title: task.title,
255
+ description: task.description,
256
+ priority: this.mapPriorityToLinear(task.priority),
257
+ status: this.mapStatusToLinear(task.status),
258
+ estimate: task.estimated_effort,
259
+ dependencies: JSON.parse(task.depends_on || '[]')
260
+ }));
261
+ }
262
+ // Private methods
263
+ appendTask(task) {
264
+ // Append to JSONL file (git-tracked source of truth)
265
+ const jsonLine = JSON.stringify(task) + '\n';
266
+ appendFile(this.tasksFile, jsonLine, (err) => {
267
+ if (err)
268
+ logger.error(`Failed to append task ${task.id} to JSONL: ${err.message}`);
269
+ });
270
+ // Update SQLite cache (for fast queries)
271
+ this.upsertToCache(task);
272
+ logger.info('Appended task', {
273
+ id: task.id,
274
+ type: task.type,
275
+ title: task.title,
276
+ status: task.status
277
+ });
278
+ }
279
+ upsertToCache(task) {
280
+ this.db.prepare(`
281
+ INSERT OR REPLACE INTO task_cache (
282
+ id, type, timestamp, parent_id, frame_id, title, description,
283
+ status, priority, assignee, created_at, started_at, completed_at,
284
+ estimated_effort, actual_effort, depends_on, blocks, tags,
285
+ external_refs, context_score, last_accessed
286
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
287
+ `).run(task.id, task.type, task.timestamp, task.parent_id, task.frame_id, task.title, task.description, task.status, task.priority, task.assignee, task.created_at, task.started_at, task.completed_at, task.estimated_effort, task.actual_effort, JSON.stringify(task.depends_on), JSON.stringify(task.blocks), JSON.stringify(task.tags), JSON.stringify(task.external_refs || {}), task.context_score, task.last_accessed);
288
+ }
289
+ generateTaskId(content) {
290
+ const hash = createHash('sha256').update(content).digest('hex');
291
+ return `tsk-${hash.substring(0, 8)}`;
292
+ }
293
+ hydrateTask = (row) => ({
294
+ ...row,
295
+ depends_on: JSON.parse(row.depends_on || '[]'),
296
+ blocks: JSON.parse(row.blocks || '[]'),
297
+ tags: JSON.parse(row.tags || '[]'),
298
+ external_refs: JSON.parse(row.external_refs || '{}')
299
+ });
300
+ hydrateTasks(rows) {
301
+ return rows.map(this.hydrateTask);
302
+ }
303
+ mapPriorityToLinear(priority) {
304
+ const map = { low: 1, medium: 2, high: 3, urgent: 4 };
305
+ return map[priority] || 2;
306
+ }
307
+ mapStatusToLinear(status) {
308
+ const map = {
309
+ pending: 'Backlog',
310
+ in_progress: 'In Progress',
311
+ completed: 'Done',
312
+ blocked: 'Blocked',
313
+ cancelled: 'Cancelled'
314
+ };
315
+ return map[status] || 'Backlog';
316
+ }
317
+ }
318
+ //# sourceMappingURL=beads-task-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads-task-store.js","sourceRoot":"","sources":["../../../src/beads/beads-task-store.ts"],"names":[],"mappings":"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"}