zelari-code 0.4.3 → 0.7.5

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 (127) hide show
  1. package/README.md +42 -0
  2. package/bin/zelari-code.js +1 -1
  3. package/dist/agents/councilApi.js +7 -7
  4. package/dist/agents/councilApi.js.map +1 -1
  5. package/dist/agents/councilDirectives.js +3 -3
  6. package/dist/agents/promoteMember.js +2 -2
  7. package/dist/agents/roles.js +50 -32
  8. package/dist/agents/roles.js.map +1 -1
  9. package/dist/agents/skills/builtin/debugging.js +4 -4
  10. package/dist/agents/skills/builtin/debugging.js.map +1 -1
  11. package/dist/agents/skills/builtin/docs.js +23 -13
  12. package/dist/agents/skills/builtin/docs.js.map +1 -1
  13. package/dist/agents/skills/builtin/git-ops.js +3 -3
  14. package/dist/agents/skills/builtin/git-ops.js.map +1 -1
  15. package/dist/agents/skills/builtin/planning.js +4 -4
  16. package/dist/agents/skills/builtin/planning.js.map +1 -1
  17. package/dist/agents/skills/builtin/refactoring.js +3 -3
  18. package/dist/agents/skills/builtin/refactoring.js.map +1 -1
  19. package/dist/agents/skills/builtin/review.js +9 -9
  20. package/dist/agents/skills/builtin/review.js.map +1 -1
  21. package/dist/agents/skills/builtin/testing.js +3 -3
  22. package/dist/agents/skills/builtin/testing.js.map +1 -1
  23. package/dist/agents/tools.js +2 -9
  24. package/dist/agents/tools.js.map +1 -1
  25. package/dist/cli/app.js +72 -33
  26. package/dist/cli/app.js.map +1 -1
  27. package/dist/cli/compaction.js.map +1 -1
  28. package/dist/cli/components/ChatStream.js +43 -82
  29. package/dist/cli/components/ChatStream.js.map +1 -1
  30. package/dist/cli/components/CollapsibleToolOutput.js +8 -21
  31. package/dist/cli/components/CollapsibleToolOutput.js.map +1 -1
  32. package/dist/cli/components/Header.js +6 -18
  33. package/dist/cli/components/Header.js.map +1 -1
  34. package/dist/cli/components/LiveRegion.js +54 -0
  35. package/dist/cli/components/LiveRegion.js.map +1 -0
  36. package/dist/cli/components/Sidebar.js +33 -31
  37. package/dist/cli/components/Sidebar.js.map +1 -1
  38. package/dist/cli/components/StatusBar.js +42 -0
  39. package/dist/cli/components/StatusBar.js.map +1 -0
  40. package/dist/cli/components/ToolOutput.js +68 -0
  41. package/dist/cli/components/ToolOutput.js.map +1 -0
  42. package/dist/cli/components/toolFormat.js +195 -0
  43. package/dist/cli/components/toolFormat.js.map +1 -0
  44. package/dist/cli/councilDispatcher.js +1 -1
  45. package/dist/cli/councilDispatcher.js.map +1 -1
  46. package/dist/cli/grokOAuth.js +93 -75
  47. package/dist/cli/grokOAuth.js.map +1 -1
  48. package/dist/cli/headless.js +137 -0
  49. package/dist/cli/headless.js.map +1 -0
  50. package/dist/cli/hooks/chatState.js +139 -0
  51. package/dist/cli/hooks/chatState.js.map +1 -0
  52. package/dist/cli/hooks/eventsToMessages.js +42 -11
  53. package/dist/cli/hooks/eventsToMessages.js.map +1 -1
  54. package/dist/cli/hooks/messageHelpers.js +72 -15
  55. package/dist/cli/hooks/messageHelpers.js.map +1 -1
  56. package/dist/cli/hooks/useBatchedMessages.js +71 -0
  57. package/dist/cli/hooks/useBatchedMessages.js.map +1 -0
  58. package/dist/cli/hooks/useChatTurn.js +453 -84
  59. package/dist/cli/hooks/useChatTurn.js.map +1 -1
  60. package/dist/cli/hooks/useSession.js +24 -3
  61. package/dist/cli/hooks/useSession.js.map +1 -1
  62. package/dist/cli/hooks/useSlashDispatch.js +13 -2
  63. package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
  64. package/dist/cli/main.bundled.js +10607 -7889
  65. package/dist/cli/main.bundled.js.map +4 -4
  66. package/dist/cli/main.js +120 -2
  67. package/dist/cli/main.js.map +1 -1
  68. package/dist/cli/mcp/mcpClient.js +152 -0
  69. package/dist/cli/mcp/mcpClient.js.map +1 -0
  70. package/dist/cli/mcp/mcpManager.js +139 -0
  71. package/dist/cli/mcp/mcpManager.js.map +1 -0
  72. package/dist/cli/provider/openai-compatible.js +9 -2
  73. package/dist/cli/provider/openai-compatible.js.map +1 -1
  74. package/dist/cli/refreshRegistry.js +9 -6
  75. package/dist/cli/refreshRegistry.js.map +1 -1
  76. package/dist/cli/runHeadless.js +160 -0
  77. package/dist/cli/runHeadless.js.map +1 -0
  78. package/dist/cli/sessionManager.js +1 -1
  79. package/dist/cli/sessionManager.js.map +1 -1
  80. package/dist/cli/skillSuggest.js +1 -1
  81. package/dist/cli/skillsMd.js +155 -0
  82. package/dist/cli/skillsMd.js.map +1 -0
  83. package/dist/cli/slashHandlers/branch.js +11 -2
  84. package/dist/cli/slashHandlers/branch.js.map +1 -1
  85. package/dist/cli/slashHandlers/git.js +0 -75
  86. package/dist/cli/slashHandlers/git.js.map +1 -1
  87. package/dist/cli/slashHandlers/promoteMember.js +25 -0
  88. package/dist/cli/slashHandlers/promoteMember.js.map +1 -0
  89. package/dist/cli/slashHandlers/skills.js +16 -0
  90. package/dist/cli/slashHandlers/skills.js.map +1 -1
  91. package/dist/cli/slashHandlers/transcript.js +13 -0
  92. package/dist/cli/slashHandlers/transcript.js.map +1 -0
  93. package/dist/cli/slashHandlers/updater.js +40 -0
  94. package/dist/cli/slashHandlers/updater.js.map +1 -0
  95. package/dist/cli/toolRegistry.js +37 -6
  96. package/dist/cli/toolRegistry.js.map +1 -1
  97. package/dist/cli/wizard/firstRun.js +63 -0
  98. package/dist/cli/wizard/firstRun.js.map +1 -0
  99. package/dist/cli/wizard/index.js +150 -0
  100. package/dist/cli/wizard/index.js.map +1 -0
  101. package/dist/cli/wizard/runWizard.js +137 -0
  102. package/dist/cli/wizard/runWizard.js.map +1 -0
  103. package/dist/cli/wizard/useWizardState.js +151 -0
  104. package/dist/cli/wizard/useWizardState.js.map +1 -0
  105. package/dist/cli/workspace/paths.js +20 -13
  106. package/dist/cli/workspace/paths.js.map +1 -1
  107. package/dist/cli/workspace/storage.js +7 -3
  108. package/dist/cli/workspace/storage.js.map +1 -1
  109. package/dist/cli/workspace/stubs.js +122 -44
  110. package/dist/cli/workspace/stubs.js.map +1 -1
  111. package/dist/cli/workspace/toolRegistry.js +2 -2
  112. package/dist/cli/workspace/toolRegistry.js.map +1 -1
  113. package/dist/cli/workspace/workspaceSummary.js +255 -0
  114. package/dist/cli/workspace/workspaceSummary.js.map +1 -0
  115. package/dist/main/core/AgentHarness.js +36 -7
  116. package/dist/main/core/AgentHarness.js.map +1 -1
  117. package/dist/main/core/tools/builtin/listFiles.js +43 -5
  118. package/dist/main/core/tools/builtin/listFiles.js.map +1 -1
  119. package/dist/main/core/tools/builtin/search.js +28 -120
  120. package/dist/main/core/tools/builtin/search.js.map +1 -1
  121. package/package.json +6 -1
  122. package/dist/cli/oauthCallbackServer.js +0 -207
  123. package/dist/cli/oauthCallbackServer.js.map +0 -1
  124. package/dist/main/core/tools/builtin/_walk.js +0 -129
  125. package/dist/main/core/tools/builtin/_walk.js.map +0 -1
  126. package/dist/main/core/tools/builtin/diff.js +0 -477
  127. package/dist/main/core/tools/builtin/diff.js.map +0 -1
