superskill 0.2.2 → 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 (141) 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/LICENSE-COMMERCIAL.md +46 -0
  5. package/dist/setup/configure.js +21 -1
  6. package/dist/setup/configure.js.map +1 -1
  7. package/dist/setup/teardown.js +13 -5
  8. package/dist/setup/teardown.js.map +1 -1
  9. package/package.json +7 -1
  10. package/dist/commands/brainstorm.test.d.ts +0 -1
  11. package/dist/commands/brainstorm.test.js +0 -110
  12. package/dist/commands/brainstorm.test.js.map +0 -1
  13. package/dist/commands/context.test.d.ts +0 -1
  14. package/dist/commands/context.test.js +0 -230
  15. package/dist/commands/context.test.js.map +0 -1
  16. package/dist/commands/decide.test.d.ts +0 -1
  17. package/dist/commands/decide.test.js +0 -109
  18. package/dist/commands/decide.test.js.map +0 -1
  19. package/dist/commands/graph.test.d.ts +0 -1
  20. package/dist/commands/graph.test.js +0 -215
  21. package/dist/commands/graph.test.js.map +0 -1
  22. package/dist/commands/learn.test.d.ts +0 -1
  23. package/dist/commands/learn.test.js +0 -241
  24. package/dist/commands/learn.test.js.map +0 -1
  25. package/dist/commands/read.test.d.ts +0 -1
  26. package/dist/commands/read.test.js +0 -48
  27. package/dist/commands/read.test.js.map +0 -1
  28. package/dist/commands/resume.test.d.ts +0 -1
  29. package/dist/commands/resume.test.js +0 -243
  30. package/dist/commands/resume.test.js.map +0 -1
  31. package/dist/commands/search.test.d.ts +0 -1
  32. package/dist/commands/search.test.js +0 -61
  33. package/dist/commands/search.test.js.map +0 -1
  34. package/dist/commands/session.test.d.ts +0 -1
  35. package/dist/commands/session.test.js +0 -231
  36. package/dist/commands/session.test.js.map +0 -1
  37. package/dist/commands/skill/index.test.d.ts +0 -1
  38. package/dist/commands/skill/index.test.js +0 -137
  39. package/dist/commands/skill/index.test.js.map +0 -1
  40. package/dist/commands/skill/install.test.d.ts +0 -1
  41. package/dist/commands/skill/install.test.js +0 -225
  42. package/dist/commands/skill/install.test.js.map +0 -1
  43. package/dist/commands/skill/list.test.d.ts +0 -1
  44. package/dist/commands/skill/list.test.js +0 -101
  45. package/dist/commands/skill/list.test.js.map +0 -1
  46. package/dist/commands/skill/schema.test.d.ts +0 -1
  47. package/dist/commands/skill/schema.test.js +0 -142
  48. package/dist/commands/skill/schema.test.js.map +0 -1
  49. package/dist/commands/skill/validate.test.d.ts +0 -1
  50. package/dist/commands/skill/validate.test.js +0 -171
  51. package/dist/commands/skill/validate.test.js.map +0 -1
  52. package/dist/commands/task.test.d.ts +0 -1
  53. package/dist/commands/task.test.js +0 -395
  54. package/dist/commands/task.test.js.map +0 -1
  55. package/dist/commands/todo.test.d.ts +0 -1
  56. package/dist/commands/todo.test.js +0 -324
  57. package/dist/commands/todo.test.js.map +0 -1
  58. package/dist/commands/write.test.d.ts +0 -1
  59. package/dist/commands/write.test.js +0 -79
  60. package/dist/commands/write.test.js.map +0 -1
  61. package/dist/config.test.d.ts +0 -1
  62. package/dist/config.test.js +0 -147
  63. package/dist/config.test.js.map +0 -1
  64. package/dist/core/executor.test.d.ts +0 -1
  65. package/dist/core/executor.test.js +0 -206
  66. package/dist/core/executor.test.js.map +0 -1
  67. package/dist/core/registry.test.d.ts +0 -1
  68. package/dist/core/registry.test.js +0 -213
  69. package/dist/core/registry.test.js.map +0 -1
  70. package/dist/integration/coordination.test.d.ts +0 -1
  71. package/dist/integration/coordination.test.js +0 -286
  72. package/dist/integration/coordination.test.js.map +0 -1
  73. package/dist/integration/project-artifacts.test.d.ts +0 -1
  74. package/dist/integration/project-artifacts.test.js +0 -275
  75. package/dist/integration/project-artifacts.test.js.map +0 -1
  76. package/dist/integration/registry-graph.test.d.ts +0 -1
  77. package/dist/integration/registry-graph.test.js +0 -157
  78. package/dist/integration/registry-graph.test.js.map +0 -1
  79. package/dist/integration/vault-lifecycle.test.d.ts +0 -1
  80. package/dist/integration/vault-lifecycle.test.js +0 -183
  81. package/dist/integration/vault-lifecycle.test.js.map +0 -1
  82. package/dist/lib/auto-number.test.d.ts +0 -1
  83. package/dist/lib/auto-number.test.js +0 -88
  84. package/dist/lib/auto-number.test.js.map +0 -1
  85. package/dist/lib/auto-profile.test.d.ts +0 -1
  86. package/dist/lib/auto-profile.test.js +0 -227
  87. package/dist/lib/auto-profile.test.js.map +0 -1
  88. package/dist/lib/escape-regex.test.d.ts +0 -1
  89. package/dist/lib/escape-regex.test.js +0 -27
  90. package/dist/lib/escape-regex.test.js.map +0 -1
  91. package/dist/lib/frontmatter.test.d.ts +0 -1
  92. package/dist/lib/frontmatter.test.js +0 -192
  93. package/dist/lib/frontmatter.test.js.map +0 -1
  94. package/dist/lib/project-detector.test.d.ts +0 -1
  95. package/dist/lib/project-detector.test.js +0 -117
  96. package/dist/lib/project-detector.test.js.map +0 -1
  97. package/dist/lib/safe-external-path.test.d.ts +0 -1
  98. package/dist/lib/safe-external-path.test.js +0 -99
  99. package/dist/lib/safe-external-path.test.js.map +0 -1
  100. package/dist/lib/search-engine.test.d.ts +0 -1
  101. package/dist/lib/search-engine.test.js +0 -120
  102. package/dist/lib/search-engine.test.js.map +0 -1
  103. package/dist/lib/session-registry.test.d.ts +0 -1
  104. package/dist/lib/session-registry.test.js +0 -199
  105. package/dist/lib/session-registry.test.js.map +0 -1
  106. package/dist/lib/stack-detector.test.d.ts +0 -1
  107. package/dist/lib/stack-detector.test.js +0 -110
  108. package/dist/lib/stack-detector.test.js.map +0 -1
  109. package/dist/lib/token-estimator.test.d.ts +0 -1
  110. package/dist/lib/token-estimator.test.js +0 -65
  111. package/dist/lib/token-estimator.test.js.map +0 -1
  112. package/dist/lib/tool-detector.test.d.ts +0 -1
  113. package/dist/lib/tool-detector.test.js +0 -170
  114. package/dist/lib/tool-detector.test.js.map +0 -1
  115. package/dist/lib/vault-fs.test.d.ts +0 -1
  116. package/dist/lib/vault-fs.test.js +0 -210
  117. package/dist/lib/vault-fs.test.js.map +0 -1
  118. package/dist/setup/configure.test.d.ts +0 -1
  119. package/dist/setup/configure.test.js +0 -112
  120. package/dist/setup/configure.test.js.map +0 -1
  121. package/dist/setup/detect.test.d.ts +0 -1
  122. package/dist/setup/detect.test.js +0 -44
  123. package/dist/setup/detect.test.js.map +0 -1
  124. package/dist/setup/instructions.test.d.ts +0 -1
  125. package/dist/setup/instructions.test.js +0 -84
  126. package/dist/setup/instructions.test.js.map +0 -1
  127. package/dist/setup/json-config.test.d.ts +0 -1
  128. package/dist/setup/json-config.test.js +0 -92
  129. package/dist/setup/json-config.test.js.map +0 -1
  130. package/dist/setup/setup-integration.test.d.ts +0 -1
  131. package/dist/setup/setup-integration.test.js +0 -72
  132. package/dist/setup/setup-integration.test.js.map +0 -1
  133. package/dist/setup/teardown.test.d.ts +0 -1
  134. package/dist/setup/teardown.test.js +0 -105
  135. package/dist/setup/teardown.test.js.map +0 -1
  136. package/dist/setup/toml-config.test.d.ts +0 -1
  137. package/dist/setup/toml-config.test.js +0 -49
  138. package/dist/setup/toml-config.test.js.map +0 -1
  139. package/dist/test-helpers.test.d.ts +0 -1
  140. package/dist/test-helpers.test.js +0 -90
  141. package/dist/test-helpers.test.js.map +0 -1
