superskill 0.2.0 → 0.2.4

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 (143) hide show
  1. package/.claude-plugin/marketplace.json +23 -0
  2. package/.claude-plugin/plugin.json +12 -0
  3. package/.mcp.json +9 -0
  4. package/CHANGELOG.md +24 -5
  5. package/LICENSE-COMMERCIAL.md +46 -0
  6. package/README.md +114 -151
  7. package/dist/setup/configure.js +21 -1
  8. package/dist/setup/configure.js.map +1 -1
  9. package/dist/setup/teardown.js +13 -5
  10. package/dist/setup/teardown.js.map +1 -1
  11. package/package.json +8 -2
  12. package/dist/commands/brainstorm.test.d.ts +0 -1
  13. package/dist/commands/brainstorm.test.js +0 -110
  14. package/dist/commands/brainstorm.test.js.map +0 -1
  15. package/dist/commands/context.test.d.ts +0 -1
  16. package/dist/commands/context.test.js +0 -230
  17. package/dist/commands/context.test.js.map +0 -1
  18. package/dist/commands/decide.test.d.ts +0 -1
  19. package/dist/commands/decide.test.js +0 -109
  20. package/dist/commands/decide.test.js.map +0 -1
  21. package/dist/commands/graph.test.d.ts +0 -1
  22. package/dist/commands/graph.test.js +0 -215
  23. package/dist/commands/graph.test.js.map +0 -1
  24. package/dist/commands/learn.test.d.ts +0 -1
  25. package/dist/commands/learn.test.js +0 -241
  26. package/dist/commands/learn.test.js.map +0 -1
  27. package/dist/commands/read.test.d.ts +0 -1
  28. package/dist/commands/read.test.js +0 -48
  29. package/dist/commands/read.test.js.map +0 -1
  30. package/dist/commands/resume.test.d.ts +0 -1
  31. package/dist/commands/resume.test.js +0 -243
  32. package/dist/commands/resume.test.js.map +0 -1
  33. package/dist/commands/search.test.d.ts +0 -1
  34. package/dist/commands/search.test.js +0 -61
  35. package/dist/commands/search.test.js.map +0 -1
  36. package/dist/commands/session.test.d.ts +0 -1
  37. package/dist/commands/session.test.js +0 -231
  38. package/dist/commands/session.test.js.map +0 -1
  39. package/dist/commands/skill/index.test.d.ts +0 -1
  40. package/dist/commands/skill/index.test.js +0 -137
  41. package/dist/commands/skill/index.test.js.map +0 -1
  42. package/dist/commands/skill/install.test.d.ts +0 -1
  43. package/dist/commands/skill/install.test.js +0 -225
  44. package/dist/commands/skill/install.test.js.map +0 -1
  45. package/dist/commands/skill/list.test.d.ts +0 -1
  46. package/dist/commands/skill/list.test.js +0 -101
  47. package/dist/commands/skill/list.test.js.map +0 -1
  48. package/dist/commands/skill/schema.test.d.ts +0 -1
  49. package/dist/commands/skill/schema.test.js +0 -142
  50. package/dist/commands/skill/schema.test.js.map +0 -1
  51. package/dist/commands/skill/validate.test.d.ts +0 -1
  52. package/dist/commands/skill/validate.test.js +0 -171
  53. package/dist/commands/skill/validate.test.js.map +0 -1
  54. package/dist/commands/task.test.d.ts +0 -1
  55. package/dist/commands/task.test.js +0 -395
  56. package/dist/commands/task.test.js.map +0 -1
  57. package/dist/commands/todo.test.d.ts +0 -1
  58. package/dist/commands/todo.test.js +0 -324
  59. package/dist/commands/todo.test.js.map +0 -1
  60. package/dist/commands/write.test.d.ts +0 -1
  61. package/dist/commands/write.test.js +0 -79
  62. package/dist/commands/write.test.js.map +0 -1
  63. package/dist/config.test.d.ts +0 -1
  64. package/dist/config.test.js +0 -147
  65. package/dist/config.test.js.map +0 -1
  66. package/dist/core/executor.test.d.ts +0 -1
  67. package/dist/core/executor.test.js +0 -206
  68. package/dist/core/executor.test.js.map +0 -1
  69. package/dist/core/registry.test.d.ts +0 -1
  70. package/dist/core/registry.test.js +0 -213
  71. package/dist/core/registry.test.js.map +0 -1
  72. package/dist/integration/coordination.test.d.ts +0 -1
  73. package/dist/integration/coordination.test.js +0 -286
  74. package/dist/integration/coordination.test.js.map +0 -1
  75. package/dist/integration/project-artifacts.test.d.ts +0 -1
  76. package/dist/integration/project-artifacts.test.js +0 -275
  77. package/dist/integration/project-artifacts.test.js.map +0 -1
  78. package/dist/integration/registry-graph.test.d.ts +0 -1
  79. package/dist/integration/registry-graph.test.js +0 -157
  80. package/dist/integration/registry-graph.test.js.map +0 -1
  81. package/dist/integration/vault-lifecycle.test.d.ts +0 -1
  82. package/dist/integration/vault-lifecycle.test.js +0 -183
  83. package/dist/integration/vault-lifecycle.test.js.map +0 -1
  84. package/dist/lib/auto-number.test.d.ts +0 -1
  85. package/dist/lib/auto-number.test.js +0 -88
  86. package/dist/lib/auto-number.test.js.map +0 -1
  87. package/dist/lib/auto-profile.test.d.ts +0 -1
  88. package/dist/lib/auto-profile.test.js +0 -227
  89. package/dist/lib/auto-profile.test.js.map +0 -1
  90. package/dist/lib/escape-regex.test.d.ts +0 -1
  91. package/dist/lib/escape-regex.test.js +0 -27
  92. package/dist/lib/escape-regex.test.js.map +0 -1
  93. package/dist/lib/frontmatter.test.d.ts +0 -1
  94. package/dist/lib/frontmatter.test.js +0 -192
  95. package/dist/lib/frontmatter.test.js.map +0 -1
  96. package/dist/lib/project-detector.test.d.ts +0 -1
  97. package/dist/lib/project-detector.test.js +0 -117
  98. package/dist/lib/project-detector.test.js.map +0 -1
  99. package/dist/lib/safe-external-path.test.d.ts +0 -1
  100. package/dist/lib/safe-external-path.test.js +0 -99
  101. package/dist/lib/safe-external-path.test.js.map +0 -1
  102. package/dist/lib/search-engine.test.d.ts +0 -1
  103. package/dist/lib/search-engine.test.js +0 -120
  104. package/dist/lib/search-engine.test.js.map +0 -1
  105. package/dist/lib/session-registry.test.d.ts +0 -1
  106. package/dist/lib/session-registry.test.js +0 -199
  107. package/dist/lib/session-registry.test.js.map +0 -1
  108. package/dist/lib/stack-detector.test.d.ts +0 -1
  109. package/dist/lib/stack-detector.test.js +0 -110
  110. package/dist/lib/stack-detector.test.js.map +0 -1
  111. package/dist/lib/token-estimator.test.d.ts +0 -1
  112. package/dist/lib/token-estimator.test.js +0 -65
  113. package/dist/lib/token-estimator.test.js.map +0 -1
  114. package/dist/lib/tool-detector.test.d.ts +0 -1
  115. package/dist/lib/tool-detector.test.js +0 -170
  116. package/dist/lib/tool-detector.test.js.map +0 -1
  117. package/dist/lib/vault-fs.test.d.ts +0 -1
  118. package/dist/lib/vault-fs.test.js +0 -210
  119. package/dist/lib/vault-fs.test.js.map +0 -1
  120. package/dist/setup/configure.test.d.ts +0 -1
  121. package/dist/setup/configure.test.js +0 -112
  122. package/dist/setup/configure.test.js.map +0 -1
  123. package/dist/setup/detect.test.d.ts +0 -1
  124. package/dist/setup/detect.test.js +0 -44
  125. package/dist/setup/detect.test.js.map +0 -1
  126. package/dist/setup/instructions.test.d.ts +0 -1
  127. package/dist/setup/instructions.test.js +0 -84
  128. package/dist/setup/instructions.test.js.map +0 -1
  129. package/dist/setup/json-config.test.d.ts +0 -1
  130. package/dist/setup/json-config.test.js +0 -92
  131. package/dist/setup/json-config.test.js.map +0 -1
  132. package/dist/setup/setup-integration.test.d.ts +0 -1
  133. package/dist/setup/setup-integration.test.js +0 -72
  134. package/dist/setup/setup-integration.test.js.map +0 -1
  135. package/dist/setup/teardown.test.d.ts +0 -1
  136. package/dist/setup/teardown.test.js +0 -105
  137. package/dist/setup/teardown.test.js.map +0 -1
  138. package/dist/setup/toml-config.test.d.ts +0 -1
  139. package/dist/setup/toml-config.test.js +0 -49
  140. package/dist/setup/toml-config.test.js.map +0 -1
  141. package/dist/test-helpers.test.d.ts +0 -1
  142. package/dist/test-helpers.test.js +0 -90
  143. package/dist/test-helpers.test.js.map +0 -1