@@ -0,0 +1,160 @@
1
+ /**
2
+ * runHeadless — execute a single task without mounting Ink.
3
+ *
4
+ * Streams BrainEvents either as NDJSON (one JSON object per line on
5
+ * stdout) or as plain text (just the assistant message body).
6
+ *
7
+ * Two modes:
8
+ * - single (default): one AgentHarness run with the system prompt
9
+ * zelari-code uses for direct prompts.
10
+ * - council (`--council`): the same 6-member council pipeline the
11
+ * TUI uses for `/council`.
12
+ *
13
+ * @public
14
+ * @since 0.5.0
15
+ */
16
+ import { AgentHarness } from '@zelari/core/harness';
17
+ import { createBuiltinToolRegistry } from './toolRegistry.js';
18
+ import { emitEvent, openaiCompatibleProvider, resolveHeadlessKey, resolveHeadlessProvider, } from './headless.js';
19
+ export async function runHeadless(opts) {
20
+ const { provider, model } = resolveHeadlessProvider(opts);
21
+ const key = await resolveHeadlessKey(provider);
22
+ if ('error' in key) {
23
+ process.stderr.write(`[zelari-code --headless] ${key.error}\n`);
24
+ return 1;
25
+ }
26
+ const providerStream = openaiCompatibleProvider({
27
+ providerId: provider,
28
+ apiKey: key.apiKey,
29
+ model,
30
+ ...(key.baseUrl ? { baseUrl: key.baseUrl } : {}),
31
+ });
32
+ if (opts.useCouncil) {
33
+ return runHeadlessCouncil(opts, provider, model, providerStream);
34
+ }
35
+ return runHeadlessSingle(opts, provider, model, providerStream);
36
+ }
37
+ async function runHeadlessSingle(opts, provider, model, providerStream) {
38
+ const sessionId = crypto.randomUUID();
39
+ const { registry: toolRegistry } = createBuiltinToolRegistry();
40
+ const tools = toolRegistry.toOpenAITools().map((t) => ({
41
+ name: t.function.name,
42
+ description: t.function.description,
43
+ parameters: t.function.parameters,
44
+ }));
45
+ const systemPrompt = [
46
+ 'You are zelari-code, a CLI coding agent. Be concise and direct.',
47
+ 'When the user asks you to write code, debug, or explore, be proactive: list files and read key files to understand the project.',
48
+ 'When you finish a task, briefly summarize what you did.',
49
+ ].join('\n');
50
+ const harness = new AgentHarness({
51
+ model,
52
+ provider,
53
+ sessionId,
54
+ messages: [
55
+ { role: 'system', content: systemPrompt },
56
+ { role: 'user', content: opts.task },
57
+ ],
58
+ tools,
59
+ toolRegistry,
60
+ providerStream,
61
+ });
62
+ let finalReason = 'completed';
63
+ let exitCode = 0;
64
+ const textBuffer = [];
65
+ try {
66
+ for await (const event of harness.run()) {
67
+ if (opts.output === 'json') {
68
+ emitEvent(event);
69
+ }
70
+ if (event.type === 'message_delta') {
71
+ if (opts.output === 'plain') {
72
+ process.stdout.write(event.delta);
73
+ }
74
+ else {
75
+ textBuffer.push(event.delta);
76
+ }
77
+ }
78
+ else if (event.type === 'agent_end') {
79
+ finalReason = event.reason;
80
+ if (event.reason === 'error')
81
+ exitCode = 3;
82
+ }
83
+ else if (event.type === 'error') {
84
+ if (event.severity === 'fatal') {
85
+ exitCode = 2;
86
+ }
87
+ }
88
+ }
89
+ }
90
+ catch (err) {
91
+ process.stderr.write(`[zelari-code --headless] runtime error: ${err instanceof Error ? err.message : String(err)}\n`);
92
+ return 2;
93
+ }
94
+ if (opts.output === 'plain' && textBuffer.length > 0) {
95
+ process.stdout.write(textBuffer.join(''));
96
+ }
97
+ // Ensure stdout is flushed before exit (NDJSON consumers expect
98
+ // all lines written before the process closes).
99
+ process.stdout.write('');
100
+ if (finalReason === 'error')
101
+ return 3;
102
+ return exitCode;
103
+ }
104
+ async function runHeadlessCouncil(opts, provider, model, providerStream) {
105
+ // Council path: dispatch through the same `dispatchCouncil`
106
+ // function the TUI uses. This guarantees the same event shape
107
+ // (including the v0.5.0 memberId/memberName stamping) is emitted
108
+ // in both TUI and headless modes.
109
+ const { dispatchCouncil } = await import('./councilDispatcher.js');
110
+ const sessionId = crypto.randomUUID();
111
+ const { registry: toolRegistry } = createBuiltinToolRegistry();
112
+ const workspaceCtx = {
113
+ projectRoot: process.cwd(),
114
+ getActiveBranch: () => null,
115
+ };
116
+ const { createWorkspaceContext, createWorkspaceStubs } = await import('./workspace/stubs.js');
117
+ const { createWorkspaceToolRegistry } = await import('./workspace/toolRegistry.js');
118
+ const { setWorkspaceStubs } = await import('@zelari/core/skills');
119
+ const { FeedbackStore } = await import('./councilFeedback.js');
120
+ const realCtx = createWorkspaceContext();
121
+ const realReg = createWorkspaceToolRegistry(realCtx);
122
+ for (const name of realReg.list()) {
123
+ const td = realReg.get(name);
124
+ if (td)
125
+ toolRegistry.register(td);
126
+ }
127
+ setWorkspaceStubs(createWorkspaceStubs(realCtx));
128
+ const feedbackStore = new FeedbackStore();
129
+ let exitCode = 0;
130
+ try {
131
+ for await (const event of dispatchCouncil(opts.task, {
132
+ apiKey: 'REDACTED',
133
+ model,
134
+ provider: 'openai-compatible',
135
+ providerStream,
136
+ sessionId,
137
+ tools: toolRegistry,
138
+ feedbackStore,
139
+ })) {
140
+ if (opts.output === 'json') {
141
+ emitEvent(event);
142
+ }
143
+ else if (event.type === 'message_delta') {
144
+ process.stdout.write(event.delta);
145
+ }
146
+ else if (event.type === 'agent_end' && event.reason === 'error') {
147
+ exitCode = 3;
148
+ }
149
+ else if (event.type === 'error' && event.severity === 'fatal') {
150
+ exitCode = 2;
151
+ }
152
+ }
153
+ }
154
+ catch (err) {
155
+ process.stderr.write(`[zelari-code --headless] council error: ${err instanceof Error ? err.message : String(err)}\n`);
156
+ return 2;
157
+ }
158
+ return exitCode;
159
+ }
160
+ //# sourceMappingURL=runHeadless.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runHeadless.js","sourceRoot":"","sources":["../../src/cli/runHeadless.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ import { promises as fs, existsSync, readFileSync, writeFileSync, mkdirSync, unl
19
19
  import path from 'node:path';
