@zelari/core 0.7.9

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 (202) hide show
  1. package/LICENSE +21 -0
  2. package/dist/agents/advancedTools.d.ts +7 -0
  3. package/dist/agents/advancedTools.d.ts.map +1 -0
  4. package/dist/agents/advancedTools.js +115 -0
  5. package/dist/agents/advancedTools.js.map +1 -0
  6. package/dist/agents/councilApi.d.ts +328 -0
  7. package/dist/agents/councilApi.d.ts.map +1 -0
  8. package/dist/agents/councilApi.js +952 -0
  9. package/dist/agents/councilApi.js.map +1 -0
  10. package/dist/agents/councilDirectives.d.ts +26 -0
  11. package/dist/agents/councilDirectives.d.ts.map +1 -0
  12. package/dist/agents/councilDirectives.js +98 -0
  13. package/dist/agents/councilDirectives.js.map +1 -0
  14. package/dist/agents/harnessToolBridge.d.ts +26 -0
  15. package/dist/agents/harnessToolBridge.d.ts.map +1 -0
  16. package/dist/agents/harnessToolBridge.js +60 -0
  17. package/dist/agents/harnessToolBridge.js.map +1 -0
  18. package/dist/agents/promoteMember.d.ts +77 -0
  19. package/dist/agents/promoteMember.d.ts.map +1 -0
  20. package/dist/agents/promoteMember.js +210 -0
  21. package/dist/agents/promoteMember.js.map +1 -0
  22. package/dist/agents/promptModules.d.ts +20 -0
  23. package/dist/agents/promptModules.d.ts.map +1 -0
  24. package/dist/agents/promptModules.js +139 -0
  25. package/dist/agents/promptModules.js.map +1 -0
  26. package/dist/agents/roles.d.ts +40 -0
  27. package/dist/agents/roles.d.ts.map +1 -0
  28. package/dist/agents/roles.js +352 -0
  29. package/dist/agents/roles.js.map +1 -0
  30. package/dist/agents/skills/builtin/debugging.d.ts +2 -0
  31. package/dist/agents/skills/builtin/debugging.d.ts.map +1 -0
  32. package/dist/agents/skills/builtin/debugging.js +248 -0
  33. package/dist/agents/skills/builtin/debugging.js.map +1 -0
  34. package/dist/agents/skills/builtin/docs.d.ts +2 -0
  35. package/dist/agents/skills/builtin/docs.d.ts.map +1 -0
  36. package/dist/agents/skills/builtin/docs.js +291 -0
  37. package/dist/agents/skills/builtin/docs.js.map +1 -0
  38. package/dist/agents/skills/builtin/git-ops.d.ts +2 -0
  39. package/dist/agents/skills/builtin/git-ops.d.ts.map +1 -0
  40. package/dist/agents/skills/builtin/git-ops.js +301 -0
  41. package/dist/agents/skills/builtin/git-ops.js.map +1 -0
  42. package/dist/agents/skills/builtin/planning.d.ts +2 -0
  43. package/dist/agents/skills/builtin/planning.d.ts.map +1 -0
  44. package/dist/agents/skills/builtin/planning.js +335 -0
  45. package/dist/agents/skills/builtin/planning.js.map +1 -0
  46. package/dist/agents/skills/builtin/refactoring.d.ts +2 -0
  47. package/dist/agents/skills/builtin/refactoring.d.ts.map +1 -0
  48. package/dist/agents/skills/builtin/refactoring.js +261 -0
  49. package/dist/agents/skills/builtin/refactoring.js.map +1 -0
  50. package/dist/agents/skills/builtin/review.d.ts +2 -0
  51. package/dist/agents/skills/builtin/review.d.ts.map +1 -0
  52. package/dist/agents/skills/builtin/review.js +302 -0
  53. package/dist/agents/skills/builtin/review.js.map +1 -0
  54. package/dist/agents/skills/builtin/testing.d.ts +2 -0
  55. package/dist/agents/skills/builtin/testing.d.ts.map +1 -0
  56. package/dist/agents/skills/builtin/testing.js +245 -0
  57. package/dist/agents/skills/builtin/testing.js.map +1 -0
  58. package/dist/agents/skills.d.ts +138 -0
  59. package/dist/agents/skills.d.ts.map +1 -0
  60. package/dist/agents/skills.js +277 -0
  61. package/dist/agents/skills.js.map +1 -0
  62. package/dist/agents/systemPromptBuilder.d.ts +45 -0
  63. package/dist/agents/systemPromptBuilder.d.ts.map +1 -0
  64. package/dist/agents/systemPromptBuilder.js +159 -0
  65. package/dist/agents/systemPromptBuilder.js.map +1 -0
  66. package/dist/agents/toolSchemas.d.ts +55 -0
  67. package/dist/agents/toolSchemas.d.ts.map +1 -0
  68. package/dist/agents/toolSchemas.js +316 -0
  69. package/dist/agents/toolSchemas.js.map +1 -0
  70. package/dist/agents/tools.d.ts +67 -0
  71. package/dist/agents/tools.d.ts.map +1 -0
  72. package/dist/agents/tools.js +225 -0
  73. package/dist/agents/tools.js.map +1 -0
  74. package/dist/agents/vaultTools.d.ts +9 -0
  75. package/dist/agents/vaultTools.d.ts.map +1 -0
  76. package/dist/agents/vaultTools.js +134 -0
  77. package/dist/agents/vaultTools.js.map +1 -0
  78. package/dist/core/AgentHarness.d.ts +250 -0
  79. package/dist/core/AgentHarness.d.ts.map +1 -0
  80. package/dist/core/AgentHarness.js +614 -0
  81. package/dist/core/AgentHarness.js.map +1 -0
  82. package/dist/core/providerStream.d.ts +61 -0
  83. package/dist/core/providerStream.d.ts.map +1 -0
  84. package/dist/core/providerStream.js +99 -0
  85. package/dist/core/providerStream.js.map +1 -0
  86. package/dist/core/sessionJsonl.d.ts +50 -0
  87. package/dist/core/sessionJsonl.d.ts.map +1 -0
  88. package/dist/core/sessionJsonl.js +99 -0
  89. package/dist/core/sessionJsonl.js.map +1 -0
  90. package/dist/core/tools/auditLog.d.ts +14 -0
  91. package/dist/core/tools/auditLog.d.ts.map +1 -0
  92. package/dist/core/tools/auditLog.js +26 -0
  93. package/dist/core/tools/auditLog.js.map +1 -0
  94. package/dist/core/tools/builtin/_walk.d.ts +40 -0
  95. package/dist/core/tools/builtin/_walk.d.ts.map +1 -0
  96. package/dist/core/tools/builtin/_walk.js +129 -0
  97. package/dist/core/tools/builtin/_walk.js.map +1 -0
  98. package/dist/core/tools/builtin/diff.d.ts +45 -0
  99. package/dist/core/tools/builtin/diff.d.ts.map +1 -0
  100. package/dist/core/tools/builtin/diff.js +477 -0
  101. package/dist/core/tools/builtin/diff.js.map +1 -0
  102. package/dist/core/tools/builtin/filesystem.d.ts +45 -0
  103. package/dist/core/tools/builtin/filesystem.d.ts.map +1 -0
  104. package/dist/core/tools/builtin/filesystem.js +110 -0
  105. package/dist/core/tools/builtin/filesystem.js.map +1 -0
  106. package/dist/core/tools/builtin/listFiles.d.ts +18 -0
  107. package/dist/core/tools/builtin/listFiles.d.ts.map +1 -0
  108. package/dist/core/tools/builtin/listFiles.js +48 -0
  109. package/dist/core/tools/builtin/listFiles.js.map +1 -0
  110. package/dist/core/tools/builtin/search.d.ts +49 -0
  111. package/dist/core/tools/builtin/search.d.ts.map +1 -0
  112. package/dist/core/tools/builtin/search.js +148 -0
  113. package/dist/core/tools/builtin/search.js.map +1 -0
  114. package/dist/core/tools/builtin/shell.d.ts +27 -0
  115. package/dist/core/tools/builtin/shell.d.ts.map +1 -0
  116. package/dist/core/tools/builtin/shell.js +98 -0
  117. package/dist/core/tools/builtin/shell.js.map +1 -0
  118. package/dist/core/tools/builtin/shellResolver.d.ts +25 -0
  119. package/dist/core/tools/builtin/shellResolver.d.ts.map +1 -0
  120. package/dist/core/tools/builtin/shellResolver.js +117 -0
  121. package/dist/core/tools/builtin/shellResolver.js.map +1 -0
  122. package/dist/core/tools/builtin/web.d.ts +43 -0
  123. package/dist/core/tools/builtin/web.d.ts.map +1 -0
  124. package/dist/core/tools/builtin/web.js +208 -0
  125. package/dist/core/tools/builtin/web.js.map +1 -0
  126. package/dist/core/tools/registry.d.ts +31 -0
  127. package/dist/core/tools/registry.d.ts.map +1 -0
  128. package/dist/core/tools/registry.js +115 -0
  129. package/dist/core/tools/registry.js.map +1 -0
  130. package/dist/core/tools/toolTypes.d.ts +60 -0
  131. package/dist/core/tools/toolTypes.d.ts.map +1 -0
  132. package/dist/core/tools/toolTypes.js +8 -0
  133. package/dist/core/tools/toolTypes.js.map +1 -0
  134. package/dist/core/tools/zodBridge.d.ts +6 -0
  135. package/dist/core/tools/zodBridge.d.ts.map +1 -0
  136. package/dist/core/tools/zodBridge.js +56 -0
  137. package/dist/core/tools/zodBridge.js.map +1 -0
  138. package/dist/council/index.d.ts +14 -0
  139. package/dist/council/index.d.ts.map +1 -0
  140. package/dist/council/index.js +14 -0
  141. package/dist/council/index.js.map +1 -0
  142. package/dist/council/modeBanners.d.ts +5 -0
  143. package/dist/council/modeBanners.d.ts.map +1 -0
  144. package/dist/council/modeBanners.js +10 -0
  145. package/dist/council/modeBanners.js.map +1 -0
  146. package/dist/council/runMode.d.ts +25 -0
  147. package/dist/council/runMode.d.ts.map +1 -0
  148. package/dist/council/runMode.js +41 -0
  149. package/dist/council/runMode.js.map +1 -0
  150. package/dist/events/index.d.ts +6 -0
  151. package/dist/events/index.d.ts.map +1 -0
  152. package/dist/events/index.js +6 -0
  153. package/dist/events/index.js.map +1 -0
  154. package/dist/harness/index.d.ts +9 -0
  155. package/dist/harness/index.d.ts.map +1 -0
  156. package/dist/harness/index.js +9 -0
  157. package/dist/harness/index.js.map +1 -0
  158. package/dist/harness/tools/index.d.ts +20 -0
  159. package/dist/harness/tools/index.d.ts.map +1 -0
  160. package/dist/harness/tools/index.js +19 -0
  161. package/dist/harness/tools/index.js.map +1 -0
  162. package/dist/index.d.ts +13 -0
  163. package/dist/index.d.ts.map +1 -0
  164. package/dist/index.js +18 -0
  165. package/dist/index.js.map +1 -0
  166. package/dist/shared/eventBus.d.ts +58 -0
  167. package/dist/shared/eventBus.d.ts.map +1 -0
  168. package/dist/shared/eventBus.js +104 -0
  169. package/dist/shared/eventBus.js.map +1 -0
  170. package/dist/shared/events.d.ts +230 -0
  171. package/dist/shared/events.d.ts.map +1 -0
  172. package/dist/shared/events.js +76 -0
  173. package/dist/shared/events.js.map +1 -0
  174. package/dist/shared/index.d.ts +8 -0
  175. package/dist/shared/index.d.ts.map +1 -0
  176. package/dist/shared/index.js +8 -0
  177. package/dist/shared/index.js.map +1 -0
  178. package/dist/skills/index.d.ts +10 -0
  179. package/dist/skills/index.d.ts.map +1 -0
  180. package/dist/skills/index.js +10 -0
  181. package/dist/skills/index.js.map +1 -0
  182. package/dist/types/context.d.ts +54 -0
  183. package/dist/types/context.d.ts.map +1 -0
  184. package/dist/types/context.js +3 -0
  185. package/dist/types/context.js.map +1 -0
  186. package/dist/types/index.d.ts +13 -0
  187. package/dist/types/index.d.ts.map +1 -0
  188. package/dist/types/index.js +12 -0
  189. package/dist/types/index.js.map +1 -0
  190. package/dist/types/knowledge.d.ts +79 -0
  191. package/dist/types/knowledge.d.ts.map +1 -0
  192. package/dist/types/knowledge.js +5 -0
  193. package/dist/types/knowledge.js.map +1 -0
  194. package/dist/types/legacy.d.ts +466 -0
  195. package/dist/types/legacy.d.ts.map +1 -0
  196. package/dist/types/legacy.js +2 -0
  197. package/dist/types/legacy.js.map +1 -0
  198. package/dist/types/systemTypes.d.ts +113 -0
  199. package/dist/types/systemTypes.d.ts.map +1 -0
  200. package/dist/types/systemTypes.js +10 -0
  201. package/dist/types/systemTypes.js.map +1 -0
  202. package/package.json +151 -0