@@ -1,243 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
- import { mkdir, rm } from "fs/promises";
3
- import { homedir } from "os";
4
- import { join } from "path";
5
- import { resumeCommand, formatResumeContext } from "./resume.js";
6
- import { SessionRegistryManager } from "../lib/session-registry.js";
7
- import { VaultFS } from "../lib/vault-fs.js";
8
- function createCommandContext(vaultFs, overrides) {
9
- return {
10
- vaultFs,
11
- vaultPath: vaultFs.root,
12
- sessionRegistry: {},
13
- config: {},
14
- log: { debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn() },
15
- ...overrides,
16
- };
17
- }
18
- describe("resumeCommand", () => {
19
- let vaultRoot;
20
- let vaultFs;
21
- let registry;
22
- let ctx;
23
- beforeEach(async () => {
24
- vaultRoot = join(homedir(), `.vault-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
25
- await mkdir(vaultRoot, { recursive: true });
26
- await mkdir(join(vaultRoot, "coordination/locks"), { recursive: true });
27
- vaultFs = new VaultFS(vaultRoot);
28
- registry = new SessionRegistryManager(vaultRoot, 24);
29
- ctx = createCommandContext(vaultFs, { sessionRegistry: registry });
30
- });
31
- afterEach(async () => {
32
- await rm(vaultRoot, { recursive: true, force: true });
33
- });
34
- describe("resume context", () => {
35
- it("returns project slug", async () => {
36
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
37
- const result = await resumeCommand({
38
- project: "test-project",
39
- }, ctx);
40
- expect(result.project).toBe("test-project");
41
- });
42
- it("returns empty arrays when no sessions or tasks", async () => {
43
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
44
- const result = await resumeCommand({
45
- project: "test-project",
46
- }, ctx);
47
- expect(result.last_sessions).toEqual([]);
48
- expect(result.active_sessions).toEqual([]);
49
- expect(result.interrupted_sessions).toEqual([]);
50
- });
51
- it("returns recent completed sessions", async () => {
52
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
53
- await mkdir(join(vaultRoot, "projects/test-project/sessions"), { recursive: true });
54
- await vaultFs.write(`projects/test-project/sessions/2024-01-15-session.md`, `---
55
- type: session
56
- tool: claude
57
- outcome: Feature implemented
58
- completed_at: "2024-01-15T10:00:00Z"
59
- files_touched:
60
- - src/index.ts
61
- tasks_completed:
62
- - task-001
63
- ---
64
-
65
- # Session
66
- `);
67
- const result = await resumeCommand({
68
- project: "test-project",
69
- }, ctx);
70
- expect(result.last_sessions).toHaveLength(1);
71
- expect(result.last_sessions[0].tool).toBe("claude");
72
- expect(result.last_sessions[0].outcome).toBe("Feature implemented");
73
- expect(result.last_sessions[0].files_touched).toContain("src/index.ts");
74
- });
75
- it("limits sessions to specified limit", async () => {
76
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
77
- await mkdir(join(vaultRoot, "projects/test-project/sessions"), { recursive: true });
78
- for (let i = 1; i <= 10; i++) {
79
- await vaultFs.write(`projects/test-project/sessions/2024-01-${String(i).padStart(2, "0")}-session.md`, `---
80
- type: session
81
- tool: tool-${i}
82
- outcome: Outcome ${i}
83
- created: "2024-01-${String(i).padStart(2, "0")}"
84
- ---
85
-
86
- # Session
87
- `);
88
- }
89
- const result = await resumeCommand({
90
- project: "test-project",
91
- limit: 3,
92
- }, ctx);
93
- expect(result.last_sessions.length).toBeLessThanOrEqual(3);
94
- });
95
- it("returns active sessions for the project", async () => {
96
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
97
- await registry.register("claude", "test-project", "Active task", []);
98
- const result = await resumeCommand({
99
- project: "test-project",
100
- }, ctx);
101
- expect(result.active_sessions.length).toBeGreaterThanOrEqual(1);
102
- expect(result.active_sessions.some(s => s.project === "test-project")).toBe(true);
103
- });
104
- it("includes interrupted sessions", async () => {
105
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
106
- // Register and let it become stale (by not heartbeating)
107
- const { session_id } = await registry.register("claude", "test-project", "Interrupted task", []);
108
- // Manually mark as stale in registry
109
- await vaultFs.write("coordination/session-registry.json", JSON.stringify({
110
- sessions: [
111
- {
112
- session_id,
113
- tool: "claude",
114
- project: "test-project",
115
- status: "stale",
116
- task_summary: "Interrupted task",
117
- files_touched: [],
118
- started_at: new Date().toISOString(),
119
- last_heartbeat: new Date(Date.now() - 3600000).toISOString(),
120
- },
121
- ],
122
- }));
123
- const result = await resumeCommand({
124
- project: "test-project",
125
- }, ctx);
126
- expect(result.interrupted_sessions.length).toBeGreaterThanOrEqual(1);
127
- });
128
- it("suggests next steps from interrupted sessions", async () => {
129
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
130
- // Create stale session
131
- await vaultFs.write("coordination/session-registry.json", JSON.stringify({
132
- sessions: [
133
- {
134
- session_id: "test-stale-123",
135
- tool: "claude",
136
- project: "test-project",
137
- status: "stale",
138
- task_summary: "Interrupted task",
139
- files_touched: [],
140
- started_at: new Date().toISOString(),
141
- last_heartbeat: new Date(Date.now() - 3600000).toISOString(),
142
- },
143
- ],
144
- }));
145
- const result = await resumeCommand({
146
- project: "test-project",
147
- }, ctx);
148
- expect(result.suggested_next_steps.length).toBeGreaterThan(0);
149
- expect(result.suggested_next_steps.some(s => s.includes("Interrupted"))).toBe(true);
150
- });
151
- it("suggests next steps from in-progress tasks", async () => {
152
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
153
- await mkdir(join(vaultRoot, "projects/test-project/tasks"), { recursive: true });
154
- await vaultFs.write("projects/test-project/tasks/task-001-in-progress.md", `---
155
- type: task
156
- status: in-progress
157
- ---
158
-
159
- # In Progress Task
160
- `);
161
- const result = await resumeCommand({
162
- project: "test-project",
163
- }, ctx);
164
- expect(result.suggested_next_steps.some(s => s.includes("In-progress task"))).toBe(true);
165
- });
166
- it("handles missing sessions directory gracefully", async () => {
167
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
168
- const result = await resumeCommand({
169
- project: "test-project",
170
- }, ctx);
171
- expect(result.last_sessions).toEqual([]);
172
- });
173
- });
174
- describe("formatResumeContext", () => {
175
- it("formats context as markdown", () => {
176
- const ctx = {
177
- project: "test-project",
178
- last_sessions: [
179
- { tool: "claude", outcome: "Done", completed_at: "2024-01-15", files_touched: [], tasks_completed: [] },
180
- ],
181
- active_sessions: [],
182
- interrupted_sessions: [],
183
- suggested_next_steps: ["Review PR", "Fix tests"],
184
- };
185
- const result = formatResumeContext(ctx);
186
- expect(result).toContain("## Session Resume: test-project");
187
- expect(result).toContain("### Recent Sessions");
188
- expect(result).toContain("claude");
189
- expect(result).toContain("### Suggested Next Steps");
190
- expect(result).toContain("Review PR");
191
- });
192
- it("includes interrupted sessions section", () => {
193
- const ctx = {
194
- project: "test-project",
195
- last_sessions: [],
196
- active_sessions: [],
197
- interrupted_sessions: [
198
- {
199
- id: "stale-1",
200
- tool: "cursor",
201
- project: "test-project",
202
- status: "stale",
203
- task_summary: "Interrupted work",
204
- files_touched: ["src/file.ts"],
205
- started_at: "2024-01-15T10:00:00Z",
206
- last_heartbeat: "2024-01-15T11:00:00Z",
207
- completed_at: null,
208
- },
209
- ],
210
- suggested_next_steps: [],
211
- };
212
- const result = formatResumeContext(ctx);
213
- expect(result).toContain("### Interrupted Sessions (stale)");
214
- expect(result).toContain("cursor");
215
- expect(result).toContain("Interrupted work");
216
- });
217
- it("includes active sessions section", () => {
218
- const ctx = {
219
- project: "test-project",
220
- last_sessions: [],
221
- active_sessions: [
222
- {
223
- id: "active-1",
224
- tool: "copilot",
225
- project: "test-project",
226
- status: "active",
227
- task_summary: "Active work",
228
- files_touched: [],
229
- started_at: "2024-01-15T10:00:00Z",
230
- last_heartbeat: "2024-01-15T11:00:00Z",
231
- completed_at: null,
232
- },
233
- ],
234
- interrupted_sessions: [],
235
- suggested_next_steps: [],
236
- };
237
- const result = formatResumeContext(ctx);
238
- expect(result).toContain("### Active Sessions (other agents)");
239
- expect(result).toContain("copilot");
240
- });
241
- });
242
- });
243
- //# sourceMappingURL=resume.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resume.test.js","sourceRoot":"","sources":["../../src/commands/resume.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,61 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
- import { mkdir, writeFile, rm } from "fs/promises";
3
- import { homedir } from "os";
4
- import { join } from "path";
5
- import { searchCommand } from "./search.js";
6
- import { VaultFS } from "../lib/vault-fs.js";
7
- function createCommandContext(vaultFs, overrides) {
8
- return {
9
- vaultFs,
10
- vaultPath: vaultFs.root,
11
- sessionRegistry: {},
12
- config: {},
13
- log: { debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn() },
14
- ...overrides,
15
- };
16
- }
17
- describe("searchCommand", () => {
18
- let vaultRoot;
19
- let vaultFs;
20
- let ctx;
21
- beforeEach(async () => {
22
- vaultRoot = join(homedir(), `.vault-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
23
- await mkdir(vaultRoot, { recursive: true });
24
- vaultFs = new VaultFS(vaultRoot);
25
- ctx = createCommandContext(vaultFs);
26
- await mkdir(join(vaultRoot, "projects/test"), { recursive: true });
27
- });
28
- afterEach(async () => {
29
- await rm(vaultRoot, { recursive: true, force: true });
30
- });
31
- describe("text search", () => {
32
- it("performs text search", async () => {
33
- await writeFile(join(vaultRoot, "projects/test/note.md"), "# Test Note\n\nSearchable content here");
34
- const results = await searchCommand({ query: "Searchable", limit: 10 }, ctx);
35
- expect(results.length).toBeGreaterThan(0);
36
- expect(results[0].path).toContain("note.md");
37
- });
38
- it("filters by project path", async () => {
39
- await mkdir(join(vaultRoot, "projects/other"), { recursive: true });
40
- await writeFile(join(vaultRoot, "projects/test/note.md"), "Searchable content");
41
- await writeFile(join(vaultRoot, "projects/other/note.md"), "Searchable content");
42
- const results = await searchCommand({ query: "Searchable", project: "test", limit: 10 }, ctx);
43
- expect(results.every((r) => r.path.includes("test"))).toBe(true);
44
- });
45
- });
46
- describe("structured search", () => {
47
- it("performs structured search", async () => {
48
- await writeFile(join(vaultRoot, "projects/test/doc.md"), "---\ntype: adr\nstatus: active\n---\n\nContent");
49
- const results = await searchCommand({ query: "type:adr status:active", structured: true, limit: 10 }, ctx);
50
- expect(results.length).toBeGreaterThan(0);
51
- });
52
- it("includes project filter in structured search", async () => {
53
- await mkdir(join(vaultRoot, "projects/other"), { recursive: true });
54
- await writeFile(join(vaultRoot, "projects/test/doc.md"), "---\ntype: adr\nstatus: active\n---\n\nContent");
55
- await writeFile(join(vaultRoot, "projects/other/doc.md"), "---\ntype: adr\nstatus: active\n---\n\nContent");
56
- const results = await searchCommand({ query: "type:adr", structured: true, project: "test", limit: 10 }, ctx);
57
- expect(results.every((r) => r.path.includes("test"))).toBe(true);
58
- });
59
- });
60
- });
61
- //# sourceMappingURL=search.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.test.js","sourceRoot":"","sources":["../../src/commands/search.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,231 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
- import { mkdir, rm } from "fs/promises";
3
- import { homedir } from "os";
4
- import { join } from "path";
5
- import { sessionCommand } from "./session.js";
6
- import { SessionRegistryManager } from "../lib/session-registry.js";
7
- import { VaultFS } from "../lib/vault-fs.js";
8
- function createCommandContext(vaultFs, overrides) {
9
- return {
10
- vaultFs,
11
- vaultPath: vaultFs.root,
12
- sessionRegistry: {},
13
- config: {},
14
- log: { debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn() },
15
- ...overrides,
16
- };
17
- }
18
- describe("sessionCommand", () => {
19
- let vaultRoot;
20
- let vaultFs;
21
- let registry;
22
- let ctx;
23
- beforeEach(async () => {
24
- vaultRoot = join(homedir(), `.vault-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
25
- await mkdir(vaultRoot, { recursive: true });
26
- await mkdir(join(vaultRoot, "coordination/locks"), { recursive: true });
27
- vaultFs = new VaultFS(vaultRoot);
28
- registry = new SessionRegistryManager(vaultRoot, 24);
29
- ctx = createCommandContext(vaultFs, { sessionRegistry: registry });
30
- });
31
- afterEach(async () => {
32
- await rm(vaultRoot, { recursive: true, force: true });
33
- });
34
- describe("register", () => {
35
- it("registers a new session", async () => {
36
- const result = await sessionCommand({
37
- action: "register",
38
- tool: "claude",
39
- project: "test-project",
40
- taskSummary: "Implement feature X",
41
- filesTouched: ["src/index.ts"],
42
- }, ctx);
43
- expect(result.session_id).toBeDefined();
44
- expect(result.session_id).toMatch(/^claude-/);
45
- expect(result.conflicts).toEqual([]);
46
- });
47
- it("detects conflicts when touching same files", async () => {
48
- await sessionCommand({
49
- action: "register",
50
- tool: "cursor",
51
- project: "test-project",
52
- taskSummary: "Working on Y",
53
- filesTouched: ["src/shared.ts"],
54
- }, ctx);
55
- const result = await sessionCommand({
56
- action: "register",
57
- tool: "claude",
58
- project: "test-project",
59
- taskSummary: "Working on X",
60
- filesTouched: ["src/shared.ts", "src/other.ts"],
61
- }, ctx);
62
- expect(result.conflicts).toBeDefined();
63
- expect(result.conflicts.length).toBeGreaterThan(0);
64
- expect(result.conflicts[0].overlapping_files).toContain("src/shared.ts");
65
- });
66
- it("requires tool name for register", async () => {
67
- await expect(sessionCommand({
68
- action: "register",
69
- }, ctx)).rejects.toThrow("Tool name required for register");
70
- });
71
- });
72
- describe("heartbeat", () => {
73
- it("updates session timestamp", async () => {
74
- const { session_id } = await sessionCommand({
75
- action: "register",
76
- tool: "claude",
77
- project: "test-project",
78
- }, ctx);
79
- const result = await sessionCommand({
80
- action: "heartbeat",
81
- sessionId: session_id,
82
- }, ctx);
83
- expect(result).toEqual({});
84
- });
85
- it("requires session ID for heartbeat", async () => {
86
- await expect(sessionCommand({
87
- action: "heartbeat",
88
- }, ctx)).rejects.toThrow("Session ID required for heartbeat");
89
- });
90
- });
91
- describe("complete", () => {
92
- it("marks session as completed", async () => {
93
- const { session_id } = await sessionCommand({
94
- action: "register",
95
- tool: "claude",
96
- project: "test-project",
97
- taskSummary: "Task summary",
98
- }, ctx);
99
- const result = await sessionCommand({
100
- action: "complete",
101
- sessionId: session_id,
102
- taskSummary: "Completed task",
103
- }, ctx);
104
- expect(result).toEqual({});
105
- });
106
- it("persists session note when vault and project provided", async () => {
107
- const { session_id } = await sessionCommand({
108
- action: "register",
109
- tool: "claude",
110
- project: "test-project",
111
- }, ctx);
112
- await mkdir(join(vaultRoot, "projects/test-project/sessions"), { recursive: true });
113
- const result = await sessionCommand({
114
- action: "complete",
115
- sessionId: session_id,
116
- project: "test-project",
117
- tool: "claude",
118
- outcome: "Feature implemented",
119
- filesTouched: ["src/index.ts"],
120
- tasksCompleted: ["task-001"],
121
- }, ctx);
122
- expect(result.session_note_path).toBeDefined();
123
- expect(result.session_note_path).toMatch(/projects\/test-project\/sessions\/\d{4}-\d{2}-\d{2}-claude-/);
124
- const content = await vaultFs.read(result.session_note_path);
125
- expect(content).toContain("type: session");
126
- expect(content).toContain("tool: claude");
127
- expect(content).toContain("Feature implemented");
128
- });
129
- it("requires session ID for complete", async () => {
130
- await expect(sessionCommand({
131
- action: "complete",
132
- }, ctx)).rejects.toThrow("Session ID required for complete");
133
- });
134
- });
135
- describe("list_active", () => {
136
- it("lists active sessions", async () => {
137
- await sessionCommand({
138
- action: "register",
139
- tool: "claude",
140
- project: "test-project",
141
- taskSummary: "Task 1",
142
- }, ctx);
143
- await sessionCommand({
144
- action: "register",
145
- tool: "cursor",
146
- project: "other-project",
147
- taskSummary: "Task 2",
148
- }, ctx);
149
- const result = await sessionCommand({
150
- action: "list_active",
151
- }, ctx);
152
- expect(result.active_sessions).toBeDefined();
153
- expect(result.active_sessions.length).toBeGreaterThanOrEqual(2);
154
- });
155
- it("excludes completed sessions", async () => {
156
- const { session_id } = await sessionCommand({
157
- action: "register",
158
- tool: "claude",
159
- project: "test-project",
160
- }, ctx);
161
- await sessionCommand({
162
- action: "register",
163
- tool: "cursor",
164
- project: "test-project",
165
- }, ctx);
166
- await sessionCommand({
167
- action: "complete",
168
- sessionId: session_id,
169
- }, ctx);
170
- const result = await sessionCommand({
171
- action: "list_active",
172
- }, ctx);
173
- const activeIds = result.active_sessions.map((s) => s.id);
174
- expect(activeIds).not.toContain(session_id);
175
- });
176
- });
177
- describe("persist session note", () => {
178
- it("creates session note when completing with project and vaultFs", async () => {
179
- await mkdir(join(vaultRoot, "projects/test-project/sessions"), { recursive: true });
180
- const { session_id } = await sessionCommand({
181
- action: "register",
182
- tool: "claude-code",
183
- project: "test-project",
184
- taskSummary: "Build feature X",
185
- filesTouched: ["src/index.ts"],
186
- }, ctx);
187
- await sessionCommand({
188
- action: "complete",
189
- sessionId: session_id,
190
- project: "test-project",
191
- outcome: "Completed successfully",
192
- filesTouched: ["src/index.ts"],
193
- tasksCompleted: ["task-001"],
194
- }, ctx);
195
- const files = await vaultFs.list("projects/test-project/sessions");
196
- expect(files.length).toBeGreaterThanOrEqual(1);
197
- const notePath = files.find((f) => f.endsWith(".md"));
198
- expect(notePath).toBeDefined();
199
- const content = await vaultFs.read(notePath);
200
- expect(content).toContain("claude-code");
201
- expect(content).toContain("Completed successfully");
202
- expect(content).toContain("src/index.ts");
203
- });
204
- it("extracts tool name from session ID for note heading", async () => {
205
- await mkdir(join(vaultRoot, "projects/test-project/sessions"), { recursive: true });
206
- const { session_id } = await sessionCommand({
207
- action: "register",
208
- tool: "my-custom-tool",
209
- project: "test-project",
210
- }, ctx);
211
- await sessionCommand({
212
- action: "complete",
213
- sessionId: session_id,
214
- project: "test-project",
215
- outcome: "Done",
216
- }, ctx);
217
- const files = await vaultFs.list("projects/test-project/sessions");
218
- const notePath = files.find((f) => f.endsWith(".md"));
219
- const content = await vaultFs.read(notePath);
220
- expect(content).toContain("my-custom-tool");
221
- });
222
- });
223
- describe("unknown action", () => {
224
- it("throws error for unknown action", async () => {
225
- await expect(sessionCommand({
226
- action: "unknown",
227
- }, ctx)).rejects.toThrow("Unknown action: unknown");
228
- });
229
- });
230
- });
231
- //# sourceMappingURL=session.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.test.js","sourceRoot":"","sources":["../../src/commands/session.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};