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.
Files changed (146) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +156 -0
  3. package/bin/zelari-code.js +64 -0
  4. package/dist/agents/advancedTools.js +115 -0
  5. package/dist/agents/advancedTools.js.map +1 -0
  6. package/dist/agents/councilApi.js +375 -0
  7. package/dist/agents/councilApi.js.map +1 -0
  8. package/dist/agents/councilDirectives.js +100 -0
  9. package/dist/agents/councilDirectives.js.map +1 -0
  10. package/dist/agents/promoteMember.js +210 -0
  11. package/dist/agents/promoteMember.js.map +1 -0
  12. package/dist/agents/promptModules.js +139 -0
  13. package/dist/agents/promptModules.js.map +1 -0
  14. package/dist/agents/roles.js +281 -0
  15. package/dist/agents/roles.js.map +1 -0
  16. package/dist/agents/skills/builtin/debugging.js +248 -0
  17. package/dist/agents/skills/builtin/debugging.js.map +1 -0
  18. package/dist/agents/skills/builtin/docs.js +301 -0
  19. package/dist/agents/skills/builtin/docs.js.map +1 -0
  20. package/dist/agents/skills/builtin/git-ops.js +301 -0
  21. package/dist/agents/skills/builtin/git-ops.js.map +1 -0
  22. package/dist/agents/skills/builtin/planning.js +335 -0
  23. package/dist/agents/skills/builtin/planning.js.map +1 -0
  24. package/dist/agents/skills/builtin/refactoring.js +261 -0
  25. package/dist/agents/skills/builtin/refactoring.js.map +1 -0
  26. package/dist/agents/skills/builtin/review.js +302 -0
  27. package/dist/agents/skills/builtin/review.js.map +1 -0
  28. package/dist/agents/skills/builtin/testing.js +245 -0
  29. package/dist/agents/skills/builtin/testing.js.map +1 -0
  30. package/dist/agents/skills.js +272 -0
  31. package/dist/agents/skills.js.map +1 -0
  32. package/dist/agents/systemPromptBuilder.js +151 -0
  33. package/dist/agents/systemPromptBuilder.js.map +1 -0
  34. package/dist/agents/toolSchemas.js +249 -0
  35. package/dist/agents/toolSchemas.js.map +1 -0
  36. package/dist/agents/tools.js +196 -0
  37. package/dist/agents/tools.js.map +1 -0
  38. package/dist/agents/vaultTools.js +134 -0
  39. package/dist/agents/vaultTools.js.map +1 -0
  40. package/dist/cli/app.js +1823 -0
  41. package/dist/cli/app.js.map +1 -0
  42. package/dist/cli/branchManager.js +280 -0
  43. package/dist/cli/branchManager.js.map +1 -0
  44. package/dist/cli/compaction.js +63 -0
  45. package/dist/cli/compaction.js.map +1 -0
  46. package/dist/cli/components/ChatStream.js +23 -0
  47. package/dist/cli/components/ChatStream.js.map +1 -0
  48. package/dist/cli/components/CollapsibleToolOutput.js +38 -0
  49. package/dist/cli/components/CollapsibleToolOutput.js.map +1 -0
  50. package/dist/cli/components/Header.js +31 -0
  51. package/dist/cli/components/Header.js.map +1 -0
  52. package/dist/cli/components/InputBar.js +9 -0
  53. package/dist/cli/components/InputBar.js.map +1 -0
  54. package/dist/cli/components/Sidebar.js +17 -0
  55. package/dist/cli/components/Sidebar.js.map +1 -0
  56. package/dist/cli/councilCost.js +81 -0
  57. package/dist/cli/councilCost.js.map +1 -0
  58. package/dist/cli/councilDispatcher.js +56 -0
  59. package/dist/cli/councilDispatcher.js.map +1 -0
  60. package/dist/cli/councilFeedback.js +164 -0
  61. package/dist/cli/councilFeedback.js.map +1 -0
  62. package/dist/cli/crossProviderFailover.js +83 -0
  63. package/dist/cli/crossProviderFailover.js.map +1 -0
  64. package/dist/cli/gitOps.js +96 -0
  65. package/dist/cli/gitOps.js.map +1 -0
  66. package/dist/cli/grokOAuth.js +375 -0
  67. package/dist/cli/grokOAuth.js.map +1 -0
  68. package/dist/cli/keyStore.js +263 -0
  69. package/dist/cli/keyStore.js.map +1 -0
  70. package/dist/cli/keyValidator.js +83 -0
  71. package/dist/cli/keyValidator.js.map +1 -0
  72. package/dist/cli/main.bundled.js +21428 -0
  73. package/dist/cli/main.bundled.js.map +7 -0
  74. package/dist/cli/main.js +72 -0
  75. package/dist/cli/main.js.map +1 -0
  76. package/dist/cli/metrics.js +131 -0
  77. package/dist/cli/metrics.js.map +1 -0
  78. package/dist/cli/modelDiscovery.js +234 -0
  79. package/dist/cli/modelDiscovery.js.map +1 -0
  80. package/dist/cli/modelPricing.js +112 -0
  81. package/dist/cli/modelPricing.js.map +1 -0
  82. package/dist/cli/oauthCallbackServer.js +207 -0
  83. package/dist/cli/oauthCallbackServer.js.map +1 -0
  84. package/dist/cli/provider/openai-compatible.js +236 -0
  85. package/dist/cli/provider/openai-compatible.js.map +1 -0
  86. package/dist/cli/providerConfig.js +210 -0
  87. package/dist/cli/providerConfig.js.map +1 -0
  88. package/dist/cli/providerFailover.js +90 -0
  89. package/dist/cli/providerFailover.js.map +1 -0
  90. package/dist/cli/refreshRegistry.js +77 -0
  91. package/dist/cli/refreshRegistry.js.map +1 -0
  92. package/dist/cli/safety/auditLogger.js +111 -0
  93. package/dist/cli/safety/auditLogger.js.map +1 -0
  94. package/dist/cli/safety/sandboxPath.js +62 -0
  95. package/dist/cli/safety/sandboxPath.js.map +1 -0
  96. package/dist/cli/safety/shellBlocklist.js +71 -0
  97. package/dist/cli/safety/shellBlocklist.js.map +1 -0
  98. package/dist/cli/sessionManager.js +149 -0
  99. package/dist/cli/sessionManager.js.map +1 -0
  100. package/dist/cli/skillCache.js +205 -0
  101. package/dist/cli/skillCache.js.map +1 -0
  102. package/dist/cli/skillHistory.js +178 -0
  103. package/dist/cli/skillHistory.js.map +1 -0
  104. package/dist/cli/skillSuggest.js +132 -0
  105. package/dist/cli/skillSuggest.js.map +1 -0
  106. package/dist/cli/slashCommands.js +431 -0
  107. package/dist/cli/slashCommands.js.map +1 -0
  108. package/dist/cli/toolRegistry.js +187 -0
  109. package/dist/cli/toolRegistry.js.map +1 -0
  110. package/dist/cli/updater.js +157 -0
  111. package/dist/cli/updater.js.map +1 -0
  112. package/dist/main/core/AgentHarness.js +345 -0
  113. package/dist/main/core/AgentHarness.js.map +1 -0
  114. package/dist/main/core/providerStream.js +99 -0
  115. package/dist/main/core/providerStream.js.map +1 -0
  116. package/dist/main/core/sessionJsonl.js +99 -0
  117. package/dist/main/core/sessionJsonl.js.map +1 -0
  118. package/dist/main/core/tools/auditLog.js +26 -0
  119. package/dist/main/core/tools/auditLog.js.map +1 -0
  120. package/dist/main/core/tools/builtin/filesystem.js +110 -0
  121. package/dist/main/core/tools/builtin/filesystem.js.map +1 -0
  122. package/dist/main/core/tools/builtin/search.js +56 -0
  123. package/dist/main/core/tools/builtin/search.js.map +1 -0
  124. package/dist/main/core/tools/builtin/shell.js +51 -0
  125. package/dist/main/core/tools/builtin/shell.js.map +1 -0
  126. package/dist/main/core/tools/registry.js +71 -0
  127. package/dist/main/core/tools/registry.js.map +1 -0
  128. package/dist/main/core/tools/toolTypes.js +8 -0
  129. package/dist/main/core/tools/toolTypes.js.map +1 -0
  130. package/dist/main/core/tools/zodBridge.js +48 -0
  131. package/dist/main/core/tools/zodBridge.js.map +1 -0
  132. package/dist/shared/eventBus.js +104 -0
  133. package/dist/shared/eventBus.js.map +1 -0
  134. package/dist/shared/events.js +73 -0
  135. package/dist/shared/events.js.map +1 -0
  136. package/dist/shared/index.js +8 -0
  137. package/dist/shared/index.js.map +1 -0
  138. package/dist/types/context.js +3 -0
  139. package/dist/types/context.js.map +1 -0
  140. package/dist/types/index.js +2 -0
  141. package/dist/types/index.js.map +1 -0
  142. package/dist/types/knowledge.js +2 -0
  143. package/dist/types/knowledge.js.map +1 -0
  144. package/dist/types/systemTypes.js +10 -0
  145. package/dist/types/systemTypes.js.map +1 -0
  146. 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
+ ![Version](https://img.shields.io/npm/v/zelari-code)
6
+ ![License](https://img.shields.io/npm/l/zelari-code)
7
+ ![Node](https://img.shields.io/node/v/zelari-code)
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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"}