20
20
  import os from 'node:os';
21
21
  import { randomUUID } from 'node:crypto';
22
- import { readSession } from '../main/core/sessionJsonl.js';
22
+ import { readSession } from '@zelari/core/harness';
23
23
  /** Resolve the base directory where session JSONL files live. */
24
24
  export function getSessionBaseDir() {
25
25
  return process.env.ANATHEMA_SESSIONS_DIR
@@ -1 +1 @@
1
- {"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../src/cli/sessionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionManager.js","sourceRoot":"","sources":["../../src/cli/sessionManager.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@
18
18
  *
19
19
  * @see docs/plans/2026-06-29-anathema-coder-v3-H.md (Task H.2)
20
20
  */
21
- import { listSkills } from '../agents/skills.js';
21
+ import { listSkills } from '@zelari/core/skills';
22
22
  import { readSkillHistory, getSkillStats } from './skillHistory.js';
23
23
  /**
24
24
  * Compute a score in [0, 1] for a skill given its stats + match reason.
@@ -0,0 +1,155 @@
1
+ /**
2
+ * skillsMd — load user-defined skills from SKILL.md files (v0.7.5).
3
+ *
4
+ * opencode, Hermes Agent, and Claude Code converge on the same on-disk
5
+ * format: one directory per skill containing a `SKILL.md` with YAML
6
+ * frontmatter (`name`, `description`) and a markdown body of instructions.
7
+ * Supporting that format means ANY skill from those ecosystems can be
8
+ * dropped into this project and used via `/skill <name>` unchanged.
9
+ *
10
+ * Discovery order (first occurrence of a name wins — project beats global):
11
+ * 1. <project>/.zelari/skills/<name>/SKILL.md (native)
12
+ * 2. <project>/.claude/skills/<name>/SKILL.md (Claude Code compat)
13
+ * 3. <project>/.opencode/skills/<name>/SKILL.md (opencode compat)
14
+ * 4. ~/.zelari-code/skills/<name>/SKILL.md (global)
15
+ *
16
+ * The body becomes the skill's systemPromptFragment; recognized frontmatter
17
+ * beyond name/description: `category` (one of the coding categories),
18
+ * `tools` (list or comma string → requiredTools), `cost` (low|medium|high).
19
+ * Unknown fields are ignored, never fatal — a malformed SKILL.md is skipped
20
+ * with a warning entry in the returned summary.
21
+ */
22
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
23
+ import { join } from 'node:path';
24
+ import { homedir } from 'node:os';
25
+ import { registerCodingSkill } from '@zelari/core/skills';
26
+ /** Valid coding categories (mirror of CODING_CATEGORY values in core). */
27
+ const CODING_CATEGORIES = new Set([
28
+ 'plan', 'refactor', 'debug', 'review', 'test', 'docs', 'ops', 'git', 'db', 'maint',
29
+ ]);
30
+ /** Skill discovery roots for a project (project-local first, then global). */
31
+ export function skillMdSearchDirs(projectRoot = process.cwd()) {
32
+ return [
33
+ join(projectRoot, '.zelari', 'skills'),
34
+ join(projectRoot, '.claude', 'skills'),
35
+ join(projectRoot, '.opencode', 'skills'),
36
+ join(homedir(), '.zelari-code', 'skills'),
37
+ ];
38
+ }
39
+ /**
40
+ * Parse a SKILL.md file: YAML frontmatter subset (flat `key: value` pairs
41
+ * and `[a, b]` inline lists — nested structures are ignored) + body.
42
+ * Returns null with no throw on files without usable name/description.
43
+ */
44
+ export function parseSkillMd(content, sourcePath) {
45
+ const fmMatch = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/.exec(content);
46
+ if (!fmMatch)
47
+ return null;
48
+ const [, fmRaw = '', body = ''] = fmMatch;
49
+ const fields = {};
50
+ for (const line of fmRaw.split(/\r?\n/)) {
51
+ const kv = /^([A-Za-z_][\w-]*)\s*:\s*(.*)$/.exec(line);
52
+ if (!kv)
53
+ continue; // nested/indented lines from unsupported YAML — skip
54
+ const key = (kv[1] ?? '').toLowerCase();
55
+ let value = (kv[2] ?? '').trim();
56
+ if ((value.startsWith('"') && value.endsWith('"')) ||
57
+ (value.startsWith("'") && value.endsWith("'"))) {
58
+ value = value.slice(1, -1);
59
+ }
60
+ fields[key] = value;
61
+ }
62
+ const name = (fields['name'] ?? '').trim().toLowerCase();
63
+ const description = (fields['description'] ?? '').trim();
64
+ if (!name || !description)
65
+ return null;
66
+ // Same constraint opencode enforces: lowercase alphanumerics + hyphens.
67
+ if (!/^[a-z0-9][a-z0-9-]{0,63}$/.test(name))
68
+ return null;
69
+ const rawTools = fields['tools'] ?? fields['requiredtools'] ?? fields['required_tools'] ?? '';
70
+ const requiredTools = rawTools
71
+ .replace(/^\[|\]$/g, '')
72
+ .split(',')
73
+ .map((t) => t.trim().replace(/^["']|["']$/g, ''))
74
+ .filter((t) => t.length > 0);
75
+ const rawCategory = (fields['category'] ?? '').trim().toLowerCase();
76
+ const category = CODING_CATEGORIES.has(rawCategory) ? rawCategory : 'maint';
77
+ const rawCost = (fields['cost'] ?? fields['estimatedcost'] ?? '').trim().toLowerCase();
78
+ const estimatedCost = rawCost === 'low' || rawCost === 'high' ? rawCost : 'medium';
79
+ const trimmedBody = body.trim();
80
+ if (!trimmedBody)
81
+ return null;
82
+ return { name, description, category, requiredTools, estimatedCost, body: trimmedBody, sourcePath };
83
+ }
84
+ /** Adapt a parsed SKILL.md into the strict CodingSkillDefinition shape. */
85
+ export function toCodingSkillDefinition(parsed) {
86
+ return {
87
+ id: parsed.name,
88
+ name: parsed.name,
89
+ description: parsed.description,
90
+ version: '1.0.0',
91
+ category: parsed.category,
92
+ systemPromptFragment: parsed.body,
93
+ requiredTools: parsed.requiredTools,
94
+ enabledByDefault: true,
95
+ builtin: false,
96
+ requires: [],
97
+ examples: [],
98
+ triggers: [],
99
+ antiPatterns: [],
100
+ requiredRoles: [],
101
+ estimatedCost: parsed.estimatedCost,
102
+ outputSchema: 'string',
103
+ relatedSkills: [],
104
+ tags: ['user', 'skill-md'],
105
+ };
106
+ }
107
+ /**
108
+ * Scan the search dirs, parse every `<dir>/<skill>/SKILL.md`, and register
109
+ * the results in the coding-skill catalog (upsert — but a name already
110
+ * loaded from an earlier dir in the search order is NOT overridden, and
111
+ * builtin skills are never shadowed).
112
+ *
113
+ * Best-effort: any I/O or parse error skips that one skill.
114
+ */
115
+ export function loadSkillMdSkills(projectRoot = process.cwd(), options = {}) {
116
+ const summary = { loaded: [], skipped: [] };
117
+ const seen = new Set(options.existingIds ?? []);
118
+ for (const dir of skillMdSearchDirs(projectRoot)) {
119
+ if (!existsSync(dir))
120
+ continue;
121
+ let entries;
122
+ try {
123
+ entries = readdirSync(dir, { withFileTypes: true })
124
+ .filter((e) => e.isDirectory())
125
+ .map((e) => e.name);
126
+ }
127
+ catch {
128
+ continue;
129
+ }
130
+ for (const entry of entries) {
131
+ const skillPath = join(dir, entry, 'SKILL.md');
132
+ if (!existsSync(skillPath))
133
+ continue;
134
+ try {
135
+ const parsed = parseSkillMd(readFileSync(skillPath, 'utf8'), skillPath);
136
+ if (!parsed) {
137
+ summary.skipped.push({ path: skillPath, reason: 'missing/invalid frontmatter (name, description) or empty body' });
138
+ continue;
139
+ }
140
+ if (seen.has(parsed.name)) {
141
+ summary.skipped.push({ path: skillPath, reason: `name "${parsed.name}" already registered (earlier dir or builtin wins)` });
142
+ continue;
143
+ }
144
+ registerCodingSkill(toCodingSkillDefinition(parsed));
145
+ seen.add(parsed.name);
146
+ summary.loaded.push(parsed.name);
147
+ }
148
+ catch (err) {
149
+ summary.skipped.push({ path: skillPath, reason: err instanceof Error ? err.message : String(err) });
150
+ }
151
+ }
152
+ }
153
+ return summary;
154
+ }
155
+ //# sourceMappingURL=skillsMd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillsMd.js","sourceRoot":"","sources":["../../src/cli/skillsMd.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
- import { createBranch, listBranches, branchExists as checkBranchExists, setCurrentBranch, getCurrentBranch, } from '../branchManager.js';
1
+ import { createBranch, listBranches, branchExists as checkBranchExists, } from '../branchManager.js';
2
+ // v0.4.4 (agy audit): the previous import of setCurrentBranch / getCurrentBranch
3
+ // from `branchManager.js` resolved to no-op STUBS (see branchManager.ts:324-332
4
+ // "no-op stub — see comment above"). The real implementations live in
5
+ // `sessionManager.ts` (file-based currentBranch.txt persistence). Without this
6
+ // fix, /checkout silently did nothing on disk and /branches would show stale data.
7
+ import { setCurrentBranch, getCurrentBranch } from '../sessionManager.js';
2
8
  import { appendSystem } from '../hooks/messageHelpers.js';
3
9
  export async function handleBranchCreate(ctx, branchName) {
4
10
  if (!ctx.sessionId) {
@@ -39,7 +45,10 @@ export async function handleBranchCheckout(ctx, branchName) {
39
45
  throw new Error(`Branch "${branchName}" does not exist. Use /branches to list.`);
40
46
  }
41
47
  setCurrentBranch(branchName);
42
- appendSystem(ctx.setMessages, `[checkout] active branch set to "${branchName}". Restart zelari-code to load it.`);
48
+ appendSystem(ctx.setMessages, `[checkout] active branch set to "${branchName}".\n` +
49
+ ` ⚠ This only takes effect on the next zelari-code launch —\n` +
50
+ ` your current session still belongs to the previous branch.\n` +
51
+ ` Run /exit (or Ctrl+C) and start zelari-code again to load it.`);
43
52
  }
44
53
  catch (err) {
45
54
  appendSystem(ctx.setMessages, `[checkout error] ${err instanceof Error ? err.message : String(err)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/branch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,IAAI,iBAAiB,GAClC,MAAM,qBAAqB,CAAC;AAC7B,iFAAiF;AACjF,gFAAgF;AAChF,sEAAsE;AACtE,+EAA+E;AAC/E,mFAAmF;AACnF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAa1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAuB,EAAE,UAAkB;IAClF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACnB,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,uEAAuE,CAAC,CAAC;QACvG,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3D,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,YAAY,CACV,GAAG,CAAC,WAAW,EACf,qBAAqB,IAAI,CAAC,IAAI,kBAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,uBAAuB,CAC7H,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAuB;IAC5D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,+DAA+D,CAAC,CAAC;YAC/F,OAAO;QACT,CAAC;QACD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACxC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,aAAa,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,OAAO,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,cAAc,EAAE,EAAE,CAAC;QAClH,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,IAAI,CAAC,MAAM,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAuB,EAAE,UAAkB;IACpF,IAAI,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,0CAA0C,CAAC,CAAC;QACnF,CAAC;QACD,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC7B,YAAY,CACV,GAAG,CAAC,WAAW,EACf,oCAAoC,UAAU,MAAM;YAClD,sEAAsE;YACtE,yEAAyE;YACzE,wEAAwE,CAC3E,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;AACH,CAAC"}
@@ -1,8 +1,4 @@
1
- import { promises as fs } from 'node:fs';
2
- import path from 'node:path';
3
- import os from 'node:os';
4
1
  import { getWorkingDiff, undoWorkingChanges, isGitRepo, defaultProjectRoot } from '../gitOps.js';
5
- import { compactTranscript, formatCompactionSummary } from '../compaction.js';
6
2
  import { appendSystem } from '../hooks/messageHelpers.js';
7
3
  export async function handleDiff(ctx, diffStaged) {
8
4
  try {
@@ -41,75 +37,4 @@ export async function handleUndo(ctx, warningMessage, doConfirm) {
41
37
  appendSystem(ctx.setMessages, `[undo error] ${err instanceof Error ? err.message : String(err)}`);
42
38
  }
43
39
  }
44
- export function handleCompact(ctx, threshold, keepRecent) {
45
- const opts = {};
46
- if (threshold !== undefined)
47
- opts.threshold = threshold;
48
- if (keepRecent !== undefined)
49
- opts.keepRecent = keepRecent;
50
- const r = compactTranscript(ctx.messages, opts);
51
- ctx.setMessages([...r.messages]);
52
- appendSystem(ctx.setMessages, formatCompactionSummary(r));
53
- }
54
- export async function handleUpdateCheck(ctx) {
55
- try {
56
- const { checkForUpdate } = await import('../updater.js');
57
- const info = await checkForUpdate();
58
- if (info.error) {
59
- appendSystem(ctx.setMessages, `[update] check failed: ${info.error}`);
60
- }
61
- else if (info.updateAvailable) {
62
- appendSystem(ctx.setMessages, `[update] 🆕 zelari-code ${info.latestVersion} available (current: ${info.currentVersion})\n` +
63
- ` Run \`/update --yes\` to install. You'll need to restart manually after.`);
64
- }
65
- else {
66
- appendSystem(ctx.setMessages, `[update] up to date (${info.currentVersion})`);
67
- }
68
- }
69
- catch (err) {
70
- appendSystem(ctx.setMessages, `[update error] ${err instanceof Error ? err.message : String(err)}`);
71
- }
72
- }
73
- export async function handleUpdatePerform(ctx) {
74
- appendSystem(ctx.setMessages, '[update] running `npm install -g zelari-code@latest`...');
75
- try {
76
- const { performUpdate } = await import('../updater.js');
77
- const res = await performUpdate();
78
- if (res.ok) {
79
- appendSystem(ctx.setMessages, `[update] ✅ installed successfully\n\n` +
80
- `Please restart zelari-code manually to use the new version.\n` +
81
- `(exit with /exit or Ctrl+C, then run \`zelari-code\` again)`);
82
- }
83
- else {
84
- appendSystem(ctx.setMessages, `[update] ❌ failed: ${res.error ?? 'unknown error'}\n\n` +
85
- `npm output:\n${res.output || '(empty)'}`);
86
- }
87
- }
88
- catch (err) {
89
- appendSystem(ctx.setMessages, `[update error] ${err instanceof Error ? err.message : String(err)}`);
90
- }
91
- }
92
- /**
93
- * Promote a council member to a standalone skill (v3-K).
94
- */
95
- export async function handlePromoteMember(ctx, memberId) {
96
- try {
97
- const { promoteMember } = await import('../../agents/promoteMember.js');
98
- const { skill, markdown } = promoteMember(memberId);
99
- const skillDir = process.env.ANATHEMA_SKILL_DIR
100
- ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'skills');
101
- await fs.mkdir(skillDir, { recursive: true });
102
- const filePath = path.join(skillDir, `${skill.id}.md`);
103
- await fs.writeFile(filePath, markdown, 'utf8');
104
- appendSystem(ctx.setMessages, `[promote-member] ${skill.name} (${memberId}) → ${filePath}\n` +
105
- ` category: ${skill.category}\n` +
106
- ` cost: ${skill.estimatedCost}\n` +
107
- ` required: ${skill.requiredRoles.join(', ') || '—'}\n` +
108
- ` tools: ${skill.requiredTools.join(', ') || '—'}\n` +
109
- ` tags: ${skill.tags.join(', ')}`);
110
- }
111
- catch (err) {
112
- appendSystem(ctx.setMessages, `[promote-member error] ${err instanceof Error ? err.message : String(err)}`);
113
- }
114
- }
115
40
  //# sourceMappingURL=git.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import path from 'node:path';
3
+ import os from 'node:os';
4
+ import { appendSystem } from '../hooks/messageHelpers.js';
5
+ export async function handlePromoteMember(ctx, memberId) {
6
+ try {
7
+ const { promoteMember } = await import('@zelari/core/council');
8
+ const { skill, markdown } = promoteMember(memberId);
9
+ const skillDir = process.env.ANATHEMA_SKILL_DIR
10
+ ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'skills');
11
+ await fs.mkdir(skillDir, { recursive: true });
12
+ const filePath = path.join(skillDir, `${skill.id}.md`);
13
+ await fs.writeFile(filePath, markdown, 'utf8');
14
+ appendSystem(ctx.setMessages, `[promote-member] ${skill.name} (${memberId}) → ${filePath}\n` +
15
+ ` category: ${skill.category}\n` +
16
+ ` cost: ${skill.estimatedCost}\n` +
17
+ ` required: ${skill.requiredRoles.join(', ') || '—'}\n` +
18
+ ` tools: ${skill.requiredTools.join(', ') || '—'}\n` +
19
+ ` tags: ${skill.tags.join(', ')}`);
20
+ }
21
+ catch (err) {
22
+ appendSystem(ctx.setMessages, `[promote-member error] ${err instanceof Error ? err.message : String(err)}`);
23
+ }
24
+ }
25
+ //# sourceMappingURL=promoteMember.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promoteMember.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/promoteMember.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAe1D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAA8B,EAAE,QAAgB;IACxF,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB;eAC1C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC9D,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,YAAY,CACV,GAAG,CAAC,WAAW,EACf,oBAAoB,KAAK,CAAC,IAAI,KAAK,QAAQ,OAAO,QAAQ,IAAI;YAC5D,kBAAkB,KAAK,CAAC,QAAQ,IAAI;YACpC,kBAAkB,KAAK,CAAC,aAAa,IAAI;YACzC,kBAAkB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;YAC3D,kBAAkB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;YAC3D,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9G,CAAC;AACH,CAAC"}
@@ -76,6 +76,22 @@ export async function handleSteer(ctx, text, usageHint) {
76
76
  });
77
77
  }
78
78
  export function handleClearChat(setMessages, setSessionActive) {
79
+ // v0.7.0 static-scrollback: <Static> can't retro-erase the lines it already
80
+ // printed to real stdout (they are in the terminal's native scrollback).
81
+ // Emit ANSI clear-screen + scrollback-wipe + cursor-home so the visible
82
+ // pane and the scrollback are cleared together. Windows Terminal honors all
83
+ // three; legacy conhost ignores `3J` (scrollback wipe) — acceptable
84
+ // degradation, the visible pane still clears.
85
+ //
86
+ // \x1b[2J — clear visible screen
87
+ // \x1b[3J — clear scrollback history
88
+ // \x1b[H — cursor home
89
+ try {
90
+ process.stdout.write('\x1b[2J\x1b[3J\x1b[H');
91
+ }
92
+ catch {
93
+ // Best-effort — never block a /clear on a stdout write error.
94
+ }
79
95
  setMessages([]);
80
96
  setSessionActive(false);
81
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { compactTranscript, formatCompactionSummary } from '../compaction.js';
2
+ import { appendSystem } from '../hooks/messageHelpers.js';
3
+ export function handleCompact(ctx, threshold, keepRecent) {
4
+ const opts = {};
5
+ if (threshold !== undefined)
6
+ opts.threshold = threshold;
7
+ if (keepRecent !== undefined)
8
+ opts.keepRecent = keepRecent;
9
+ const r = compactTranscript(ctx.messages, opts);
10
+ ctx.setMessages([...r.messages]);
11
+ appendSystem(ctx.setMessages, formatCompactionSummary(r));
12
+ }
13
+ //# sourceMappingURL=transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/transcript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAiB1D,MAAM,UAAU,aAAa,CAC3B,GAA2B,EAC3B,SAA6B,EAC7B,UAA8B;IAE9B,MAAM,IAAI,GAAgD,EAAE,CAAC;IAC7D,IAAI,SAAS,KAAK,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IACxD,IAAI,UAAU,KAAK,SAAS;QAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC3D,MAAM,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC"}