@@ -1,206 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
- import { CommandExecutor } from "./executor.js";
3
- import { loggingMiddleware } from "./middleware/logging.js";
4
- import { errorHandlerMiddleware } from "./middleware/error-handler.js";
5
- import { VaultError } from "../lib/vault-fs.js";
6
- function createMockContext() {
7
- return {
8
- vaultFs: {},
9
- vaultPath: "/tmp/test-vault",
10
- config: {},
11
- sessionRegistry: {},
12
- log: {
13
- debug: vi.fn(),
14
- info: vi.fn(),
15
- warn: vi.fn(),
16
- error: vi.fn(),
17
- },
18
- };
19
- }
20
- describe("CommandExecutor", () => {
21
- let executor;
22
- let ctx;
23
- beforeEach(() => {
24
- executor = new CommandExecutor();
25
- ctx = createMockContext();
26
- });
27
- describe("register and execute", () => {
28
- it("executes a registered command handler", async () => {
29
- const handler = async (args) => {
30
- return `Hello, ${args.name}!`;
31
- };
32
- executor.register("greet", handler);
33
- const result = await executor.execute("greet", { name: "World" }, ctx);
34
- expect(result).toBe("Hello, World!");
35
- });
36
- it("throws for unknown command", async () => {
37
- await expect(executor.execute("unknown", {}, ctx)).rejects.toThrow("Unknown command: unknown");
38
- });
39
- it("stores tool definition when provided", () => {
40
- const handler = async () => null;
41
- const toolDef = {
42
- name: "test_tool",
43
- description: "A test tool",
44
- inputSchema: { type: "object" },
45
- };
46
- executor.register("test", handler, toolDef);
47
- const defs = executor.getToolDefinitions();
48
- expect(defs).toHaveLength(1);
49
- expect(defs[0].name).toBe("test_tool");
50
- expect(defs[0].description).toBe("A test tool");
51
- });
52
- it("returns empty array when no tool definitions registered", () => {
53
- expect(executor.getToolDefinitions()).toEqual([]);
54
- });
55
- it("returns all registered tool definitions", () => {
56
- const handler = async () => null;
57
- executor.register("cmd1", handler, { name: "tool1", description: "Tool 1", inputSchema: {} });
58
- executor.register("cmd2", handler, { name: "tool2", description: "Tool 2", inputSchema: {} });
59
- executor.register("cmd3", handler);
60
- const defs = executor.getToolDefinitions();
61
- expect(defs).toHaveLength(2);
62
- expect(defs.map((d) => d.name)).toEqual(["tool1", "tool2"]);
63
- });
64
- });
65
- describe("middleware", () => {
66
- it("executes middleware in registration order", async () => {
67
- const order = [];
68
- const mw1 = async (_ctx, next) => {
69
- order.push("mw1-before");
70
- const result = await next();
71
- order.push("mw1-after");
72
- return result;
73
- };
74
- const mw2 = async (_ctx, next) => {
75
- order.push("mw2-before");
76
- const result = await next();
77
- order.push("mw2-after");
78
- return result;
79
- };
80
- const handler = async () => {
81
- order.push("handler");
82
- return "done";
83
- };
84
- executor.use(mw1);
85
- executor.use(mw2);
86
- executor.register("test", handler);
87
- await executor.execute("test", {}, ctx);
88
- expect(order).toEqual(["mw1-before", "mw2-before", "handler", "mw2-after", "mw1-after"]);
89
- });
90
- it("handler is the final next()", async () => {
91
- const handler = async () => "handler-result";
92
- executor.register("test", handler);
93
- const result = await executor.execute("test", {}, ctx);
94
- expect(result).toBe("handler-result");
95
- });
96
- it("middleware can modify context", async () => {
97
- const mw = async (ctx, next) => {
98
- ctx.custom = "modified";
99
- return next();
100
- };
101
- let receivedCtx = null;
102
- const handler = async (_args, ctx) => {
103
- receivedCtx = ctx;
104
- return "done";
105
- };
106
- executor.use(mw);
107
- executor.register("test", handler);
108
- await executor.execute("test", {}, ctx);
109
- expect(receivedCtx?.custom).toBe("modified");
110
- });
111
- it("middleware can short-circuit", async () => {
112
- const mw = async () => {
113
- return "short-circuit";
114
- };
115
- let handlerCalled = false;
116
- const handler = async () => {
117
- handlerCalled = true;
118
- return "handler";
119
- };
120
- executor.use(mw);
121
- executor.register("test", handler);
122
- const result = await executor.execute("test", {}, ctx);
123
- expect(result).toBe("short-circuit");
124
- expect(handlerCalled).toBe(false);
125
- });
126
- });
127
- });
128
- describe("loggingMiddleware", () => {
129
- let ctx;
130
- beforeEach(() => {
131
- ctx = createMockContext();
132
- });
133
- it("logs debug on start and success with duration", async () => {
134
- const start = Date.now();
135
- const result = await loggingMiddleware("test-cmd")(ctx, async () => "result");
136
- const elapsed = Date.now() - start;
137
- expect(ctx.log.debug).toHaveBeenCalledTimes(2);
138
- expect(ctx.log.debug).toHaveBeenNthCalledWith(1, "[test-cmd] Starting");
139
- expect(ctx.log.debug).toHaveBeenNthCalledWith(2, expect.stringMatching(/\[test-cmd] Completed in \d+ms/));
140
- expect(result).toBe("result");
141
- });
142
- it("logs error on failure with duration", async () => {
143
- const error = new Error("test error");
144
- await expect(loggingMiddleware("test-cmd")(ctx, async () => {
145
- throw error;
146
- })).rejects.toThrow(error);
147
- expect(ctx.log.error).toHaveBeenCalledTimes(1);
148
- expect(ctx.log.error).toHaveBeenCalledWith(expect.stringMatching(/\[test-cmd] Failed after \d+ms:/), error);
149
- });
150
- });
151
- describe("errorHandlerMiddleware", () => {
152
- let ctx;
153
- beforeEach(() => {
154
- ctx = createMockContext();
155
- });
156
- it("passes through successful results", async () => {
157
- const result = await errorHandlerMiddleware(ctx, async () => "success");
158
- expect(result).toBe("success");
159
- });
160
- it("converts VaultError to MCP error format", async () => {
161
- const vaultError = new VaultError("FILE_NOT_FOUND", "The file was not found");
162
- try {
163
- await errorHandlerMiddleware(ctx, async () => {
164
- throw vaultError;
165
- });
166
- expect.fail("Should have thrown");
167
- }
168
- catch (e) {
169
- const parsed = JSON.parse(e.message);
170
- expect(parsed).toEqual({
171
- error: "FILE_NOT_FOUND",
172
- message: "The file was not found",
173
- });
174
- }
175
- });
176
- it("converts generic error to INTERNAL_ERROR", async () => {
177
- const genericError = new Error("Something went wrong");
178
- try {
179
- await errorHandlerMiddleware(ctx, async () => {
180
- throw genericError;
181
- });
182
- expect.fail("Should have thrown");
183
- }
184
- catch (e) {
185
- const parsed = JSON.parse(e.message);
186
- expect(parsed).toEqual({
187
- error: "INTERNAL_ERROR",
188
- message: "Something went wrong",
189
- });
190
- }
191
- });
192
- it("preserves VaultError code in response", async () => {
193
- const vaultError = new VaultError("PERMISSION_DENIED", "Access denied");
194
- try {
195
- await errorHandlerMiddleware(ctx, async () => {
196
- throw vaultError;
197
- });
198
- expect.fail("Should have thrown");
199
- }
200
- catch (e) {
201
- const parsed = JSON.parse(e.message);
202
- expect(parsed.error).toBe("PERMISSION_DENIED");
203
- }
204
- });
205
- });
206
- //# sourceMappingURL=executor.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor.test.js","sourceRoot":"","sources":["../../src/core/executor.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,213 +0,0 @@
1
- import { describe, it, expect, beforeEach, vi } from "vitest";
2
- import { CommandRegistry } from "./registry.js";
3
- import { VaultError } from "../lib/vault-fs.js";
4
- function createMockContext() {
5
- return {
6
- vaultFs: {},
7
- vaultPath: "/tmp/test-vault",
8
- config: {},
9
- sessionRegistry: {},
10
- log: {
11
- debug: vi.fn(),
12
- info: vi.fn(),
13
- warn: vi.fn(),
14
- error: vi.fn(),
15
- },
16
- };
17
- }
18
- function createMockVaultFs(readResult) {
19
- return {
20
- root: "/tmp/test-vault",
21
- read: vi.fn().mockResolvedValue(readResult ?? ""),
22
- write: vi.fn().mockResolvedValue({ path: "test", bytes: 0 }),
23
- list: vi.fn().mockResolvedValue([]),
24
- exists: vi.fn().mockResolvedValue(false),
25
- verifyNoSymlinkEscape: vi.fn().mockResolvedValue(undefined),
26
- append: vi.fn().mockResolvedValue({ path: "test", bytes: 0 }),
27
- };
28
- }
29
- describe("CommandRegistry", () => {
30
- let registry;
31
- let ctx;
32
- beforeEach(() => {
33
- registry = new CommandRegistry();
34
- ctx = createMockContext();
35
- });
36
- describe("register and get", () => {
37
- it("stores and retrieves a registration", () => {
38
- const handler = async () => null;
39
- const toolDef = {
40
- name: "test_tool",
41
- description: "A test tool",
42
- inputSchema: { type: "object" },
43
- };
44
- const reg = { handler, toolDef };
45
- registry.register("test", reg);
46
- expect(registry.get("test")).toBe(reg);
47
- expect(registry.has("test")).toBe(true);
48
- expect(registry.has("missing")).toBe(false);
49
- });
50
- it("returns undefined for unknown command", () => {
51
- expect(registry.get("unknown")).toBeUndefined();
52
- });
53
- });
54
- describe("execute", () => {
55
- it("executes a registered command handler", async () => {
56
- const handler = async (args) => `Hello, ${args.name}!`;
57
- const reg = {
58
- handler: handler,
59
- toolDef: { name: "greet", description: "Greet", inputSchema: {} },
60
- };
61
- registry.register("greet", reg);
62
- const result = await registry.execute("greet", { name: "World" }, ctx);
63
- expect(result).toBe("Hello, World!");
64
- });
65
- it("uses adaptArgs to transform raw arguments", async () => {
66
- const handler = async (args) => args.camelCase;
67
- const reg = {
68
- handler: handler,
69
- toolDef: { name: "adapt", description: "Adapt", inputSchema: {} },
70
- adaptArgs: (raw) => ({ camelCase: raw.snake_case }),
71
- };
72
- registry.register("adapt", reg);
73
- const result = await registry.execute("adapt", { snake_case: "value" }, ctx);
74
- expect(result).toBe("value");
75
- });
76
- it("throws for unknown command", async () => {
77
- await expect(registry.execute("unknown", {}, ctx)).rejects.toThrow("Unknown command: unknown");
78
- });
79
- it("passes context through to handler", async () => {
80
- let receivedCtx = null;
81
- const handler = async (_args, ctx) => {
82
- receivedCtx = ctx;
83
- return "done";
84
- };
85
- const reg = {
86
- handler,
87
- toolDef: { name: "ctx-test", description: "Ctx", inputSchema: {} },
88
- };
89
- registry.register("ctx-test", reg);
90
- await registry.execute("ctx-test", {}, ctx);
91
- expect(receivedCtx).toBe(ctx);
92
- });
93
- it("passes through errors from handlers", async () => {
94
- const handler = async () => {
95
- throw new VaultError("FILE_NOT_FOUND", "not here");
96
- };
97
- const reg = {
98
- handler,
99
- toolDef: { name: "error-test", description: "Error", inputSchema: {} },
100
- };
101
- registry.register("error-test", reg);
102
- await expect(registry.execute("error-test", {}, ctx)).rejects.toThrow("not here");
103
- });
104
- });
105
- describe("getToolDefinitions", () => {
106
- it("returns empty array when no registrations", () => {
107
- expect(registry.getToolDefinitions()).toEqual([]);
108
- });
109
- it("returns tool defs from all registrations", () => {
110
- const handler = async () => null;
111
- registry.register("cmd1", {
112
- handler,
113
- toolDef: { name: "tool1", description: "Tool 1", inputSchema: {} },
114
- });
115
- registry.register("cmd2", {
116
- handler,
117
- toolDef: { name: "tool2", description: "Tool 2", inputSchema: {} },
118
- });
119
- registry.register("cmd3", {
120
- handler,
121
- toolDef: { name: "tool3", description: "Tool 3", inputSchema: {} },
122
- });
123
- const defs = registry.getToolDefinitions();
124
- expect(defs).toHaveLength(3);
125
- expect(defs.map((d) => d.name)).toEqual(["tool1", "tool2", "tool3"]);
126
- });
127
- });
128
- describe("getToolNames", () => {
129
- it("returns all registered tool names", () => {
130
- const handler = async () => null;
131
- registry.register("a", { handler, toolDef: { name: "a", description: "", inputSchema: {} } });
132
- registry.register("b", { handler, toolDef: { name: "b", description: "", inputSchema: {} } });
133
- expect(registry.getToolNames()).toEqual(["a", "b"]);
134
- });
135
- });
136
- });
137
- describe("createRegistry", () => {
138
- it("registers all expected MCP tools", async () => {
139
- const { createRegistry } = await import("./registry.js");
140
- const registry = createRegistry();
141
- const names = registry.getToolNames();
142
- const expectedTools = [
143
- "vault_read",
144
- "vault_write",
145
- "vault_search",
146
- "vault_project_context",
147
- "vault_init",
148
- "vault_decide",
149
- "vault_task",
150
- "vault_learn",
151
- "vault_todo",
152
- "vault_brainstorm",
153
- "vault_session",
154
- "vault_prune",
155
- "vault_stats",
156
- "vault_resume",
157
- "vault_deprecate",
158
- ];
159
- for (const name of expectedTools) {
160
- expect(names, `Missing tool: ${name}`).toContain(name);
161
- }
162
- });
163
- it("provides inputSchema with required fields for each tool", async () => {
164
- const { createRegistry } = await import("./registry.js");
165
- const registry = createRegistry();
166
- const defs = registry.getToolDefinitions();
167
- for (const def of defs) {
168
- expect(def.inputSchema, `${def.name}: missing inputSchema`).toBeDefined();
169
- expect(def.inputSchema, `${def.name}: inputSchema must be object`).toHaveProperty("type", "object");
170
- }
171
- });
172
- it("adaptArgs for vault_read passes path and coerces depth", async () => {
173
- const { createRegistry } = await import("./registry.js");
174
- const registry = createRegistry();
175
- const vaultFs = createMockVaultFs("# Hello");
176
- const ctx = { ...createMockContext(), vaultFs };
177
- const result = await registry.execute("vault_read", { path: "test.md", depth: "2" }, ctx);
178
- expect(result).toBe("# Hello");
179
- expect(vaultFs.read).toHaveBeenCalledWith("test.md");
180
- });
181
- it("adaptArgs directly transforms snake_case for each tool", async () => {
182
- const { createRegistry } = await import("./registry.js");
183
- const registry = createRegistry();
184
- const readReg = registry.get("vault_read");
185
- const readArgs = readReg.adaptArgs({ path: "f.md", depth: 3 });
186
- expect(readArgs).toEqual({ path: "f.md", depth: 3 });
187
- const taskReg = registry.get("vault_task");
188
- const taskArgs = taskReg.adaptArgs({ action: "add", title: "T", blocked_by: ["x"], assigned_to: "a" });
189
- expect(taskArgs).toEqual({ action: "add", title: "T", blockedBy: ["x"], assignedTo: "a" });
190
- const sessionReg = registry.get("vault_session");
191
- const sessionArgs = sessionReg.adaptArgs({ action: "register", tool: "t", task_summary: "s", files_touched: ["a.ts"] });
192
- expect(sessionArgs).toEqual({ action: "register", tool: "t", taskSummary: "s", filesTouched: ["a.ts"] });
193
- const learnReg = registry.get("vault_learn");
194
- const learnArgs = learnReg.adaptArgs({ action: "add", title: "L", tags: ["b"], session_id: "s1" });
195
- expect(learnArgs).toEqual({ action: "add", title: "L", tags: ["b"], sessionId: "s1" });
196
- const pruneReg = registry.get("vault_prune");
197
- const pruneArgs = pruneReg.adaptArgs({ mode: "dry-run", sessions_days: 30, done_tasks_days: 60 });
198
- expect(pruneArgs).toEqual({ mode: "dry-run", policy: { sessions: 30, doneTasks: 60 }, all: false });
199
- const ctxReg = registry.get("vault_project_context");
200
- const ctxArgs = ctxReg.adaptArgs({ project: "p", detail_level: "full" });
201
- expect(ctxArgs).toEqual({ project: "p", detailLevel: "full" });
202
- const writeReg = registry.get("vault_write");
203
- const writeArgs = writeReg.adaptArgs({ path: "f.md", content: "c", mode: "append" });
204
- expect(writeArgs).toEqual({ path: "f.md", content: "c", mode: "append" });
205
- const resumeReg = registry.get("vault_resume");
206
- const resumeArgs = resumeReg.adaptArgs({ project: "p", limit: 3, format: "json" });
207
- expect(resumeArgs).toEqual({ project: "p", limit: 3 });
208
- const searchReg = registry.get("vault_search");
209
- const searchArgs = searchReg.adaptArgs({ query: "q", limit: 5, project: "p", path_filter: "dir" });
210
- expect(searchArgs).toEqual({ query: "q", project: "p", limit: 5, structured: false });
211
- });
212
- });
213
- //# sourceMappingURL=registry.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../src/core/registry.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};