zelari-code 0.7.9 → 0.7.11
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.
- package/LICENSE +37 -37
- package/README.md +320 -295
- package/bin/zelari-code.js +62 -62
- package/dist/cli/app.js +33 -3
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/components/LiveRegion.js +7 -3
- package/dist/cli/components/LiveRegion.js.map +1 -1
- package/dist/cli/components/SelectList.js +67 -0
- package/dist/cli/components/SelectList.js.map +1 -0
- package/dist/cli/components/Spinner.js +51 -0
- package/dist/cli/components/Spinner.js.map +1 -0
- package/dist/cli/components/SplashScreen.js +85 -85
- package/dist/cli/components/StatusBar.js +42 -34
- package/dist/cli/components/StatusBar.js.map +1 -1
- package/dist/cli/headless.js +10 -10
- package/dist/cli/hooks/useSlashDispatch.js +11 -1
- package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
- package/dist/cli/keyStore.js +2 -2
- package/dist/cli/keyStore.js.map +1 -1
- package/dist/cli/main.bundled.js +15146 -14919
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/main.js +1 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/modelDiscovery.js +42 -5
- package/dist/cli/modelDiscovery.js.map +1 -1
- package/dist/cli/provider/openai-compatible.js +4 -2
- package/dist/cli/provider/openai-compatible.js.map +1 -1
- package/dist/cli/slashCommands.js +22 -5
- package/dist/cli/slashCommands.js.map +1 -1
- package/dist/cli/slashHandlers/provider.js +102 -5
- package/dist/cli/slashHandlers/provider.js.map +1 -1
- package/package.json +2 -2
- package/dist/agents/advancedTools.js +0 -115
- package/dist/agents/advancedTools.js.map +0 -1
- package/dist/agents/councilApi.js +0 -375
- package/dist/agents/councilApi.js.map +0 -1
- package/dist/agents/councilDirectives.js +0 -100
- package/dist/agents/councilDirectives.js.map +0 -1
- package/dist/agents/promoteMember.js +0 -210
- package/dist/agents/promoteMember.js.map +0 -1
- package/dist/agents/promptModules.js +0 -139
- package/dist/agents/promptModules.js.map +0 -1
- package/dist/agents/roles.js +0 -299
- package/dist/agents/roles.js.map +0 -1
- package/dist/agents/skills/builtin/debugging.js +0 -248
- package/dist/agents/skills/builtin/debugging.js.map +0 -1
- package/dist/agents/skills/builtin/docs.js +0 -301
- package/dist/agents/skills/builtin/docs.js.map +0 -1
- package/dist/agents/skills/builtin/git-ops.js +0 -301
- package/dist/agents/skills/builtin/git-ops.js.map +0 -1
- package/dist/agents/skills/builtin/planning.js +0 -335
- package/dist/agents/skills/builtin/planning.js.map +0 -1
- package/dist/agents/skills/builtin/refactoring.js +0 -261
- package/dist/agents/skills/builtin/refactoring.js.map +0 -1
- package/dist/agents/skills/builtin/review.js +0 -302
- package/dist/agents/skills/builtin/review.js.map +0 -1
- package/dist/agents/skills/builtin/testing.js +0 -245
- package/dist/agents/skills/builtin/testing.js.map +0 -1
- package/dist/agents/skills.js +0 -272
- package/dist/agents/skills.js.map +0 -1
- package/dist/agents/systemPromptBuilder.js +0 -151
- package/dist/agents/systemPromptBuilder.js.map +0 -1
- package/dist/agents/toolSchemas.js +0 -249
- package/dist/agents/toolSchemas.js.map +0 -1
- package/dist/agents/tools.js +0 -196
- package/dist/agents/tools.js.map +0 -1
- package/dist/agents/vaultTools.js +0 -134
- package/dist/agents/vaultTools.js.map +0 -1
- package/dist/cli/components/CollapsibleToolOutput.js +0 -43
- package/dist/cli/components/CollapsibleToolOutput.js.map +0 -1
- package/dist/cli/components/Header.js +0 -38
- package/dist/cli/components/Header.js.map +0 -1
- package/dist/main/core/AgentHarness.js +0 -467
- package/dist/main/core/AgentHarness.js.map +0 -1
- package/dist/main/core/providerStream.js +0 -99
- package/dist/main/core/providerStream.js.map +0 -1
- package/dist/main/core/sessionJsonl.js +0 -99
- package/dist/main/core/sessionJsonl.js.map +0 -1
- package/dist/main/core/tools/auditLog.js +0 -26
- package/dist/main/core/tools/auditLog.js.map +0 -1
- package/dist/main/core/tools/builtin/filesystem.js +0 -110
- package/dist/main/core/tools/builtin/filesystem.js.map +0 -1
- package/dist/main/core/tools/builtin/listFiles.js +0 -86
- package/dist/main/core/tools/builtin/listFiles.js.map +0 -1
- package/dist/main/core/tools/builtin/search.js +0 -56
- package/dist/main/core/tools/builtin/search.js.map +0 -1
- package/dist/main/core/tools/builtin/shell.js +0 -51
- package/dist/main/core/tools/builtin/shell.js.map +0 -1
- package/dist/main/core/tools/registry.js +0 -71
- package/dist/main/core/tools/registry.js.map +0 -1
- package/dist/main/core/tools/toolTypes.js +0 -8
- package/dist/main/core/tools/toolTypes.js.map +0 -1
- package/dist/main/core/tools/zodBridge.js +0 -56
- package/dist/main/core/tools/zodBridge.js.map +0 -1
- package/dist/shared/eventBus.js +0 -104
- package/dist/shared/eventBus.js.map +0 -1
- package/dist/shared/events.js +0 -73
- package/dist/shared/events.js.map +0 -1
- package/dist/shared/index.js +0 -8
- package/dist/shared/index.js.map +0 -1
- package/dist/types/context.js +0 -3
- package/dist/types/context.js.map +0 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/types/knowledge.js +0 -2
- package/dist/types/knowledge.js.map +0 -1
- package/dist/types/systemTypes.js +0 -10
- package/dist/types/systemTypes.js.map +0 -1
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { getBasePromptModules } from './promptModules';
|
|
2
|
-
import { resolveAgentSkills, getSkillById } from './skills';
|
|
3
|
-
/**
|
|
4
|
-
* System Prompt Builder.
|
|
5
|
-
*
|
|
6
|
-
* Assembles a dynamic system prompt for an agent from:
|
|
7
|
-
* 1. Base prompt modules (identity, behavior, safety, ...)
|
|
8
|
-
* 2. The agent's own inline systemPrompt (from roles.ts) — kept as a role-specific block.
|
|
9
|
-
* 3. The systemPromptFragment of each enabled skill for the agent.
|
|
10
|
-
* 4. The documentation block for the tools available to the agent.
|
|
11
|
-
* 5. Optional workspace context summary.
|
|
12
|
-
* 6. User-authored custom prompt modules.
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* Compute the effective skills for an agent, factoring in:
|
|
16
|
-
* - the agent's declared skills (roles.ts / custom)
|
|
17
|
-
* - the global enabledSkills list from the AI config (master switch)
|
|
18
|
-
* - the agentSkillConfigs override
|
|
19
|
-
*/
|
|
20
|
-
export function computeAgentSkills(agent, aiConfig, customSkills) {
|
|
21
|
-
const declared = agent.skills ?? resolveAgentSkills(agent.id).map((s) => s.id);
|
|
22
|
-
// Global master switch: if defined, skills must be globally enabled to apply.
|
|
23
|
-
const globalEnabled = aiConfig?.enabledSkills;
|
|
24
|
-
// Per-agent override
|
|
25
|
-
const override = aiConfig?.agentSkillConfigs.find((c) => c.agentId === agent.id);
|
|
26
|
-
let effectiveIds;
|
|
27
|
-
if (override) {
|
|
28
|
-
effectiveIds = override.enabledSkillIds;
|
|
29
|
-
}
|
|
30
|
-
else if (globalEnabled && globalEnabled.length > 0) {
|
|
31
|
-
effectiveIds = declared.filter((id) => globalEnabled.includes(id));
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
effectiveIds = declared;
|
|
35
|
-
}
|
|
36
|
-
// Custom skills that auto-attach to this agent.
|
|
37
|
-
const customs = customSkills ?? [];
|
|
38
|
-
for (const cs of customs) {
|
|
39
|
-
if (cs.enabled && cs.autoAttachTo?.includes(agent.id) && !effectiveIds.includes(cs.id)) {
|
|
40
|
-
effectiveIds.push(cs.id);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const builtin = effectiveIds
|
|
44
|
-
.map((id) => getSkillById(id))
|
|
45
|
-
.filter((s) => s !== undefined);
|
|
46
|
-
// Add custom skills as synthetic SkillDefinition (fragment will be injected
|
|
47
|
-
// in buildSystemPrompt via the `customSkillFragments` map).
|
|
48
|
-
const customDefs = [];
|
|
49
|
-
for (const cs of customs) {
|
|
50
|
-
if (!cs.enabled)
|
|
51
|
-
continue;
|
|
52
|
-
if (effectiveIds.includes(cs.id) && !builtin.find((b) => b.id === cs.id)) {
|
|
53
|
-
customDefs.push({
|
|
54
|
-
id: cs.id,
|
|
55
|
-
name: cs.name,
|
|
56
|
-
description: cs.description,
|
|
57
|
-
category: cs.category,
|
|
58
|
-
color: cs.color,
|
|
59
|
-
enabledByDefault: cs.enabled,
|
|
60
|
-
builtin: false,
|
|
61
|
-
requiredTools: cs.requiredTools,
|
|
62
|
-
systemPromptFragment: cs.systemPromptFragment,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return [...builtin, ...customDefs];
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Compute the effective tools for an agent: the union of the required tools
|
|
70
|
-
* of its enabled skills plus its declared tools, filtered by the global
|
|
71
|
-
* enabledTools master switch when present.
|
|
72
|
-
*/
|
|
73
|
-
export function computeAgentTools(agent, aiConfig) {
|
|
74
|
-
const skills = computeAgentSkills(agent, aiConfig);
|
|
75
|
-
const skillTools = skills.flatMap((s) => s.requiredTools);
|
|
76
|
-
const declared = agent.tools ?? [];
|
|
77
|
-
const merged = Array.from(new Set([...declared, ...skillTools]));
|
|
78
|
-
const globalEnabled = aiConfig?.enabledTools;
|
|
79
|
-
if (globalEnabled && globalEnabled.length > 0) {
|
|
80
|
-
return merged.filter((t) => globalEnabled.includes(t));
|
|
81
|
-
}
|
|
82
|
-
return merged;
|
|
83
|
-
}
|
|
84
|
-
/** Generate the AVAILABLE TOOLS documentation block for the given tools. */
|
|
85
|
-
export function getToolDescriptions(toolNames, registry) {
|
|
86
|
-
const lines = ['AVAILABLE TOOLS (use ONLY these exact names):'];
|
|
87
|
-
for (const name of toolNames) {
|
|
88
|
-
const tool = registry.get(name);
|
|
89
|
-
if (!tool)
|
|
90
|
-
continue;
|
|
91
|
-
// parameters may be either ToolParameter[] (builtin) or a plain JSON
|
|
92
|
-
// Schema object (custom tools). Build the param line accordingly.
|
|
93
|
-
let paramList;
|
|
94
|
-
if (Array.isArray(tool.parameters)) {
|
|
95
|
-
paramList = tool.parameters
|
|
96
|
-
.map((p) => `${p.name}:${p.type}`)
|
|
97
|
-
.join(', ');
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
const obj = tool.parameters;
|
|
101
|
-
paramList = Object.entries(obj.properties ?? {})
|
|
102
|
-
.map(([k, v]) => `${k}:${v.type ?? 'any'}`)
|
|
103
|
-
.join(', ');
|
|
104
|
-
}
|
|
105
|
-
lines.push(`- ${name}: ${tool.description} — args { ${paramList} }`);
|
|
106
|
-
}
|
|
107
|
-
return lines.join('\n');
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Build the full system prompt for an agent.
|
|
111
|
-
*/
|
|
112
|
-
export function buildSystemPrompt(agent, options) {
|
|
113
|
-
const { tools, toolNames, aiConfig, workspaceContext, ragContext } = options;
|
|
114
|
-
const registry = new Map(tools.map((t) => [t.name, t]));
|
|
115
|
-
// 1. Base modules (filtered by conditional predicates against the agent's skills)
|
|
116
|
-
const skills = computeAgentSkills(agent, aiConfig);
|
|
117
|
-
const baseModules = getBasePromptModules().filter((m) => !m.conditional || m.conditional(skills));
|
|
118
|
-
// 2. Custom user modules (always last, after base)
|
|
119
|
-
const customModules = (aiConfig?.customPromptModules ?? []).map((m) => ({
|
|
120
|
-
...m,
|
|
121
|
-
priority: 1000 + m.priority,
|
|
122
|
-
}));
|
|
123
|
-
const allModules = [...baseModules, ...customModules].sort((a, b) => a.priority - b.priority);
|
|
124
|
-
const parts = [];
|
|
125
|
-
for (const mod of allModules) {
|
|
126
|
-
parts.push(mod.content);
|
|
127
|
-
}
|
|
128
|
-
// 3. Agent's inline role prompt (role-specific persona)
|
|
129
|
-
if (agent.systemPrompt && agent.systemPrompt.trim()) {
|
|
130
|
-
parts.push(`# Your Role\n\n${agent.systemPrompt}`);
|
|
131
|
-
}
|
|
132
|
-
// 4. Skill prompt fragments
|
|
133
|
-
if (skills.length > 0) {
|
|
134
|
-
parts.push(`# Active Skills\n\n` +
|
|
135
|
-
skills.map((s) => `## ${s.name}\n${s.systemPromptFragment}`).join('\n\n'));
|
|
136
|
-
}
|
|
137
|
-
// 5. Tool documentation
|
|
138
|
-
const toolBlock = getToolDescriptions(toolNames, registry);
|
|
139
|
-
if (toolNames.length > 0) {
|
|
140
|
-
parts.push(`# Tools\n\n${toolBlock}`);
|
|
141
|
-
}
|
|
142
|
-
// 6. Context
|
|
143
|
-
if (workspaceContext && workspaceContext.trim()) {
|
|
144
|
-
parts.push(`# Current Workspace State\n\n${workspaceContext}`);
|
|
145
|
-
}
|
|
146
|
-
if (ragContext && ragContext.trim()) {
|
|
147
|
-
parts.push(`# Retrieved Knowledge (RAG)\n\n${ragContext}`);
|
|
148
|
-
}
|
|
149
|
-
return parts.join('\n\n---\n\n');
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=systemPromptBuilder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"systemPromptBuilder.js","sourceRoot":"","sources":["../../src/agents/systemPromptBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAI-compatible tool schemas for native function calling.
|
|
3
|
-
*
|
|
4
|
-
* These describe the 13 tools to the LLM providers (GLM/Z.AI and MiniMax) so
|
|
5
|
-
* the model can decide structurally — via `response.tool_calls` — when to
|
|
6
|
-
* invoke a tool, rather than emitting textual markers the client must parse.
|
|
7
|
-
*
|
|
8
|
-
* The descriptions are kept in sync with the unified `ALL_TOOLS` registry (the
|
|
9
|
-
* execution side) in `agents/tools.ts`. Names MUST match across the two
|
|
10
|
-
* modules; if a tool appears in the registry but has no schema here,
|
|
11
|
-
* `getProviderTools` will throw at build time (defensive).
|
|
12
|
-
*/
|
|
13
|
-
import { getAllTools, registerCustomTool } from './tools';
|
|
14
|
-
/**
|
|
15
|
-
* JSON Schema for each BUILTIN tool's parameters. Keyed by tool name. Custom
|
|
16
|
-
* tools (registered via `registerCustomTool`) carry their own JSON Schema
|
|
17
|
-
* inline (via `EnhancedToolDefinition.parameters`) and do not need an entry
|
|
18
|
-
* here.
|
|
19
|
-
*
|
|
20
|
-
* If a builtin tool appears here but is missing from the registry, this map
|
|
21
|
-
* is silently ignored. If a builtin tool appears in the registry but has no
|
|
22
|
-
* entry here, `getProviderTools` warns at runtime (defensive — registration
|
|
23
|
-
* ordering and missing entries used to be a build-time throw).
|
|
24
|
-
*/
|
|
25
|
-
const PARAM_SCHEMAS = {
|
|
26
|
-
createTask: {
|
|
27
|
-
type: 'object',
|
|
28
|
-
properties: {
|
|
29
|
-
title: { type: 'string', description: 'Short task title' },
|
|
30
|
-
description: { type: 'string', description: 'Detailed task description' },
|
|
31
|
-
priority: { type: 'string', enum: ['low', 'medium', 'high', 'critical'] },
|
|
32
|
-
phaseId: { type: 'string', description: 'ID of the phase this task belongs to' },
|
|
33
|
-
parentId: { type: 'string', description: 'ID of the parent task, if nested' },
|
|
34
|
-
tags: { type: 'array', items: { type: 'string' } },
|
|
35
|
-
subtasks: { type: 'array', items: { type: 'string' }, description: 'Subtask titles' },
|
|
36
|
-
},
|
|
37
|
-
required: ['title'],
|
|
38
|
-
},
|
|
39
|
-
addIdea: {
|
|
40
|
-
type: 'object',
|
|
41
|
-
properties: {
|
|
42
|
-
title: { type: 'string' },
|
|
43
|
-
content: { type: 'string', description: 'Full idea description' },
|
|
44
|
-
tags: { type: 'array', items: { type: 'string' } },
|
|
45
|
-
category: { type: 'string', description: 'e.g. "Product", "Research", "General"' },
|
|
46
|
-
},
|
|
47
|
-
required: ['title'],
|
|
48
|
-
},
|
|
49
|
-
createPhase: {
|
|
50
|
-
type: 'object',
|
|
51
|
-
properties: {
|
|
52
|
-
name: { type: 'string' },
|
|
53
|
-
description: { type: 'string' },
|
|
54
|
-
order: { type: 'number', description: 'Position of the phase in the plan' },
|
|
55
|
-
color: { type: 'string', description: 'Hex color, e.g. "#3b82f6"' },
|
|
56
|
-
},
|
|
57
|
-
required: ['name'],
|
|
58
|
-
},
|
|
59
|
-
buildMindMap: {
|
|
60
|
-
type: 'object',
|
|
61
|
-
properties: {
|
|
62
|
-
topic: { type: 'string', description: 'Central topic of the mind map' },
|
|
63
|
-
nodes: {
|
|
64
|
-
type: 'array',
|
|
65
|
-
description: 'Nodes to populate the map with',
|
|
66
|
-
items: {
|
|
67
|
-
type: 'object',
|
|
68
|
-
properties: {
|
|
69
|
-
label: { type: 'string' },
|
|
70
|
-
content: { type: 'string' },
|
|
71
|
-
},
|
|
72
|
-
required: ['label'],
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
required: ['topic'],
|
|
77
|
-
},
|
|
78
|
-
addNode: {
|
|
79
|
-
type: 'object',
|
|
80
|
-
properties: {
|
|
81
|
-
label: { type: 'string' },
|
|
82
|
-
content: { type: 'string' },
|
|
83
|
-
},
|
|
84
|
-
required: ['label'],
|
|
85
|
-
},
|
|
86
|
-
linkNodes: {
|
|
87
|
-
type: 'object',
|
|
88
|
-
properties: {
|
|
89
|
-
source: { type: 'string', description: 'Label or id of the source node' },
|
|
90
|
-
target: { type: 'string', description: 'Label or id of the target node' },
|
|
91
|
-
},
|
|
92
|
-
required: ['source', 'target'],
|
|
93
|
-
},
|
|
94
|
-
createDocument: {
|
|
95
|
-
type: 'object',
|
|
96
|
-
properties: {
|
|
97
|
-
title: { type: 'string', description: 'Title of the document' },
|
|
98
|
-
content: { type: 'string', description: 'Content of the document (markdown)' },
|
|
99
|
-
path: { type: 'string', description: 'Optional stabilized path, e.g. "notes/my-topic"' },
|
|
100
|
-
tags: { type: 'array', items: { type: 'string' } },
|
|
101
|
-
category: { type: 'string', description: 'Document category' },
|
|
102
|
-
},
|
|
103
|
-
required: ['title', 'content'],
|
|
104
|
-
},
|
|
105
|
-
updateDocument: {
|
|
106
|
-
type: 'object',
|
|
107
|
-
properties: {
|
|
108
|
-
id: { type: 'string', description: 'Document id to update' },
|
|
109
|
-
content: { type: 'string', description: 'New markdown content' },
|
|
110
|
-
title: { type: 'string', description: 'New title' },
|
|
111
|
-
tags: { type: 'array', items: { type: 'string' }, description: 'New tag list (replaces existing)' },
|
|
112
|
-
category: { type: 'string', description: 'New category' },
|
|
113
|
-
},
|
|
114
|
-
required: ['id'],
|
|
115
|
-
},
|
|
116
|
-
searchDocuments: {
|
|
117
|
-
type: 'object',
|
|
118
|
-
properties: {
|
|
119
|
-
query: { type: 'string', description: 'Free-text search query' },
|
|
120
|
-
tag: { type: 'string', description: 'Filter by tag' },
|
|
121
|
-
category: { type: 'string', description: 'Filter by category' },
|
|
122
|
-
limit: { type: 'number', description: 'Max results' },
|
|
123
|
-
},
|
|
124
|
-
required: [],
|
|
125
|
-
},
|
|
126
|
-
linkDocuments: {
|
|
127
|
-
type: 'object',
|
|
128
|
-
properties: {
|
|
129
|
-
sourceId: { type: 'string', description: 'Source document id' },
|
|
130
|
-
targetPathOrTitle: { type: 'string', description: 'Target document path or title' },
|
|
131
|
-
alias: { type: 'string', description: 'Optional display alias' },
|
|
132
|
-
},
|
|
133
|
-
required: ['sourceId', 'targetPathOrTitle'],
|
|
134
|
-
},
|
|
135
|
-
getDocumentBacklinks: {
|
|
136
|
-
type: 'object',
|
|
137
|
-
properties: {
|
|
138
|
-
id: { type: 'string', description: 'Target document id' },
|
|
139
|
-
},
|
|
140
|
-
required: ['id'],
|
|
141
|
-
},
|
|
142
|
-
searchRAG: {
|
|
143
|
-
type: 'object',
|
|
144
|
-
properties: {
|
|
145
|
-
query: { type: 'string', description: 'Natural-language query' },
|
|
146
|
-
topK: { type: 'number', description: 'Number of results to return' },
|
|
147
|
-
},
|
|
148
|
-
required: ['query'],
|
|
149
|
-
},
|
|
150
|
-
createMindMapNode: {
|
|
151
|
-
type: 'object',
|
|
152
|
-
properties: {
|
|
153
|
-
label: { type: 'string', description: 'Node label' },
|
|
154
|
-
content: { type: 'string', description: 'Short node content/description' },
|
|
155
|
-
},
|
|
156
|
-
required: ['label'],
|
|
157
|
-
},
|
|
158
|
-
createMilestone: {
|
|
159
|
-
type: 'object',
|
|
160
|
-
properties: {
|
|
161
|
-
title: { type: 'string', description: 'Milestone title' },
|
|
162
|
-
description: { type: 'string', description: 'Milestone description' },
|
|
163
|
-
dueDate: { type: 'string', description: 'Due date (ISO string)' },
|
|
164
|
-
},
|
|
165
|
-
required: ['title'],
|
|
166
|
-
},
|
|
167
|
-
updateTask: {
|
|
168
|
-
type: 'object',
|
|
169
|
-
properties: {
|
|
170
|
-
taskId: { type: 'string', description: 'Task id to update' },
|
|
171
|
-
status: { type: 'string', enum: ['todo', 'in-progress', 'done', 'blocked'] },
|
|
172
|
-
priority: { type: 'string', enum: ['low', 'medium', 'high', 'critical'] },
|
|
173
|
-
description: { type: 'string', description: 'New description' },
|
|
174
|
-
},
|
|
175
|
-
required: ['taskId'],
|
|
176
|
-
},
|
|
177
|
-
clusterIdeas: {
|
|
178
|
-
type: 'object',
|
|
179
|
-
properties: {
|
|
180
|
-
ideaIds: { type: 'array', items: { type: 'string' }, description: 'Idea ids to cluster' },
|
|
181
|
-
clusterName: { type: 'string', description: 'Name for the new cluster' },
|
|
182
|
-
color: { type: 'string', description: 'Cluster color (hex)' },
|
|
183
|
-
},
|
|
184
|
-
required: ['ideaIds', 'clusterName'],
|
|
185
|
-
},
|
|
186
|
-
};
|
|
187
|
-
/** Build a JSON Schema for a custom tool from its declared parameters. */
|
|
188
|
-
function buildCustomParameters(tool) {
|
|
189
|
-
const properties = {};
|
|
190
|
-
for (const [k, v] of Object.entries(tool.parameters.properties)) {
|
|
191
|
-
const prop = { type: v.type };
|
|
192
|
-
if (v.description)
|
|
193
|
-
prop['description'] = v.description;
|
|
194
|
-
if (v.enum)
|
|
195
|
-
prop['enum'] = v.enum;
|
|
196
|
-
properties[k] = prop;
|
|
197
|
-
}
|
|
198
|
-
return {
|
|
199
|
-
type: tool.parameters.type,
|
|
200
|
-
properties,
|
|
201
|
-
required: tool.parameters.required,
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Builds the OpenAI-style tool list from the current tool registry (read at
|
|
206
|
-
* call time, so it always reflects the latest custom registrations).
|
|
207
|
-
*
|
|
208
|
-
* @param toolNames Optional allow-list. When provided, only tools whose name
|
|
209
|
-
* appears in the list are returned — used to grant per-agent tool access.
|
|
210
|
-
* When omitted, all registered tools are returned.
|
|
211
|
-
*/
|
|
212
|
-
export function getProviderTools(toolNames) {
|
|
213
|
-
const all = getAllTools();
|
|
214
|
-
const source = toolNames && toolNames.length > 0
|
|
215
|
-
? all.filter((t) => toolNames.includes(t.name))
|
|
216
|
-
: all;
|
|
217
|
-
const result = [];
|
|
218
|
-
for (const t of source) {
|
|
219
|
-
const builtinSchema = PARAM_SCHEMAS[t.name];
|
|
220
|
-
const customParams = t.parameters;
|
|
221
|
-
const parameters = builtinSchema ||
|
|
222
|
-
(customParams ? customParams : null) ||
|
|
223
|
-
(Array.isArray(t.parameters)
|
|
224
|
-
? null
|
|
225
|
-
: null);
|
|
226
|
-
if (!parameters) {
|
|
227
|
-
// Custom tool with no schema declared: skip (defensive — never reach LLM
|
|
228
|
-
// with an undocumented function call).
|
|
229
|
-
// eslint-disable-next-line no-console
|
|
230
|
-
console.warn(`[toolSchemas] tool "${t.name}" has no JSON Schema; skipping.`);
|
|
231
|
-
continue;
|
|
232
|
-
}
|
|
233
|
-
result.push({
|
|
234
|
-
type: 'function',
|
|
235
|
-
function: {
|
|
236
|
-
name: t.name,
|
|
237
|
-
description: t.description,
|
|
238
|
-
parameters,
|
|
239
|
-
},
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
return result;
|
|
243
|
-
}
|
|
244
|
-
/** Build parameters schema from a custom tool's declared params. Exported
|
|
245
|
-
* for callers that want to register a custom tool + its schema in one go. */
|
|
246
|
-
export { buildCustomParameters };
|
|
247
|
-
/** Re-export for callers that want to register custom tools at runtime. */
|
|
248
|
-
export { registerCustomTool };
|
|
249
|
-
//# sourceMappingURL=toolSchemas.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toolSchemas.js","sourceRoot":"","sources":["../../src/agents/toolSchemas.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/tools.js
DELETED
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import { VAULT_TOOL_DEFINITIONS } from './vaultTools';
|
|
2
|
-
import { ADVANCED_TOOL_DEFINITIONS } from './advancedTools';
|
|
3
|
-
export const TOOL_DEFINITIONS = [
|
|
4
|
-
{
|
|
5
|
-
name: 'createTask',
|
|
6
|
-
description: 'Create a new task in the project planner',
|
|
7
|
-
execute: (args, ctx) => {
|
|
8
|
-
ctx.addTask({
|
|
9
|
-
phaseId: args['phaseId'] ?? undefined,
|
|
10
|
-
parentId: args['parentId'] ?? undefined,
|
|
11
|
-
title: args['title'] ?? 'New Task',
|
|
12
|
-
description: args['description'] ?? '',
|
|
13
|
-
status: 'todo',
|
|
14
|
-
priority: args['priority'] ?? 'medium',
|
|
15
|
-
tags: args['tags'] ?? [],
|
|
16
|
-
dependsOn: [],
|
|
17
|
-
subtasks: (args['subtasks'] ?? []).map((s) => ({ id: crypto.randomUUID().slice(0, 8), title: s, done: false })),
|
|
18
|
-
});
|
|
19
|
-
ctx.addActivity('task', 'created', args['title'] ?? 'New Task');
|
|
20
|
-
return `Task "${args['title']}" created successfully.`;
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
name: 'addIdea',
|
|
25
|
-
description: 'Add a new idea to the idea generator',
|
|
26
|
-
execute: (args, ctx) => {
|
|
27
|
-
ctx.addIdea({
|
|
28
|
-
title: args['title'] ?? 'New Idea',
|
|
29
|
-
content: args['content'] ?? '',
|
|
30
|
-
tags: args['tags'] ?? [],
|
|
31
|
-
category: args['category'] ?? 'General',
|
|
32
|
-
});
|
|
33
|
-
ctx.addActivity('idea', 'created', args['title'] ?? 'New Idea');
|
|
34
|
-
return `Idea "${args['title']}" added successfully.`;
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: 'createPhase',
|
|
39
|
-
description: 'Create a new project phase',
|
|
40
|
-
execute: (args, ctx) => {
|
|
41
|
-
ctx.addPhase({
|
|
42
|
-
name: args['name'] ?? 'New Phase',
|
|
43
|
-
description: args['description'] ?? '',
|
|
44
|
-
order: args['order'] ?? 0,
|
|
45
|
-
color: args['color'] ?? '#3b82f6',
|
|
46
|
-
progress: 0,
|
|
47
|
-
});
|
|
48
|
-
ctx.addActivity('project', 'phase created', args['name'] ?? 'New Phase');
|
|
49
|
-
return `Phase "${args['name']}" created.`;
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
name: 'buildMindMap',
|
|
54
|
-
description: 'Generate or update the mind map',
|
|
55
|
-
execute: (args, ctx) => {
|
|
56
|
-
ctx.updateMindMap('build', args);
|
|
57
|
-
ctx.addActivity('mindmap', 'generated', 'Mind map updated');
|
|
58
|
-
return 'Mind map structure generated. Apply it in the Mind Map view.';
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
name: 'addNode',
|
|
63
|
-
description: 'Add a node to the mind map',
|
|
64
|
-
execute: (args, ctx) => {
|
|
65
|
-
ctx.updateMindMap('addNode', args);
|
|
66
|
-
return `Node "${args['label']}" added to mind map.`;
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
name: 'linkNodes',
|
|
71
|
-
description: 'Link two nodes in the mind map',
|
|
72
|
-
execute: (args, ctx) => {
|
|
73
|
-
ctx.updateMindMap('link', args);
|
|
74
|
-
return `Nodes linked: ${args['source']} → ${args['target']}`;
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
name: 'createDocument',
|
|
79
|
-
description: 'Create a new markdown document in the knowledge vault',
|
|
80
|
-
execute: (args, ctx) => {
|
|
81
|
-
if (!ctx.addDocument)
|
|
82
|
-
return 'Knowledge vault tool not available.';
|
|
83
|
-
const title = args['title'] || 'New Document';
|
|
84
|
-
const path = args['path'] || `notes/${title.toLowerCase().replace(/[^a-z0-9]+/g, '-')}`;
|
|
85
|
-
const content = args['content'] || '';
|
|
86
|
-
const tags = args['tags'] || [];
|
|
87
|
-
ctx.addDocument({
|
|
88
|
-
path,
|
|
89
|
-
title,
|
|
90
|
-
content,
|
|
91
|
-
format: 'markdown',
|
|
92
|
-
tags,
|
|
93
|
-
frontmatter: {},
|
|
94
|
-
workspaceId: ctx.workspaceId,
|
|
95
|
-
});
|
|
96
|
-
ctx.addActivity('vault', 'created document', title);
|
|
97
|
-
return `Document "${title}" created at "${path}".`;
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
];
|
|
101
|
-
/**
|
|
102
|
-
* Unified tool registry: core + vault + advanced tools.
|
|
103
|
-
*
|
|
104
|
-
* The vault version of `createDocument` (richer parameter schema) takes
|
|
105
|
-
* precedence over the legacy core stub, so we dedupe by name. This single
|
|
106
|
-
* registry is the source of truth for tool execution, validation and prompt
|
|
107
|
-
* documentation.
|
|
108
|
-
*
|
|
109
|
-
* The registry is MUTABLE: `registerCustomTool` adds user-defined tools
|
|
110
|
-
* (custom skills / MCP servers) at runtime. The `TOOL_BY_NAME` map is rebuilt
|
|
111
|
-
* lazily after each registration.
|
|
112
|
-
*/
|
|
113
|
-
/** Core planner/mindmap tools adapted for the enhanced tool registry. */
|
|
114
|
-
const CORE_TOOL_DEFINITIONS = TOOL_DEFINITIONS.map((tool) => ({
|
|
115
|
-
name: tool.name,
|
|
116
|
-
description: tool.description,
|
|
117
|
-
category: 'core',
|
|
118
|
-
parameters: [],
|
|
119
|
-
execute: tool.execute,
|
|
120
|
-
}));
|
|
121
|
-
/** Initial builtin registry (computed once). */
|
|
122
|
-
function buildBuiltinRegistry() {
|
|
123
|
-
const seen = new Set();
|
|
124
|
-
const merged = [];
|
|
125
|
-
for (const tool of [...VAULT_TOOL_DEFINITIONS, ...ADVANCED_TOOL_DEFINITIONS, ...CORE_TOOL_DEFINITIONS]) {
|
|
126
|
-
if (seen.has(tool.name))
|
|
127
|
-
continue;
|
|
128
|
-
seen.add(tool.name);
|
|
129
|
-
merged.push(tool);
|
|
130
|
-
}
|
|
131
|
-
return merged;
|
|
132
|
-
}
|
|
133
|
-
let _allTools = buildBuiltinRegistry();
|
|
134
|
-
let _toolByName = new Map(_allTools.map((t) => [t.name, t]));
|
|
135
|
-
let _validToolNames = new Set(_toolByName.keys());
|
|
136
|
-
function rebuildIndex() {
|
|
137
|
-
_toolByName = new Map(_allTools.map((t) => [t.name, t]));
|
|
138
|
-
_validToolNames = new Set(_toolByName.keys());
|
|
139
|
-
}
|
|
140
|
-
/** Read-only snapshot of the current registry (always a fresh array). */
|
|
141
|
-
export function getAllTools() {
|
|
142
|
-
return [..._allTools];
|
|
143
|
-
}
|
|
144
|
-
/** Register a custom tool (user-defined or MCP-discovered). If a tool with
|
|
145
|
-
* the same name already exists, it is replaced. */
|
|
146
|
-
export function registerCustomTool(def) {
|
|
147
|
-
const idx = _allTools.findIndex((t) => t.name === def.name);
|
|
148
|
-
if (idx >= 0)
|
|
149
|
-
_allTools[idx] = def;
|
|
150
|
-
else
|
|
151
|
-
_allTools.push(def);
|
|
152
|
-
rebuildIndex();
|
|
153
|
-
}
|
|
154
|
-
/** Remove a custom tool by name. No-op if not present. */
|
|
155
|
-
export function unregisterCustomTool(name) {
|
|
156
|
-
const idx = _allTools.findIndex((t) => t.name === name);
|
|
157
|
-
if (idx < 0)
|
|
158
|
-
return;
|
|
159
|
-
_allTools.splice(idx, 1);
|
|
160
|
-
rebuildIndex();
|
|
161
|
-
}
|
|
162
|
-
/** Wipe ALL custom tools (used on app boot before re-registering active ones). */
|
|
163
|
-
export function clearCustomTools() {
|
|
164
|
-
_allTools = buildBuiltinRegistry();
|
|
165
|
-
rebuildIndex();
|
|
166
|
-
}
|
|
167
|
-
/** Backwards-compat: keeps ALL_TOOLS as a live reference for legacy imports. */
|
|
168
|
-
export const ALL_TOOLS = new Proxy([], {
|
|
169
|
-
get: (_target, prop) => {
|
|
170
|
-
// Support `ALL_TOOLS.length`, `.filter`, `.map`, `.find` by deferring to the live array.
|
|
171
|
-
return Reflect.get(_allTools, prop);
|
|
172
|
-
},
|
|
173
|
-
});
|
|
174
|
-
export function isValidTool(name) {
|
|
175
|
-
return _validToolNames.has(name);
|
|
176
|
-
}
|
|
177
|
-
export async function executeTool(name, args, context) {
|
|
178
|
-
const tool = _toolByName.get(name);
|
|
179
|
-
if (!tool)
|
|
180
|
-
return null;
|
|
181
|
-
const safeArgs = args && typeof args === 'object' ? args : {};
|
|
182
|
-
try {
|
|
183
|
-
const result = tool.execute(safeArgs, context);
|
|
184
|
-
return await Promise.resolve(result);
|
|
185
|
-
}
|
|
186
|
-
catch (err) {
|
|
187
|
-
return `Tool "${name}" failed: ${err instanceof Error ? err.message : 'Unknown error'}`;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
/** Resolve a list of tool names to their definitions (skipping unknown ones). */
|
|
191
|
-
export function getAvailableTools(toolNames) {
|
|
192
|
-
return toolNames
|
|
193
|
-
.map((name) => _toolByName.get(name))
|
|
194
|
-
.filter((t) => t !== undefined);
|
|
195
|
-
}
|
|
196
|
-
//# sourceMappingURL=tools.js.map
|
package/dist/agents/tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/agents/tools.ts"],"names":[],"mappings":"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"}
|