@@ -0,0 +1,67 @@
1
+ import type { Task, Idea, Phase, KnowledgeDocument, Milestone } from '../types/index.js';
2
+ import type { EnhancedToolDefinition } from '../types/systemTypes.js';
3
+ export interface ToolDefinition {
4
+ name: string;
5
+ description: string;
6
+ execute: (args: Record<string, unknown>, context: ToolContext) => string | Promise<string>;
7
+ }
8
+ export interface ToolContext {
9
+ workspaceId: string;
10
+ addTask: (task: Omit<Task, 'id' | 'createdAt'>) => void;
11
+ addIdea: (idea: Omit<Idea, 'id' | 'workspaceId' | 'createdAt'>) => void;
12
+ addPhase: (phase: Omit<Phase, 'id'>) => void;
13
+ updateMindMap: (action: string, payload: Record<string, unknown>) => void;
14
+ addActivity: (type: string, action: string, title: string) => void;
15
+ addDocument?: (draft: Omit<KnowledgeDocument, 'id' | 'createdAt' | 'updatedAt'>) => KnowledgeDocument;
16
+ updateDocument?: (id: string, updates: Partial<KnowledgeDocument>) => void;
17
+ searchDocuments?: (query?: string) => KnowledgeDocument[];
18
+ linkDocuments?: (sourceId: string, targetPathOrTitle: string, alias?: string) => void;
19
+ getDocumentBacklinks?: (id: string) => KnowledgeDocument[];
20
+ /** RAG hybrid retrieval — returns scored chunks. */
21
+ ragQuery?: (query: string, topK?: number) => {
22
+ title: string;
23
+ content: string;
24
+ score: number;
25
+ }[];
26
+ /** Add a single node to the active mind map. */
27
+ createMindMapNode?: (node: {
28
+ label: string;
29
+ content: string;
30
+ }) => void;
31
+ /** Create a project milestone. */
32
+ createMilestone?: (milestone: Omit<Milestone, 'id' | 'completed'>) => void;
33
+ /** Update an existing task. */
34
+ updateTask?: (taskId: string, updates: Partial<Task>) => void;
35
+ /** Cluster a set of ideas under a named group. */
36
+ clusterIdeas?: (ideaIds: string[], clusterName: string, color: string) => void;
37
+ }
38
+ export declare const TOOL_DEFINITIONS: ToolDefinition[];
39
+ /** Register workspace stubs (CLI-only). Replaces any previous set. */
40
+ export declare function setWorkspaceStubs(stubs: EnhancedToolDefinition[]): void;
41
+ /**
42
+ * Read-only snapshot of the current registry (always a fresh array).
43
+ *
44
+ * v0.7.1 fix (CRITICAL): dedupe by name so workspace stubs shadow builtins
45
+ * of the same name — consistent with {@link rebuildIndex}, which already lets
46
+ * stubs win via the `Map`. Without this, the CLI council path registered
47
+ * stubs (`createPhase`, `createTask`, …) alongside the core builtin tools
48
+ * with identical names, so `getProviderTools()` emitted two function entries
49
+ * per name and xAI rejected the request with HTTP 400
50
+ * "Duplicate function definition provided". The duplicate is silent in the
51
+ * in-memory `Map` (later entry wins) but fatal on the wire.
52
+ */
53
+ export declare function getAllTools(): EnhancedToolDefinition[];
54
+ /** Register a custom tool (user-defined or MCP-discovered). If a tool with
55
+ * the same name already exists, it is replaced. */
56
+ export declare function registerCustomTool(def: EnhancedToolDefinition): void;
57
+ /** Remove a custom tool by name. No-op if not present. */
58
+ export declare function unregisterCustomTool(name: string): void;
59
+ /** Wipe ALL custom tools (used on app boot before re-registering active ones). */
60
+ export declare function clearCustomTools(): void;
61
+ /** Backwards-compat: keeps ALL_TOOLS as a live reference for legacy imports. */
62
+ export declare const ALL_TOOLS: readonly EnhancedToolDefinition[];
63
+ export declare function isValidTool(name: string): boolean;
64
+ export declare function executeTool(name: string, args: Record<string, unknown>, context: ToolContext): Promise<string | null>;
65
+ /** Resolve a list of tool names to their definitions (skipping unknown ones). */
66
+ export declare function getAvailableTools(toolNames: string[]): EnhancedToolDefinition[];
67
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/agents/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,225 @@
1
+ import { VAULT_TOOL_DEFINITIONS } from './vaultTools.js';
2
+ import { ADVANCED_TOOL_DEFINITIONS } from './advancedTools.js';
3
+ import { getHarnessToolDefinitions } from './harnessToolBridge.js';
4
+ export const TOOL_DEFINITIONS = [
5
+ {
6
+ name: 'createTask',
7
+ description: 'Create a new task in the project planner',
8
+ execute: (args, ctx) => {
9
+ ctx.addTask({
10
+ phaseId: args['phaseId'] ?? undefined,
11
+ parentId: args['parentId'] ?? undefined,
12
+ title: args['title'] ?? 'New Task',
13
+ description: args['description'] ?? '',
14
+ status: 'todo',
15
+ priority: args['priority'] ?? 'medium',
16
+ tags: args['tags'] ?? [],
17
+ dependsOn: [],
18
+ subtasks: (args['subtasks'] ?? []).map((s) => ({ id: crypto.randomUUID().slice(0, 8), title: s, done: false })),
19
+ });
20
+ ctx.addActivity('task', 'created', args['title'] ?? 'New Task');
21
+ return `Task "${args['title']}" created successfully.`;
22
+ },
23
+ },
24
+ {
25
+ name: 'addIdea',
26
+ description: 'Add a new idea to the idea generator',
27
+ execute: (args, ctx) => {
28
+ ctx.addIdea({
29
+ title: args['title'] ?? 'New Idea',
30
+ content: args['content'] ?? '',
31
+ tags: args['tags'] ?? [],
32
+ category: args['category'] ?? 'General',
33
+ });
34
+ ctx.addActivity('idea', 'created', args['title'] ?? 'New Idea');
35
+ return `Idea "${args['title']}" added successfully.`;
36
+ },
37
+ },
38
+ {
39
+ name: 'createPhase',
40
+ description: 'Create a new project phase',
41
+ execute: (args, ctx) => {
42
+ ctx.addPhase({
43
+ name: args['name'] ?? 'New Phase',
44
+ description: args['description'] ?? '',
45
+ order: args['order'] ?? 0,
46
+ color: args['color'] ?? '#3b82f6',
47
+ progress: 0,
48
+ });
49
+ ctx.addActivity('project', 'phase created', args['name'] ?? 'New Phase');
50
+ return `Phase "${args['name']}" created.`;
51
+ },
52
+ },
53
+ {
54
+ name: 'buildMindMap',
55
+ description: 'Generate or update the mind map',
56
+ execute: (args, ctx) => {
57
+ ctx.updateMindMap('build', args);
58
+ ctx.addActivity('mindmap', 'generated', 'Mind map updated');
59
+ return 'Mind map structure generated. Apply it in the Mind Map view.';
60
+ },
61
+ },
62
+ {
63
+ name: 'addNode',
64
+ description: 'Add a node to the mind map',
65
+ execute: (args, ctx) => {
66
+ ctx.updateMindMap('addNode', args);
67
+ return `Node "${args['label']}" added to mind map.`;
68
+ },
69
+ },
70
+ {
71
+ name: 'linkNodes',
72
+ description: 'Link two nodes in the mind map',
73
+ execute: (args, ctx) => {
74
+ ctx.updateMindMap('link', args);
75
+ return `Nodes linked: ${args['source']} → ${args['target']}`;
76
+ },
77
+ },
78
+ {
79
+ name: 'createDocument',
80
+ description: 'Create a new markdown document in the knowledge vault',
81
+ execute: (args, ctx) => {
82
+ if (!ctx.addDocument)
83
+ return 'Knowledge vault tool not available.';
84
+ const title = args['title'] || 'New Document';
85
+ const path = args['path'] || `notes/${title.toLowerCase().replace(/[^a-z0-9]+/g, '-')}`;
86
+ const content = args['content'] || '';
87
+ const tags = args['tags'] || [];
88
+ ctx.addDocument({
89
+ path,
90
+ title,
91
+ content,
92
+ format: 'markdown',
93
+ tags,
94
+ frontmatter: {},
95
+ workspaceId: ctx.workspaceId,
96
+ });
97
+ ctx.addActivity('vault', 'created document', title);
98
+ return `Document "${title}" created at "${path}".`;
99
+ },
100
+ },
101
+ ];
102
+ /**
103
+ * Unified tool registry: core + vault + advanced tools.
104
+ *
105
+ * The vault version of `createDocument` (richer parameter schema) takes
106
+ * precedence over the legacy core stub, so we dedupe by name. This single
107
+ * registry is the source of truth for tool execution, validation and prompt
108
+ * documentation.
109
+ *
110
+ * The registry is MUTABLE: `registerCustomTool` adds user-defined tools
111
+ * (custom skills / MCP servers) at runtime. The `TOOL_BY_NAME` map is rebuilt
112
+ * lazily after each registration.
113
+ */
114
+ /** Core planner/mindmap tools adapted for the enhanced tool registry. */
115
+ const CORE_TOOL_DEFINITIONS = TOOL_DEFINITIONS.map((tool) => ({
116
+ name: tool.name,
117
+ description: tool.description,
118
+ category: 'core',
119
+ parameters: [],
120
+ execute: tool.execute,
121
+ }));
122
+ /** Initial builtin registry (computed once). */
123
+ function buildBuiltinRegistry() {
124
+ const seen = new Set();
125
+ const merged = [];
126
+ // v0.7.5: harness builtins (read_file, bash, list_files, web_search, …)
127
+ // FIRST — council roles declare these names, and before this the catalog
128
+ // did not know them, so member prompts advertised no file tools at all
129
+ // and the models hallucinated Read/Glob/list_dir (live test 2026-07-03).
130
+ for (const tool of [
131
+ ...getHarnessToolDefinitions(),
132
+ ...VAULT_TOOL_DEFINITIONS,
133
+ ...ADVANCED_TOOL_DEFINITIONS,
134
+ ...CORE_TOOL_DEFINITIONS,
135
+ ]) {
136
+ if (seen.has(tool.name))
137
+ continue;
138
+ seen.add(tool.name);
139
+ merged.push(tool);
140
+ }
141
+ return merged;
142
+ }
143
+ let _allTools = buildBuiltinRegistry();
144
+ let _toolByName = new Map(_allTools.map((t) => [t.name, t]));
145
+ let _validToolNames = new Set(_toolByName.keys());
146
+ /** Workspace stubs registered by the CLI (Phase 4 wiring). */
147
+ let _workspaceStubs = [];
148
+ function rebuildIndex() {
149
+ _toolByName = new Map([..._allTools, ..._workspaceStubs].map((t) => [t.name, t]));
150
+ _validToolNames = new Set(_toolByName.keys());
151
+ }
152
+ /** Register workspace stubs (CLI-only). Replaces any previous set. */
153
+ export function setWorkspaceStubs(stubs) {
154
+ _workspaceStubs = stubs;
155
+ rebuildIndex();
156
+ }
157
+ /**
158
+ * Read-only snapshot of the current registry (always a fresh array).
159
+ *
160
+ * v0.7.1 fix (CRITICAL): dedupe by name so workspace stubs shadow builtins
161
+ * of the same name — consistent with {@link rebuildIndex}, which already lets
162
+ * stubs win via the `Map`. Without this, the CLI council path registered
163
+ * stubs (`createPhase`, `createTask`, …) alongside the core builtin tools
164
+ * with identical names, so `getProviderTools()` emitted two function entries
165
+ * per name and xAI rejected the request with HTTP 400
166
+ * "Duplicate function definition provided". The duplicate is silent in the
167
+ * in-memory `Map` (later entry wins) but fatal on the wire.
168
+ */
169
+ export function getAllTools() {
170
+ const map = new Map([..._allTools, ..._workspaceStubs].map((t) => [t.name, t]));
171
+ return [...map.values()];
172
+ }
173
+ /** Register a custom tool (user-defined or MCP-discovered). If a tool with
174
+ * the same name already exists, it is replaced. */
175
+ export function registerCustomTool(def) {
176
+ const idx = _allTools.findIndex((t) => t.name === def.name);
177
+ if (idx >= 0)
178
+ _allTools[idx] = def;
179
+ else
180
+ _allTools.push(def);
181
+ rebuildIndex();
182
+ }
183
+ /** Remove a custom tool by name. No-op if not present. */
184
+ export function unregisterCustomTool(name) {
185
+ const idx = _allTools.findIndex((t) => t.name === name);
186
+ if (idx < 0)
187
+ return;
188
+ _allTools.splice(idx, 1);
189
+ rebuildIndex();
190
+ }
191
+ /** Wipe ALL custom tools (used on app boot before re-registering active ones). */
192
+ export function clearCustomTools() {
193
+ _allTools = buildBuiltinRegistry();
194
+ rebuildIndex();
195
+ }
196
+ /** Backwards-compat: keeps ALL_TOOLS as a live reference for legacy imports. */
197
+ export const ALL_TOOLS = new Proxy([], {
198
+ get: (_target, prop) => {
199
+ // Support `ALL_TOOLS.length`, `.filter`, `.map`, `.find` by deferring to the live array.
200
+ return Reflect.get(_allTools, prop);
201
+ },
202
+ });
203
+ export function isValidTool(name) {
204
+ return _validToolNames.has(name);
205
+ }
206
+ export async function executeTool(name, args, context) {
207
+ const tool = _toolByName.get(name);
208
+ if (!tool)
209
+ return null;
210
+ const safeArgs = args && typeof args === 'object' ? args : {};
211
+ try {
212
+ const result = tool.execute(safeArgs, context);
213
+ return await Promise.resolve(result);
214
+ }
215
+ catch (err) {
216
+ return `Tool "${name}" failed: ${err instanceof Error ? err.message : 'Unknown error'}`;
217
+ }
218
+ }
219
+ /** Resolve a list of tool names to their definitions (skipping unknown ones). */
220
+ export function getAvailableTools(toolNames) {
221
+ return toolNames
222
+ .map((name) => _toolByName.get(name))
223
+ .filter((t) => t !== undefined);
224
+ }
225
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/agents/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { EnhancedToolDefinition } from '../types/systemTypes.js';
2
+ /**
3
+ * Knowledge Vault tools.
4
+ *
5
+ * These tools operate on KnowledgeDocuments via the ToolContext callbacks
6
+ * (which are wired to the Zustand store).
7
+ */
8
+ export declare const VAULT_TOOL_DEFINITIONS: EnhancedToolDefinition[];
9
+ //# sourceMappingURL=vaultTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaultTools.d.ts","sourceRoot":"","sources":["../../src/agents/vaultTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAiB,MAAM,yBAAyB,CAAC;AAgBrF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,sBAAsB,EA+G1D,CAAC"}
@@ -0,0 +1,134 @@
1
+ /** Helper to build a ToolParameter concisely. */
2
+ function p(name, type, description, required, extra) {
3
+ return { name, type, description, required, ...extra };
4
+ }
5
+ /**
6
+ * Knowledge Vault tools.
7
+ *
8
+ * These tools operate on KnowledgeDocuments via the ToolContext callbacks
9
+ * (which are wired to the Zustand store).
10
+ */
11
+ export const VAULT_TOOL_DEFINITIONS = [
12
+ {
13
+ name: 'createDocument',
14
+ description: 'Create a new markdown document in the Knowledge Vault.',
15
+ category: 'vault',
16
+ parameters: [
17
+ p('path', 'string', 'Document path (e.g. "notes/architecture"). Must be unique.', true),
18
+ p('title', 'string', 'Document title', true),
19
+ p('content', 'string', 'Markdown content. Use [[wikilinks]] and #hashtags.', false, { default: '' }),
20
+ p('tags', 'string[]', 'Tag list', false, { default: [] }),
21
+ p('category', 'string', 'Document category', false),
22
+ p('format', 'string', 'Document format', false, { default: 'markdown', enum: ['markdown', 'text', 'json', 'yaml', 'html', 'csv'] }),
23
+ ],
24
+ execute: (args, ctx) => {
25
+ if (!ctx.addDocument)
26
+ return 'Vault not available in this context.';
27
+ const doc = ctx.addDocument({
28
+ path: args['path'] ?? '',
29
+ title: args['title'] ?? 'Untitled',
30
+ content: args['content'] ?? '',
31
+ format: (args['format'] ?? 'markdown'),
32
+ tags: args['tags'] ?? [],
33
+ frontmatter: {},
34
+ category: args['category'] ?? undefined,
35
+ workspaceId: ctx.workspaceId,
36
+ });
37
+ ctx.addActivity('task', 'document created', doc.title);
38
+ return `Document "${doc.title}" created at path "${doc.path}".`;
39
+ },
40
+ },
41
+ {
42
+ name: 'updateDocument',
43
+ description: 'Update an existing Knowledge Vault document (by id).',
44
+ category: 'vault',
45
+ parameters: [
46
+ p('id', 'string', 'Document id to update', true),
47
+ p('content', 'string', 'New markdown content', false),
48
+ p('title', 'string', 'New title', false),
49
+ p('tags', 'string[]', 'New tag list (replaces existing)', false),
50
+ p('category', 'string', 'New category', false),
51
+ ],
52
+ execute: (args, ctx) => {
53
+ if (!ctx.updateDocument)
54
+ return 'Vault not available in this context.';
55
+ const id = args['id'] ?? '';
56
+ const updates = {};
57
+ if (args['content'] !== undefined)
58
+ updates.content = args['content'];
59
+ if (args['title'] !== undefined)
60
+ updates.title = args['title'];
61
+ if (args['tags'] !== undefined)
62
+ updates.tags = args['tags'];
63
+ if (args['category'] !== undefined)
64
+ updates.category = args['category'];
65
+ ctx.updateDocument(id, updates);
66
+ return `Document ${id} updated.`;
67
+ },
68
+ },
69
+ {
70
+ name: 'searchDocuments',
71
+ description: 'Search Knowledge Vault documents by free-text query, tag, or category.',
72
+ category: 'vault',
73
+ parameters: [
74
+ p('query', 'string', 'Free-text search query', false),
75
+ p('tag', 'string', 'Filter by tag', false),
76
+ p('category', 'string', 'Filter by category', false),
77
+ p('limit', 'number', 'Max results', false, { default: 10 }),
78
+ ],
79
+ execute: (args, ctx) => {
80
+ if (!ctx.searchDocuments)
81
+ return 'Vault search not available in this context.';
82
+ const query = args['query'] ?? '';
83
+ const tag = args['tag'];
84
+ const category = args['category'];
85
+ const limit = args['limit'] ?? 10;
86
+ let results = ctx.searchDocuments(query);
87
+ if (tag)
88
+ results = results.filter((d) => (d.tags ?? []).includes(tag));
89
+ if (category)
90
+ results = results.filter((d) => d.category === category);
91
+ results = results.slice(0, limit);
92
+ if (results.length === 0)
93
+ return 'No matching documents found.';
94
+ return results
95
+ .map((d) => `- ${d.title} (${d.path}) [${(d.tags ?? []).join(', ')}]`)
96
+ .join('\n');
97
+ },
98
+ },
99
+ {
100
+ name: 'linkDocuments',
101
+ description: 'Create a bidirectional wikilink between two documents by inserting [[target]] into the source.',
102
+ category: 'vault',
103
+ parameters: [
104
+ p('sourceId', 'string', 'Source document id', true),
105
+ p('targetPathOrTitle', 'string', 'Target document path or title', true),
106
+ p('alias', 'string', 'Optional display alias', false),
107
+ ],
108
+ execute: (args, ctx) => {
109
+ if (!ctx.linkDocuments)
110
+ return 'Vault linking not available in this context.';
111
+ const sourceId = args['sourceId'] ?? '';
112
+ const target = args['targetPathOrTitle'] ?? '';
113
+ const alias = args['alias'];
114
+ ctx.linkDocuments(sourceId, target, alias);
115
+ return `Linked document ${sourceId} → ${target}${alias ? ` (alias: ${alias})` : ''}.`;
116
+ },
117
+ },
118
+ {
119
+ name: 'getDocumentBacklinks',
120
+ description: 'Retrieve documents that link to a given document.',
121
+ category: 'vault',
122
+ parameters: [p('id', 'string', 'Target document id', true)],
123
+ execute: (args, ctx) => {
124
+ if (!ctx.getDocumentBacklinks)
125
+ return 'Backlinks not available in this context.';
126
+ const id = args['id'] ?? '';
127
+ const backlinks = ctx.getDocumentBacklinks(id);
128
+ if (backlinks.length === 0)
129
+ return 'No backlinks found.';
130
+ return backlinks.map((d) => `- ${d.title} (${d.path})`).join('\n');
131
+ },
132
+ },
133
+ ];
134
+ //# sourceMappingURL=vaultTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaultTools.js","sourceRoot":"","sources":["../../src/agents/vaultTools.ts"],"names":[],"mappings":"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"}