zelari-code 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +156 -0
- package/bin/zelari-code.js +64 -0
- package/dist/agents/advancedTools.js +115 -0
- package/dist/agents/advancedTools.js.map +1 -0
- package/dist/agents/councilApi.js +375 -0
- package/dist/agents/councilApi.js.map +1 -0
- package/dist/agents/councilDirectives.js +100 -0
- package/dist/agents/councilDirectives.js.map +1 -0
- package/dist/agents/promoteMember.js +210 -0
- package/dist/agents/promoteMember.js.map +1 -0
- package/dist/agents/promptModules.js +139 -0
- package/dist/agents/promptModules.js.map +1 -0
- package/dist/agents/roles.js +281 -0
- package/dist/agents/roles.js.map +1 -0
- package/dist/agents/skills/builtin/debugging.js +248 -0
- package/dist/agents/skills/builtin/debugging.js.map +1 -0
- package/dist/agents/skills/builtin/docs.js +301 -0
- package/dist/agents/skills/builtin/docs.js.map +1 -0
- package/dist/agents/skills/builtin/git-ops.js +301 -0
- package/dist/agents/skills/builtin/git-ops.js.map +1 -0
- package/dist/agents/skills/builtin/planning.js +335 -0
- package/dist/agents/skills/builtin/planning.js.map +1 -0
- package/dist/agents/skills/builtin/refactoring.js +261 -0
- package/dist/agents/skills/builtin/refactoring.js.map +1 -0
- package/dist/agents/skills/builtin/review.js +302 -0
- package/dist/agents/skills/builtin/review.js.map +1 -0
- package/dist/agents/skills/builtin/testing.js +245 -0
- package/dist/agents/skills/builtin/testing.js.map +1 -0
- package/dist/agents/skills.js +272 -0
- package/dist/agents/skills.js.map +1 -0
- package/dist/agents/systemPromptBuilder.js +151 -0
- package/dist/agents/systemPromptBuilder.js.map +1 -0
- package/dist/agents/toolSchemas.js +249 -0
- package/dist/agents/toolSchemas.js.map +1 -0
- package/dist/agents/tools.js +196 -0
- package/dist/agents/tools.js.map +1 -0
- package/dist/agents/vaultTools.js +134 -0
- package/dist/agents/vaultTools.js.map +1 -0
- package/dist/cli/app.js +1823 -0
- package/dist/cli/app.js.map +1 -0
- package/dist/cli/branchManager.js +280 -0
- package/dist/cli/branchManager.js.map +1 -0
- package/dist/cli/compaction.js +63 -0
- package/dist/cli/compaction.js.map +1 -0
- package/dist/cli/components/ChatStream.js +23 -0
- package/dist/cli/components/ChatStream.js.map +1 -0
- package/dist/cli/components/CollapsibleToolOutput.js +38 -0
- package/dist/cli/components/CollapsibleToolOutput.js.map +1 -0
- package/dist/cli/components/Header.js +31 -0
- package/dist/cli/components/Header.js.map +1 -0
- package/dist/cli/components/InputBar.js +9 -0
- package/dist/cli/components/InputBar.js.map +1 -0
- package/dist/cli/components/Sidebar.js +17 -0
- package/dist/cli/components/Sidebar.js.map +1 -0
- package/dist/cli/councilCost.js +81 -0
- package/dist/cli/councilCost.js.map +1 -0
- package/dist/cli/councilDispatcher.js +56 -0
- package/dist/cli/councilDispatcher.js.map +1 -0
- package/dist/cli/councilFeedback.js +164 -0
- package/dist/cli/councilFeedback.js.map +1 -0
- package/dist/cli/crossProviderFailover.js +83 -0
- package/dist/cli/crossProviderFailover.js.map +1 -0
- package/dist/cli/gitOps.js +96 -0
- package/dist/cli/gitOps.js.map +1 -0
- package/dist/cli/grokOAuth.js +375 -0
- package/dist/cli/grokOAuth.js.map +1 -0
- package/dist/cli/keyStore.js +263 -0
- package/dist/cli/keyStore.js.map +1 -0
- package/dist/cli/keyValidator.js +83 -0
- package/dist/cli/keyValidator.js.map +1 -0
- package/dist/cli/main.bundled.js +21428 -0
- package/dist/cli/main.bundled.js.map +7 -0
- package/dist/cli/main.js +72 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/metrics.js +131 -0
- package/dist/cli/metrics.js.map +1 -0
- package/dist/cli/modelDiscovery.js +234 -0
- package/dist/cli/modelDiscovery.js.map +1 -0
- package/dist/cli/modelPricing.js +112 -0
- package/dist/cli/modelPricing.js.map +1 -0
- package/dist/cli/oauthCallbackServer.js +207 -0
- package/dist/cli/oauthCallbackServer.js.map +1 -0
- package/dist/cli/provider/openai-compatible.js +236 -0
- package/dist/cli/provider/openai-compatible.js.map +1 -0
- package/dist/cli/providerConfig.js +210 -0
- package/dist/cli/providerConfig.js.map +1 -0
- package/dist/cli/providerFailover.js +90 -0
- package/dist/cli/providerFailover.js.map +1 -0
- package/dist/cli/refreshRegistry.js +77 -0
- package/dist/cli/refreshRegistry.js.map +1 -0
- package/dist/cli/safety/auditLogger.js +111 -0
- package/dist/cli/safety/auditLogger.js.map +1 -0
- package/dist/cli/safety/sandboxPath.js +62 -0
- package/dist/cli/safety/sandboxPath.js.map +1 -0
- package/dist/cli/safety/shellBlocklist.js +71 -0
- package/dist/cli/safety/shellBlocklist.js.map +1 -0
- package/dist/cli/sessionManager.js +149 -0
- package/dist/cli/sessionManager.js.map +1 -0
- package/dist/cli/skillCache.js +205 -0
- package/dist/cli/skillCache.js.map +1 -0
- package/dist/cli/skillHistory.js +178 -0
- package/dist/cli/skillHistory.js.map +1 -0
- package/dist/cli/skillSuggest.js +132 -0
- package/dist/cli/skillSuggest.js.map +1 -0
- package/dist/cli/slashCommands.js +431 -0
- package/dist/cli/slashCommands.js.map +1 -0
- package/dist/cli/toolRegistry.js +187 -0
- package/dist/cli/toolRegistry.js.map +1 -0
- package/dist/cli/updater.js +157 -0
- package/dist/cli/updater.js.map +1 -0
- package/dist/main/core/AgentHarness.js +345 -0
- package/dist/main/core/AgentHarness.js.map +1 -0
- package/dist/main/core/providerStream.js +99 -0
- package/dist/main/core/providerStream.js.map +1 -0
- package/dist/main/core/sessionJsonl.js +99 -0
- package/dist/main/core/sessionJsonl.js.map +1 -0
- package/dist/main/core/tools/auditLog.js +26 -0
- package/dist/main/core/tools/auditLog.js.map +1 -0
- package/dist/main/core/tools/builtin/filesystem.js +110 -0
- package/dist/main/core/tools/builtin/filesystem.js.map +1 -0
- package/dist/main/core/tools/builtin/search.js +56 -0
- package/dist/main/core/tools/builtin/search.js.map +1 -0
- package/dist/main/core/tools/builtin/shell.js +51 -0
- package/dist/main/core/tools/builtin/shell.js.map +1 -0
- package/dist/main/core/tools/registry.js +71 -0
- package/dist/main/core/tools/registry.js.map +1 -0
- package/dist/main/core/tools/toolTypes.js +8 -0
- package/dist/main/core/tools/toolTypes.js.map +1 -0
- package/dist/main/core/tools/zodBridge.js +48 -0
- package/dist/main/core/tools/zodBridge.js.map +1 -0
- package/dist/shared/eventBus.js +104 -0
- package/dist/shared/eventBus.js.map +1 -0
- package/dist/shared/events.js +73 -0
- package/dist/shared/events.js.map +1 -0
- package/dist/shared/index.js +8 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/types/context.js +3 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/knowledge.js +2 -0
- package/dist/types/knowledge.js.map +1 -0
- package/dist/types/systemTypes.js +10 -0
- package/dist/types/systemTypes.js.map +1 -0
- package/package.json +63 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 N-THEM Studio
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Zelari Code
|
|
2
|
+
|
|
3
|
+
> AI Council coding agent CLI — multi-agent orchestration with slash commands, provider-agnostic LLM streaming, and self-update.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
**Zelari Code** is a standalone CLI extracted from [AnathemaBrain](https://github.com/N-THEM-Studio/AnathemaBrain). It brings the multi-agent council (Sisyphus, Prometheus, Hephaestus, Atlas, Oracle, Chairman) directly into your terminal with a rich TUI (Ink + React), slash command system, and provider-agnostic LLM streaming (OpenAI-compatible, xAI Grok with OAuth, GLM/Z.AI).
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g zelari-code
|
|
15
|
+
zelari-code
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Requires **Node.js ≥ 20**.
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Set your OpenAI-compatible API key (OpenAI, Together, Groq, custom endpoint, etc.)
|
|
24
|
+
export OPENAI_API_KEY=sk-...
|
|
25
|
+
|
|
26
|
+
# Or use Grok via OAuth
|
|
27
|
+
zelari-code
|
|
28
|
+
# Inside the TUI: /key grok (then follow the OAuth flow)
|
|
29
|
+
|
|
30
|
+
# Or use GLM/Z.AI
|
|
31
|
+
export GLM_API_KEY=...
|
|
32
|
+
|
|
33
|
+
# Run zelari-code from any directory
|
|
34
|
+
zelari-code
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Slash Commands
|
|
38
|
+
|
|
39
|
+
| Command | Description |
|
|
40
|
+
|---|---|
|
|
41
|
+
| `/help` | List all available commands |
|
|
42
|
+
| `/skill <name>` | Invoke a coding skill (refactoring, testing, debugging, review, planning, docs, git-ops) |
|
|
43
|
+
| `/skills` | List available skills |
|
|
44
|
+
| `/skill-suggest <query>` | Get skill suggestions for a coding task |
|
|
45
|
+
| `/skill-history` | Show skill invocation history |
|
|
46
|
+
| `/skill-compare <id1> <id2>` | Compare two skills' stats |
|
|
47
|
+
| `/provider` | Show/set active LLM provider |
|
|
48
|
+
| `/model <model>` | Set model for current provider |
|
|
49
|
+
| `/key <provider>` | Set API key (or start OAuth flow for Grok) |
|
|
50
|
+
| `/cost` | Show session cost breakdown |
|
|
51
|
+
| `/compact` | Compact the chat transcript |
|
|
52
|
+
| `/session` | Show session info |
|
|
53
|
+
| `/sessions` | List past sessions |
|
|
54
|
+
| `/resume [id]` | Resume a past session |
|
|
55
|
+
| `/branch [name]` | Create/list/switch git branches |
|
|
56
|
+
| `/diff` | Show working diff |
|
|
57
|
+
| `/undo` | Undo working changes |
|
|
58
|
+
| `/update` | Check for CLI updates |
|
|
59
|
+
| `/update --yes` | Apply update |
|
|
60
|
+
| `/update force` | Reinstall latest version |
|
|
61
|
+
| `/steer <text>` | Queue follow-up prompt during active run |
|
|
62
|
+
| `/steer --interrupt <text>` | Cancel current run + enqueue prompt |
|
|
63
|
+
| `/promote-member <role>` | Promote a council member (role depth system) |
|
|
64
|
+
| `/council` | Dispatch council task |
|
|
65
|
+
| `/quit` / `/exit` | Exit the CLI |
|
|
66
|
+
|
|
67
|
+
## Self-Update
|
|
68
|
+
|
|
69
|
+
Zelari Code includes a built-in update mechanism:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Inside the TUI:
|
|
73
|
+
/update # check for updates (prints current vs latest)
|
|
74
|
+
/update --yes # apply update (runs npm install -g zelari-code@latest)
|
|
75
|
+
/update force # reinstall latest (even if already on latest)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
On startup, the CLI silently checks the npm registry. If a newer version is available, it prints a one-line hint to stderr.
|
|
79
|
+
|
|
80
|
+
Disable auto-check: `ZELARI_DEV=1 zelari-code`
|
|
81
|
+
|
|
82
|
+
## Features
|
|
83
|
+
|
|
84
|
+
- 🤖 **Multi-agent council** — 6 roles (Sisyphus, Prometheus, Hephaestus, Atlas, Oracle, Chairman) with feedback loops and member promotion
|
|
85
|
+
- 🎨 **Rich TUI** — Ink + React multi-panel interface (header, chat stream, sidebar, input bar)
|
|
86
|
+
- 🧠 **Provider-agnostic** — OpenAI-compatible APIs (OpenAI, Together, Groq, custom), xAI Grok with OAuth refresh, GLM/Z.AI
|
|
87
|
+
- 🛠️ **Built-in tools** — filesystem (read/write/edit), shell (bash), search (grep), git operations
|
|
88
|
+
- 📚 **7 coding skills** — refactoring, testing, debugging, review, planning, docs, git-ops
|
|
89
|
+
- 🔄 **Cross-provider failover** — automatic retry with provider swap on transient errors
|
|
90
|
+
- 💰 **Cost tracking** — per-turn + cumulative USD cost via model pricing registry
|
|
91
|
+
- 📊 **Metrics + skill history** — fire-and-forget logging to `~/.tmp/zelari-code/`
|
|
92
|
+
- 🗜️ **Session management** — JSONL transcripts, resume across restarts, compaction
|
|
93
|
+
- 🌿 **Branch isolation** — worktree-per-session mode for safe experimentation
|
|
94
|
+
- 🔌 **Slash command system** — 30+ commands for skill invocation, provider config, cost, sessions, etc.
|
|
95
|
+
- 🆕 **Self-update** — `/update` slash command + silent registry check on startup
|
|
96
|
+
|
|
97
|
+
## Architecture
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
zelari-code (CLI)
|
|
101
|
+
├── src/cli/ # Ink UI (app.tsx, slashCommands.ts, updater.ts, …)
|
|
102
|
+
│ ├── components/ # Header, ChatStream, InputBar, Sidebar, …
|
|
103
|
+
│ ├── provider/ # OpenAI-compatible adapter
|
|
104
|
+
│ └── …
|
|
105
|
+
├── src/agents/ # Council (councilApi), skills registry, promoteMember
|
|
106
|
+
├── src/main/core/ # AgentHarness (provider-neutral agent loop)
|
|
107
|
+
│ └── tools/ # Tool registry + filesystem/shell/search builtins
|
|
108
|
+
├── src/shared/ # BrainEvent types (provider-neutral event contract)
|
|
109
|
+
└── src/types/ # Workspace, context, knowledge types
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
`AgentHarness` is the core: it takes (model, provider, messages, tools) + a streaming function and yields an `AsyncIterable<BrainEvent>`. The CLI subscribes to the event stream and updates the chat transcript via `eventsToMessages()`.
|
|
113
|
+
|
|
114
|
+
## Environment Variables
|
|
115
|
+
|
|
116
|
+
| Variable | Description |
|
|
117
|
+
|---|---|
|
|
118
|
+
| `OPENAI_API_KEY` | OpenAI API key |
|
|
119
|
+
| `OPENAI_MODEL` | Default model (default: `grok-4`) |
|
|
120
|
+
| `OPENAI_BASE_URL` | Custom OpenAI-compatible endpoint |
|
|
121
|
+
| `GLM_API_KEY` | GLM/Z.AI API key |
|
|
122
|
+
| `GROK_API_KEY` | xAI Grok API key (alternative to OAuth) |
|
|
123
|
+
| `ZELARI_DEV=1` | Disable silent update check on startup |
|
|
124
|
+
| `ANATHEMA_FAILOVER=0` | Disable cross-provider failover |
|
|
125
|
+
|
|
126
|
+
## Development
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
git clone https://github.com/N-THEM-Studio/zelari-code.git
|
|
130
|
+
cd zelari-code
|
|
131
|
+
npm install
|
|
132
|
+
npm run build:cli
|
|
133
|
+
npm link
|
|
134
|
+
zelari-code
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Run tests
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npm test
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Typecheck
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npm run typecheck
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Related Projects
|
|
150
|
+
|
|
151
|
+
- [AnathemaBrain](https://github.com/N-THEM-Studio/AnathemaBrain) — the Electron desktop GUI that shares the agent runtime + council system with this CLI
|
|
152
|
+
- Zelari Coder originated as the `npm run coder` script inside AnathemaBrain
|
|
153
|
+
|
|
154
|
+
## License
|
|
155
|
+
|
|
156
|
+
MIT © 2026 [N-THEM Studio](https://github.com/N-THEM-Studio)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* zelari-code — npm bin entrypoint.
|
|
4
|
+
*
|
|
5
|
+
* Spawned by npm when running `zelari-code` from anywhere after
|
|
6
|
+
* `npm install -g zelari-code`. Resolves to the compiled CLI bundle
|
|
7
|
+
* (tsc + esbuild output) OR falls back to tsx (dev/source workflow).
|
|
8
|
+
*
|
|
9
|
+
* Strategy:
|
|
10
|
+
* 1. If `dist/cli/main.bundled.js` exists (production build), require it.
|
|
11
|
+
* 2. Otherwise (dev/source install), use tsx to run the TS source directly.
|
|
12
|
+
*
|
|
13
|
+
* This means `npm install -g .` from a clone works (dev install), AND
|
|
14
|
+
* `npm install -g zelari-code` from the registry works (production).
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { createRequire } from 'node:module';
|
|
18
|
+
import { existsSync } from 'node:fs';
|
|
19
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
20
|
+
import path from 'node:path';
|
|
21
|
+
|
|
22
|
+
const require = createRequire(import.meta.url);
|
|
23
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
24
|
+
|
|
25
|
+
// Helper: convert Windows absolute path to file:// URL for dynamic import()
|
|
26
|
+
const toImportURL = (p) => pathToFileURL(p).href;
|
|
27
|
+
|
|
28
|
+
// Resolve the package root (this file lives at <pkg>/bin/zelari-code.js)
|
|
29
|
+
const pkgRoot = path.resolve(__dirname, '..');
|
|
30
|
+
|
|
31
|
+
const compiledBundled = path.join(pkgRoot, 'dist', 'cli', 'main.bundled.js');
|
|
32
|
+
const compiledMain = path.join(pkgRoot, 'dist', 'cli', 'main.js');
|
|
33
|
+
const compiledApp = path.join(pkgRoot, 'dist', 'cli', 'app.js');
|
|
34
|
+
const tsSource = path.join(pkgRoot, 'src', 'cli', 'main.ts');
|
|
35
|
+
|
|
36
|
+
if (existsSync(compiledBundled)) {
|
|
37
|
+
// Production path: esbuild-bundled self-contained ESM (includes .tsx)
|
|
38
|
+
await import(toImportURL(compiledBundled));
|
|
39
|
+
} else if (existsSync(compiledMain) && existsSync(compiledApp)) {
|
|
40
|
+
// Production path (legacy): tsc-only emit (only .ts, requires .tsx to be absent)
|
|
41
|
+
await import(toImportURL(compiledMain));
|
|
42
|
+
} else if (existsSync(tsSource)) {
|
|
43
|
+
// Dev/source install path: use tsx
|
|
44
|
+
try {
|
|
45
|
+
require('tsx/esm/api');
|
|
46
|
+
await import(toImportURL(tsSource));
|
|
47
|
+
} catch {
|
|
48
|
+
console.error(
|
|
49
|
+
'[zelari-code] Neither compiled dist nor tsx runtime found.\n' +
|
|
50
|
+
'Production install: run `npm run build:cli` before installing (requires esbuild + tsx).\n' +
|
|
51
|
+
'Source install: install `tsx` (npm i -g tsx) and run from source.',
|
|
52
|
+
);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
} else {
|
|
56
|
+
console.error(
|
|
57
|
+
'[zelari-code] Cannot locate CLI entrypoint.\n' +
|
|
58
|
+
`Looked for: ${compiledBundled}\n` +
|
|
59
|
+
`Looked for: ${compiledMain}\n` +
|
|
60
|
+
`Looked for: ${tsSource}\n` +
|
|
61
|
+
'Reinstall the package or report an issue.',
|
|
62
|
+
);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
* Advanced tools: RAG search, mind-map node creation, milestones, task updates
|
|
7
|
+
* and idea clustering.
|
|
8
|
+
*/
|
|
9
|
+
export const ADVANCED_TOOL_DEFINITIONS = [
|
|
10
|
+
{
|
|
11
|
+
name: 'searchRAG',
|
|
12
|
+
description: 'Query the hybrid RAG knowledge base and return the most relevant chunks.',
|
|
13
|
+
category: 'analysis',
|
|
14
|
+
parameters: [
|
|
15
|
+
p('query', 'string', 'Natural-language query', true),
|
|
16
|
+
p('topK', 'number', 'Number of results to return', false, { default: 6 }),
|
|
17
|
+
],
|
|
18
|
+
execute: (args, ctx) => {
|
|
19
|
+
if (!ctx.ragQuery)
|
|
20
|
+
return 'RAG search not available in this context.';
|
|
21
|
+
const query = args['query'] ?? '';
|
|
22
|
+
const topK = args['topK'] ?? 6;
|
|
23
|
+
const results = ctx.ragQuery(query, topK);
|
|
24
|
+
if (results.length === 0)
|
|
25
|
+
return 'No relevant knowledge found in RAG index.';
|
|
26
|
+
return results
|
|
27
|
+
.map((r, i) => `${i + 1}. ${r.title} (score: ${r.score.toFixed(2)})\n ${r.content.slice(0, 160)}`)
|
|
28
|
+
.join('\n');
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'createMindMapNode',
|
|
33
|
+
description: 'Add a single node to the current mind map.',
|
|
34
|
+
category: 'mindmap',
|
|
35
|
+
parameters: [
|
|
36
|
+
p('label', 'string', 'Node label', true),
|
|
37
|
+
p('content', 'string', 'Short node content/description', false),
|
|
38
|
+
],
|
|
39
|
+
execute: (args, ctx) => {
|
|
40
|
+
if (!ctx.createMindMapNode)
|
|
41
|
+
return 'Mind map not available in this context.';
|
|
42
|
+
ctx.createMindMapNode({
|
|
43
|
+
label: args['label'] ?? 'Node',
|
|
44
|
+
content: args['content'] ?? '',
|
|
45
|
+
});
|
|
46
|
+
return `Mind map node "${args['label']}" added.`;
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'createMilestone',
|
|
51
|
+
description: 'Create a milestone in the active project.',
|
|
52
|
+
category: 'project',
|
|
53
|
+
parameters: [
|
|
54
|
+
p('title', 'string', 'Milestone title', true),
|
|
55
|
+
p('description', 'string', 'Milestone description', false),
|
|
56
|
+
p('dueDate', 'string', 'Due date (ISO string)', false),
|
|
57
|
+
],
|
|
58
|
+
execute: (args, ctx) => {
|
|
59
|
+
if (!ctx.createMilestone)
|
|
60
|
+
return 'Project milestones not available in this context.';
|
|
61
|
+
ctx.createMilestone({
|
|
62
|
+
title: args['title'] ?? 'Milestone',
|
|
63
|
+
description: args['description'] ?? '',
|
|
64
|
+
dueDate: args['dueDate'],
|
|
65
|
+
});
|
|
66
|
+
ctx.addActivity('project', 'milestone created', args['title'] ?? 'Milestone');
|
|
67
|
+
return `Milestone "${args['title']}" created.`;
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'updateTask',
|
|
72
|
+
description: 'Update an existing task (status, priority, description).',
|
|
73
|
+
category: 'project',
|
|
74
|
+
parameters: [
|
|
75
|
+
p('taskId', 'string', 'Task id to update', true),
|
|
76
|
+
p('status', 'string', 'New status', false, { enum: ['todo', 'in-progress', 'done', 'blocked'] }),
|
|
77
|
+
p('priority', 'string', 'New priority', false, { enum: ['low', 'medium', 'high', 'critical'] }),
|
|
78
|
+
p('description', 'string', 'New description', false),
|
|
79
|
+
],
|
|
80
|
+
execute: (args, ctx) => {
|
|
81
|
+
if (!ctx.updateTask)
|
|
82
|
+
return 'Task updates not available in this context.';
|
|
83
|
+
const taskId = args['taskId'] ?? '';
|
|
84
|
+
const updates = {};
|
|
85
|
+
if (args['status'] !== undefined)
|
|
86
|
+
updates.status = args['status'];
|
|
87
|
+
if (args['priority'] !== undefined)
|
|
88
|
+
updates.priority = args['priority'];
|
|
89
|
+
if (args['description'] !== undefined)
|
|
90
|
+
updates.description = args['description'];
|
|
91
|
+
ctx.updateTask(taskId, updates);
|
|
92
|
+
return `Task ${taskId} updated.`;
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'clusterIdeas',
|
|
97
|
+
description: 'Group ideas by similarity into a named cluster.',
|
|
98
|
+
category: 'ideas',
|
|
99
|
+
parameters: [
|
|
100
|
+
p('ideaIds', 'string[]', 'Idea ids to cluster', true),
|
|
101
|
+
p('clusterName', 'string', 'Name for the new cluster', true),
|
|
102
|
+
p('color', 'string', 'Cluster color (hex)', false, { default: '#3b82f6' }),
|
|
103
|
+
],
|
|
104
|
+
execute: (args, ctx) => {
|
|
105
|
+
if (!ctx.clusterIdeas)
|
|
106
|
+
return 'Idea clustering not available in this context.';
|
|
107
|
+
const ideaIds = args['ideaIds'] ?? [];
|
|
108
|
+
const clusterName = args['clusterName'] ?? 'Cluster';
|
|
109
|
+
const color = args['color'] ?? '#3b82f6';
|
|
110
|
+
ctx.clusterIdeas(ideaIds, clusterName, color);
|
|
111
|
+
return `Clustered ${ideaIds.length} ideas into "${clusterName}".`;
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
//# sourceMappingURL=advancedTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advancedTools.js","sourceRoot":"","sources":["../../src/agents/advancedTools.ts"],"names":[],"mappings":"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"}
|