zora-agent 0.9.3 → 0.9.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.
- package/CHANGELOG.md +1 -1
- package/README.md +103 -92
- package/dist/cli/audit-commands.d.ts.map +1 -1
- package/dist/cli/audit-commands.js +3 -1
- package/dist/cli/audit-commands.js.map +1 -1
- package/dist/cli/daemon.js +86 -28
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/edit-commands.d.ts.map +1 -1
- package/dist/cli/edit-commands.js +3 -1
- package/dist/cli/edit-commands.js.map +1 -1
- package/dist/cli/hook-commands.d.ts +9 -0
- package/dist/cli/hook-commands.d.ts.map +1 -0
- package/dist/cli/hook-commands.js +106 -0
- package/dist/cli/hook-commands.js.map +1 -0
- package/dist/cli/index.js +91 -36
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-command.d.ts.map +1 -1
- package/dist/cli/init-command.js +107 -8
- package/dist/cli/init-command.js.map +1 -1
- package/dist/cli/memory-commands.d.ts +1 -1
- package/dist/cli/memory-commands.d.ts.map +1 -1
- package/dist/cli/memory-commands.js +213 -1
- package/dist/cli/memory-commands.js.map +1 -1
- package/dist/cli/presets.d.ts.map +1 -1
- package/dist/cli/presets.js +2 -1
- package/dist/cli/presets.js.map +1 -1
- package/dist/cli/skill-commands.d.ts.map +1 -1
- package/dist/cli/skill-commands.js +4 -2
- package/dist/cli/skill-commands.js.map +1 -1
- package/dist/cli/steer-commands.d.ts.map +1 -1
- package/dist/cli/steer-commands.js +6 -4
- package/dist/cli/steer-commands.js.map +1 -1
- package/dist/cli/team-commands.d.ts.map +1 -1
- package/dist/cli/team-commands.js +3 -1
- package/dist/cli/team-commands.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +12 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/loader.d.ts +23 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +64 -3
- package/dist/config/loader.js.map +1 -1
- package/dist/config/policy-loader.d.ts +14 -0
- package/dist/config/policy-loader.d.ts.map +1 -1
- package/dist/config/policy-loader.js +33 -0
- package/dist/config/policy-loader.js.map +1 -1
- package/dist/dashboard/frontend/dist/assets/index-BcOGj1EF.css +1 -0
- package/dist/dashboard/frontend/dist/assets/index-BtiFO9YN.js +261 -0
- package/dist/dashboard/frontend/dist/assets/index-Cfjy5acU.css +1 -0
- package/dist/dashboard/frontend/dist/assets/index-D41hcjgc.js +253 -0
- package/dist/dashboard/frontend/dist/assets/index-D83BawFd.css +1 -0
- package/dist/dashboard/frontend/dist/assets/index-DAODjoxu.css +1 -0
- package/dist/dashboard/frontend/dist/assets/index-DB-Eu5oV.js +253 -0
- package/dist/dashboard/frontend/dist/assets/index-W0VVEDu6.js +253 -0
- package/dist/dashboard/frontend/dist/index.html +17 -0
- package/dist/dashboard/server.d.ts +19 -2
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +121 -20
- package/dist/dashboard/server.js.map +1 -1
- package/dist/hooks/hook-runner.d.ts +55 -0
- package/dist/hooks/hook-runner.d.ts.map +1 -0
- package/dist/hooks/hook-runner.js +120 -0
- package/dist/hooks/hook-runner.js.map +1 -0
- package/dist/hooks/hook-types.d.ts +82 -0
- package/dist/hooks/hook-types.d.ts.map +1 -0
- package/dist/hooks/hook-types.js +20 -0
- package/dist/hooks/hook-types.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +6 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/memory/context-compressor.d.ts +108 -0
- package/dist/memory/context-compressor.d.ts.map +1 -0
- package/dist/memory/context-compressor.js +307 -0
- package/dist/memory/context-compressor.js.map +1 -0
- package/dist/memory/index.d.ts +1 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/memory-manager.d.ts +88 -4
- package/dist/memory/memory-manager.d.ts.map +1 -1
- package/dist/memory/memory-manager.js +299 -7
- package/dist/memory/memory-manager.js.map +1 -1
- package/dist/memory/observation-store.d.ts +75 -0
- package/dist/memory/observation-store.d.ts.map +1 -0
- package/dist/memory/observation-store.js +162 -0
- package/dist/memory/observation-store.js.map +1 -0
- package/dist/memory/observer-worker.d.ts +34 -0
- package/dist/memory/observer-worker.d.ts.map +1 -0
- package/dist/memory/observer-worker.js +161 -0
- package/dist/memory/observer-worker.js.map +1 -0
- package/dist/memory/reflector-worker.d.ts +40 -0
- package/dist/memory/reflector-worker.d.ts.map +1 -0
- package/dist/memory/reflector-worker.js +185 -0
- package/dist/memory/reflector-worker.js.map +1 -0
- package/dist/memory/salience-scorer.d.ts +16 -6
- package/dist/memory/salience-scorer.d.ts.map +1 -1
- package/dist/memory/salience-scorer.js +42 -22
- package/dist/memory/salience-scorer.js.map +1 -1
- package/dist/memory/structured-memory.d.ts +36 -1
- package/dist/memory/structured-memory.d.ts.map +1 -1
- package/dist/memory/structured-memory.js +207 -8
- package/dist/memory/structured-memory.js.map +1 -1
- package/dist/memory/token-estimator.d.ts +31 -0
- package/dist/memory/token-estimator.d.ts.map +1 -0
- package/dist/memory/token-estimator.js +77 -0
- package/dist/memory/token-estimator.js.map +1 -0
- package/dist/memory/validation-pipeline.d.ts +37 -0
- package/dist/memory/validation-pipeline.d.ts.map +1 -0
- package/dist/memory/validation-pipeline.js +106 -0
- package/dist/memory/validation-pipeline.js.map +1 -0
- package/dist/orchestrator/auth-monitor.d.ts.map +1 -1
- package/dist/orchestrator/auth-monitor.js +3 -1
- package/dist/orchestrator/auth-monitor.js.map +1 -1
- package/dist/orchestrator/execution-loop.d.ts +23 -0
- package/dist/orchestrator/execution-loop.d.ts.map +1 -1
- package/dist/orchestrator/execution-loop.js +60 -19
- package/dist/orchestrator/execution-loop.js.map +1 -1
- package/dist/orchestrator/failover-controller.d.ts +26 -2
- package/dist/orchestrator/failover-controller.d.ts.map +1 -1
- package/dist/orchestrator/failover-controller.js +143 -23
- package/dist/orchestrator/failover-controller.js.map +1 -1
- package/dist/orchestrator/orchestrator.d.ts +70 -7
- package/dist/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.js +417 -92
- package/dist/orchestrator/orchestrator.js.map +1 -1
- package/dist/orchestrator/retry-queue.d.ts.map +1 -1
- package/dist/orchestrator/retry-queue.js +24 -9
- package/dist/orchestrator/retry-queue.js.map +1 -1
- package/dist/orchestrator/router.d.ts +16 -1
- package/dist/orchestrator/router.d.ts.map +1 -1
- package/dist/orchestrator/router.js +79 -20
- package/dist/orchestrator/router.js.map +1 -1
- package/dist/orchestrator/session-manager.d.ts +26 -1
- package/dist/orchestrator/session-manager.d.ts.map +1 -1
- package/dist/orchestrator/session-manager.js +88 -4
- package/dist/orchestrator/session-manager.js.map +1 -1
- package/dist/providers/circuit-breaker.d.ts +78 -0
- package/dist/providers/circuit-breaker.d.ts.map +1 -0
- package/dist/providers/circuit-breaker.js +129 -0
- package/dist/providers/circuit-breaker.js.map +1 -0
- package/dist/providers/claude-provider.d.ts +27 -11
- package/dist/providers/claude-provider.d.ts.map +1 -1
- package/dist/providers/claude-provider.js +164 -45
- package/dist/providers/claude-provider.js.map +1 -1
- package/dist/providers/gemini-provider.d.ts +9 -1
- package/dist/providers/gemini-provider.d.ts.map +1 -1
- package/dist/providers/gemini-provider.js +97 -48
- package/dist/providers/gemini-provider.js.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama-provider.d.ts +7 -0
- package/dist/providers/ollama-provider.d.ts.map +1 -1
- package/dist/providers/ollama-provider.js +89 -18
- package/dist/providers/ollama-provider.js.map +1 -1
- package/dist/routines/heartbeat.d.ts +10 -2
- package/dist/routines/heartbeat.d.ts.map +1 -1
- package/dist/routines/heartbeat.js +42 -5
- package/dist/routines/heartbeat.js.map +1 -1
- package/dist/routines/routine-manager.d.ts.map +1 -1
- package/dist/routines/routine-manager.js +22 -15
- package/dist/routines/routine-manager.js.map +1 -1
- package/dist/security/audit-logger.d.ts.map +1 -1
- package/dist/security/audit-logger.js +5 -7
- package/dist/security/audit-logger.js.map +1 -1
- package/dist/security/policy-engine.d.ts +33 -17
- package/dist/security/policy-engine.d.ts.map +1 -1
- package/dist/security/policy-engine.js +68 -181
- package/dist/security/policy-engine.js.map +1 -1
- package/dist/security/policy-serializer.d.ts +19 -0
- package/dist/security/policy-serializer.d.ts.map +1 -0
- package/dist/security/policy-serializer.js +100 -0
- package/dist/security/policy-serializer.js.map +1 -0
- package/dist/security/shell-validator.d.ts +42 -0
- package/dist/security/shell-validator.d.ts.map +1 -0
- package/dist/security/shell-validator.js +231 -0
- package/dist/security/shell-validator.js.map +1 -0
- package/dist/skills/index.d.ts +1 -0
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -0
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/skill-loader.d.ts +38 -2
- package/dist/skills/skill-loader.d.ts.map +1 -1
- package/dist/skills/skill-loader.js +83 -2
- package/dist/skills/skill-loader.js.map +1 -1
- package/dist/skills/subagent-loader.d.ts +66 -0
- package/dist/skills/subagent-loader.d.ts.map +1 -0
- package/dist/skills/subagent-loader.js +143 -0
- package/dist/skills/subagent-loader.js.map +1 -0
- package/dist/steering/flag-manager.d.ts +20 -0
- package/dist/steering/flag-manager.d.ts.map +1 -1
- package/dist/steering/flag-manager.js +94 -11
- package/dist/steering/flag-manager.js.map +1 -1
- package/dist/steering/steering-manager.d.ts +11 -0
- package/dist/steering/steering-manager.d.ts.map +1 -1
- package/dist/steering/steering-manager.js +23 -0
- package/dist/steering/steering-manager.js.map +1 -1
- package/dist/steering/telegram-gateway.d.ts +4 -1
- package/dist/steering/telegram-gateway.d.ts.map +1 -1
- package/dist/steering/telegram-gateway.js +49 -10
- package/dist/steering/telegram-gateway.js.map +1 -1
- package/dist/teams/bridge-watchdog.d.ts.map +1 -1
- package/dist/teams/bridge-watchdog.js +5 -3
- package/dist/teams/bridge-watchdog.js.map +1 -1
- package/dist/teams/gemini-bridge.d.ts.map +1 -1
- package/dist/teams/gemini-bridge.js +9 -4
- package/dist/teams/gemini-bridge.js.map +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory-tools.d.ts +16 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +207 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/notifications.d.ts.map +1 -1
- package/dist/tools/notifications.js +3 -1
- package/dist/tools/notifications.js.map +1 -1
- package/dist/tools/tool-factory.d.ts +36 -0
- package/dist/tools/tool-factory.d.ts.map +1 -0
- package/dist/tools/tool-factory.js +55 -0
- package/dist/tools/tool-factory.js.map +1 -0
- package/dist/types.d.ts +213 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +47 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/errors.d.ts +21 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +29 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/event-filter.d.ts +25 -0
- package/dist/utils/event-filter.d.ts.map +1 -0
- package/dist/utils/event-filter.js +61 -0
- package/dist/utils/event-filter.js.map +1 -0
- package/dist/utils/logger.d.ts +33 -36
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +60 -130
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/validate-job-id.d.ts +6 -0
- package/dist/utils/validate-job-id.d.ts.map +1 -0
- package/dist/utils/validate-job-id.js +10 -0
- package/dist/utils/validate-job-id.js.map +1 -0
- package/package.json +12 -3
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook CLI Commands — ORCH-13
|
|
3
|
+
*
|
|
4
|
+
* Provides `zora hooks list` and `zora hooks test` commands
|
|
5
|
+
* for inspecting and testing registered lifecycle hooks.
|
|
6
|
+
*/
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import os from 'node:os';
|
|
9
|
+
import fs from 'node:fs';
|
|
10
|
+
import { createLogger } from '../utils/logger.js';
|
|
11
|
+
import { HOOK_EVENT_NAMES } from '../hooks/hook-types.js';
|
|
12
|
+
const log = createLogger('hook-commands');
|
|
13
|
+
/**
|
|
14
|
+
* Load hook config entries from config.toml (parsed).
|
|
15
|
+
* Reads the raw TOML and extracts [[hooks]] sections.
|
|
16
|
+
*/
|
|
17
|
+
async function loadHookConfigs(configDir) {
|
|
18
|
+
const configPath = path.join(configDir, 'config.toml');
|
|
19
|
+
if (!fs.existsSync(configPath)) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const { loadConfig } = await import('../config/loader.js');
|
|
24
|
+
const config = await loadConfig(configPath);
|
|
25
|
+
return config.hooks ?? [];
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
log.warn({ err }, 'Failed to load config for hooks');
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function registerHookCommands(program, configDir) {
|
|
33
|
+
const hooks = program
|
|
34
|
+
.command('hooks')
|
|
35
|
+
.description('Manage lifecycle hooks');
|
|
36
|
+
hooks
|
|
37
|
+
.command('list')
|
|
38
|
+
.description('List all configured hooks from config.toml')
|
|
39
|
+
.action(async () => {
|
|
40
|
+
const hookConfigs = await loadHookConfigs(configDir);
|
|
41
|
+
if (hookConfigs.length === 0) {
|
|
42
|
+
console.log('No hooks configured in config.toml.');
|
|
43
|
+
console.log('\nTo add hooks, add [[hooks]] sections to ~/.zora/config.toml:');
|
|
44
|
+
console.log('');
|
|
45
|
+
console.log(' [[hooks]]');
|
|
46
|
+
console.log(' event = "beforeToolExecute"');
|
|
47
|
+
console.log(' match = "Bash"');
|
|
48
|
+
console.log(' script = "~/.zora/hooks/validate-bash.sh"');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
console.log(`Found ${hookConfigs.length} hook(s):\n`);
|
|
52
|
+
const maxEventLen = Math.max(...hookConfigs.map((h) => h.event.length));
|
|
53
|
+
for (const hook of hookConfigs) {
|
|
54
|
+
const paddedEvent = hook.event.padEnd(maxEventLen + 2);
|
|
55
|
+
const matchStr = hook.match ? `match=${hook.match}` : 'match=*';
|
|
56
|
+
const scriptStr = hook.script ? `script=${hook.script}` : 'no script';
|
|
57
|
+
console.log(` ${paddedEvent}${matchStr} ${scriptStr}`);
|
|
58
|
+
}
|
|
59
|
+
console.log(`\nValid hook events: ${HOOK_EVENT_NAMES.join(', ')}`);
|
|
60
|
+
});
|
|
61
|
+
hooks
|
|
62
|
+
.command('test')
|
|
63
|
+
.description('Test a hook by simulating an event')
|
|
64
|
+
.argument('<event>', `Hook event to test (${HOOK_EVENT_NAMES.join(', ')})`)
|
|
65
|
+
.option('--tool <name>', 'Tool name for beforeToolExecute/afterToolExecute events', 'Bash')
|
|
66
|
+
.option('--args <json>', 'JSON arguments for the tool', '{}')
|
|
67
|
+
.action(async (event, _options) => {
|
|
68
|
+
if (!HOOK_EVENT_NAMES.includes(event)) {
|
|
69
|
+
console.error(`Invalid hook event: ${event}`);
|
|
70
|
+
console.error(`Valid events: ${HOOK_EVENT_NAMES.join(', ')}`);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
const hookConfigs = await loadHookConfigs(configDir);
|
|
74
|
+
const matching = hookConfigs.filter((h) => h.event === event);
|
|
75
|
+
if (matching.length === 0) {
|
|
76
|
+
console.log(`No hooks configured for event "${event}".`);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
console.log(`Testing ${matching.length} hook(s) for event "${event}"...\n`);
|
|
80
|
+
for (const hook of matching) {
|
|
81
|
+
if (!hook.script) {
|
|
82
|
+
console.log(` [skip] ${hook.event} — no script configured`);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const scriptPath = hook.script.replace(/^~/, os.homedir());
|
|
86
|
+
if (!fs.existsSync(scriptPath)) {
|
|
87
|
+
console.log(` [fail] ${hook.event} — script not found: ${scriptPath}`);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// Check if script is executable
|
|
91
|
+
try {
|
|
92
|
+
fs.accessSync(scriptPath, fs.constants.X_OK);
|
|
93
|
+
console.log(` [pass] ${hook.event} — script exists and is executable: ${hook.script}`);
|
|
94
|
+
if (hook.match) {
|
|
95
|
+
console.log(` match pattern: ${hook.match}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
console.log(` [warn] ${hook.event} — script exists but is NOT executable: ${hook.script}`);
|
|
100
|
+
console.log(` Run: chmod +x ${hook.script}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
console.log('\nNote: `hooks test` validates configuration only. It does not execute scripts.');
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=hook-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-commands.js","sourceRoot":"","sources":["../../src/cli/hook-commands.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { Command } from 'commander';
|
|
11
11
|
import * as clack from '@clack/prompts';
|
|
12
|
-
import {
|
|
12
|
+
import { resolveConfig } from '../config/loader.js';
|
|
13
|
+
import { resolvePolicy } from '../config/policy-loader.js';
|
|
13
14
|
import { PolicyEngine } from '../security/policy-engine.js';
|
|
14
15
|
import { SessionManager } from '../orchestrator/session-manager.js';
|
|
15
16
|
import { SteeringManager } from '../steering/steering-manager.js';
|
|
@@ -27,13 +28,19 @@ import { registerEditCommands } from './edit-commands.js';
|
|
|
27
28
|
import { registerTeamCommands } from './team-commands.js';
|
|
28
29
|
import { registerSteerCommands } from './steer-commands.js';
|
|
29
30
|
import { registerSkillCommands } from './skill-commands.js';
|
|
31
|
+
import { registerHookCommands } from './hook-commands.js';
|
|
30
32
|
import { registerInitCommand } from './init-command.js';
|
|
31
33
|
import { runDoctorChecks } from './doctor.js';
|
|
34
|
+
import { createLogger } from '../utils/logger.js';
|
|
35
|
+
import { createRequire } from 'node:module';
|
|
36
|
+
const log = createLogger('cli');
|
|
32
37
|
const program = new Command();
|
|
38
|
+
const require = createRequire(import.meta.url);
|
|
39
|
+
const pkg = require('../../package.json');
|
|
33
40
|
program
|
|
34
41
|
.name('zora-agent')
|
|
35
42
|
.description('Long-running autonomous personal AI agent')
|
|
36
|
-
.version(
|
|
43
|
+
.version(pkg.version);
|
|
37
44
|
/**
|
|
38
45
|
* Creates LLMProvider instances from config.
|
|
39
46
|
*/
|
|
@@ -42,7 +49,11 @@ function createProviders(config) {
|
|
|
42
49
|
for (const pConfig of config.providers) {
|
|
43
50
|
if (!pConfig.enabled)
|
|
44
51
|
continue;
|
|
45
|
-
|
|
52
|
+
// TYPE-07: Cast to KnownProviderType for exhaustiveness checking.
|
|
53
|
+
// If a new provider type is added to KnownProviderType, TypeScript
|
|
54
|
+
// will flag the missing case via the `never` check in the default branch.
|
|
55
|
+
const providerType = pConfig.type;
|
|
56
|
+
switch (providerType) {
|
|
46
57
|
case 'claude-sdk':
|
|
47
58
|
providers.push(new ClaudeProvider({ config: pConfig }));
|
|
48
59
|
break;
|
|
@@ -52,48 +63,74 @@ function createProviders(config) {
|
|
|
52
63
|
case 'ollama':
|
|
53
64
|
providers.push(new OllamaProvider({ config: pConfig }));
|
|
54
65
|
break;
|
|
55
|
-
default:
|
|
56
|
-
|
|
66
|
+
default: {
|
|
67
|
+
// Exhaustiveness check: if KnownProviderType gains a new member
|
|
68
|
+
// and we don't add a case, TypeScript reports an error here.
|
|
69
|
+
const _exhaustive = providerType;
|
|
70
|
+
log.warn({ type: pConfig.type, name: pConfig.name }, 'Unknown provider type, skipping');
|
|
71
|
+
void _exhaustive;
|
|
72
|
+
}
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
75
|
return providers;
|
|
60
76
|
}
|
|
61
77
|
/**
|
|
62
78
|
* Returns the path to the daemon PID file.
|
|
79
|
+
* Uses project .zora/ if it exists in the given dir, else global.
|
|
63
80
|
*/
|
|
64
|
-
function getPidFilePath() {
|
|
81
|
+
function getPidFilePath(projectDir) {
|
|
82
|
+
if (projectDir) {
|
|
83
|
+
const projectZora = path.join(projectDir, '.zora');
|
|
84
|
+
if (fs.existsSync(projectZora)) {
|
|
85
|
+
return path.join(projectZora, 'state', 'daemon.pid');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
65
88
|
return path.join(os.homedir(), '.zora', 'state', 'daemon.pid');
|
|
66
89
|
}
|
|
67
90
|
/**
|
|
68
91
|
* Common setup for commands that need config and services.
|
|
92
|
+
* Uses three-layer config resolution: defaults → global → project.
|
|
69
93
|
*/
|
|
70
|
-
async function setupContext() {
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
94
|
+
async function setupContext(projectDir) {
|
|
95
|
+
const cwd = projectDir ?? process.cwd();
|
|
96
|
+
// Three-layer config resolution
|
|
97
|
+
let config;
|
|
98
|
+
let sources;
|
|
99
|
+
try {
|
|
100
|
+
const resolved = await resolveConfig({ projectDir: cwd });
|
|
101
|
+
config = resolved.config;
|
|
102
|
+
sources = resolved.sources;
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
// If no config at all, give a friendly message
|
|
106
|
+
const globalPath = path.join(os.homedir(), '.zora', 'config.toml');
|
|
107
|
+
if (!fs.existsSync(globalPath)) {
|
|
108
|
+
log.error("Zora isn't configured yet. Run 'zora-agent init' to set up in 2 minutes.");
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
log.error({ err }, 'Config resolution failed.');
|
|
112
|
+
}
|
|
77
113
|
process.exit(1);
|
|
78
114
|
}
|
|
79
|
-
|
|
80
|
-
// Load policy from TOML using centralized loader
|
|
81
|
-
const { loadPolicy } = await import('../config/policy-loader.js');
|
|
115
|
+
// Two-layer policy resolution
|
|
82
116
|
let policy;
|
|
83
117
|
try {
|
|
84
|
-
policy = await
|
|
118
|
+
policy = await resolvePolicy({ projectDir: cwd });
|
|
85
119
|
}
|
|
86
120
|
catch {
|
|
87
|
-
|
|
121
|
+
log.error('Policy not found at ~/.zora/policy.toml. Run `zora-agent init` first.');
|
|
88
122
|
process.exit(1);
|
|
89
123
|
}
|
|
124
|
+
// Determine baseDir: project .zora/ if it exists, else global
|
|
125
|
+
const projectZora = path.join(cwd, '.zora');
|
|
126
|
+
const configDir = fs.existsSync(projectZora) ? projectZora : path.join(os.homedir(), '.zora');
|
|
90
127
|
const engine = new PolicyEngine(policy);
|
|
91
128
|
const sessionManager = new SessionManager(configDir);
|
|
92
129
|
const steeringManager = new SteeringManager(configDir);
|
|
93
130
|
await steeringManager.init();
|
|
94
131
|
const memoryManager = new MemoryManager(config.memory, configDir);
|
|
95
132
|
await memoryManager.init();
|
|
96
|
-
return { config, policy, engine, sessionManager, steeringManager, memoryManager };
|
|
133
|
+
return { config, policy, engine, sessionManager, steeringManager, memoryManager, configDir, sources };
|
|
97
134
|
}
|
|
98
135
|
// R10: Refactored `ask` command to use Orchestrator
|
|
99
136
|
program
|
|
@@ -107,13 +144,14 @@ program
|
|
|
107
144
|
const { config, policy } = await setupContext();
|
|
108
145
|
const providers = createProviders(config);
|
|
109
146
|
if (providers.length === 0) {
|
|
110
|
-
|
|
147
|
+
log.error('No enabled providers found in config.');
|
|
111
148
|
process.exit(1);
|
|
112
149
|
}
|
|
113
150
|
const orchestrator = new Orchestrator({ config, policy, providers });
|
|
114
151
|
await orchestrator.boot();
|
|
115
152
|
try {
|
|
116
153
|
let spinnerActive = true;
|
|
154
|
+
let streamedText = false;
|
|
117
155
|
const spinner = clack.spinner();
|
|
118
156
|
spinner.start('Running task...');
|
|
119
157
|
const result = await orchestrator.submitTask({
|
|
@@ -129,6 +167,7 @@ program
|
|
|
129
167
|
}
|
|
130
168
|
switch (event.type) {
|
|
131
169
|
case 'text':
|
|
170
|
+
streamedText = true;
|
|
132
171
|
console.log(event.content.text);
|
|
133
172
|
break;
|
|
134
173
|
case 'tool_call': {
|
|
@@ -137,7 +176,7 @@ program
|
|
|
137
176
|
break;
|
|
138
177
|
}
|
|
139
178
|
case 'error':
|
|
140
|
-
|
|
179
|
+
log.error({ message: event.content.message }, 'Task error');
|
|
141
180
|
break;
|
|
142
181
|
}
|
|
143
182
|
},
|
|
@@ -145,7 +184,8 @@ program
|
|
|
145
184
|
if (spinnerActive) {
|
|
146
185
|
spinner.stop('Task complete.');
|
|
147
186
|
}
|
|
148
|
-
|
|
187
|
+
// Only print final result if we didn't already stream it
|
|
188
|
+
if (result && !streamedText) {
|
|
149
189
|
console.log('\n' + result);
|
|
150
190
|
}
|
|
151
191
|
}
|
|
@@ -192,7 +232,8 @@ program
|
|
|
192
232
|
* Shared daemon start logic — used by both `zora-agent start` and `zora-agent daemon start`.
|
|
193
233
|
*/
|
|
194
234
|
async function startDaemon(opts) {
|
|
195
|
-
const
|
|
235
|
+
const projectDir = opts.project ?? process.cwd();
|
|
236
|
+
const pidFile = getPidFilePath(projectDir);
|
|
196
237
|
// Check if already running
|
|
197
238
|
if (fs.existsSync(pidFile)) {
|
|
198
239
|
try {
|
|
@@ -218,23 +259,17 @@ async function startDaemon(opts) {
|
|
|
218
259
|
const child = fork(daemonScript, [], {
|
|
219
260
|
detached: true,
|
|
220
261
|
stdio: 'ignore',
|
|
262
|
+
env: { ...process.env, ZORA_PROJECT_DIR: projectDir },
|
|
221
263
|
});
|
|
222
264
|
if (child.pid) {
|
|
223
265
|
fs.writeFileSync(pidFile, String(child.pid), { mode: 0o600 });
|
|
224
266
|
child.unref();
|
|
225
267
|
console.log(`Zora daemon started (PID: ${child.pid}).`);
|
|
226
|
-
// Read dashboard port from config, falling back to
|
|
227
|
-
let dashboardPort =
|
|
268
|
+
// Read dashboard port from resolved config, falling back to 8070
|
|
269
|
+
let dashboardPort = 8070;
|
|
228
270
|
try {
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
const { parse: parseTOML } = await import('smol-toml');
|
|
232
|
-
const raw = parseTOML(fs.readFileSync(configPath, 'utf-8'));
|
|
233
|
-
const steering = raw['steering'];
|
|
234
|
-
if (steering?.['dashboard_port']) {
|
|
235
|
-
dashboardPort = steering['dashboard_port'];
|
|
236
|
-
}
|
|
237
|
-
}
|
|
271
|
+
const { config: resolvedConfig } = await resolveConfig({ projectDir });
|
|
272
|
+
dashboardPort = resolvedConfig.steering.dashboard_port ?? 8070;
|
|
238
273
|
}
|
|
239
274
|
catch {
|
|
240
275
|
// Use default port if config can't be read
|
|
@@ -249,7 +284,7 @@ async function startDaemon(opts) {
|
|
|
249
284
|
}
|
|
250
285
|
}
|
|
251
286
|
else {
|
|
252
|
-
|
|
287
|
+
log.error('Failed to start daemon');
|
|
253
288
|
}
|
|
254
289
|
}
|
|
255
290
|
/**
|
|
@@ -306,6 +341,7 @@ async function stopDaemon() {
|
|
|
306
341
|
program
|
|
307
342
|
.command('start')
|
|
308
343
|
.description('Start the agent daemon')
|
|
344
|
+
.option('--project <dir>', 'Project directory with .zora/ config')
|
|
309
345
|
.option('--no-open', 'Do not auto-open the dashboard in browser')
|
|
310
346
|
.action(async (opts) => startDaemon(opts));
|
|
311
347
|
// R12: Real stop command
|
|
@@ -320,6 +356,7 @@ const daemonCmd = program
|
|
|
320
356
|
daemonCmd
|
|
321
357
|
.command('start')
|
|
322
358
|
.description('Start the agent daemon')
|
|
359
|
+
.option('--project <dir>', 'Project directory with .zora/ config')
|
|
323
360
|
.option('--no-open', 'Do not auto-open the dashboard in browser')
|
|
324
361
|
.action(async (opts) => startDaemon(opts));
|
|
325
362
|
daemonCmd
|
|
@@ -336,12 +373,29 @@ daemonCmd
|
|
|
336
373
|
program
|
|
337
374
|
.command('doctor')
|
|
338
375
|
.description('Check system dependencies and configuration')
|
|
339
|
-
.
|
|
376
|
+
.option('--project <dir>', 'Project directory to check')
|
|
377
|
+
.action(async (opts) => {
|
|
340
378
|
const result = await runDoctorChecks();
|
|
341
379
|
console.log('Zora Doctor Report:');
|
|
380
|
+
console.log('');
|
|
381
|
+
console.log('Dependencies:');
|
|
342
382
|
console.log(` Node.js: ${result.node.found ? '✓' : '✗'} ${result.node.version}`);
|
|
343
383
|
console.log(` Claude CLI: ${result.claude.found ? '✓' : '✗'}${result.claude.path ? ` (${result.claude.path})` : ''}`);
|
|
344
384
|
console.log(` Gemini CLI: ${result.gemini.found ? '✓' : '✗'}${result.gemini.path ? ` (${result.gemini.path})` : ''}`);
|
|
385
|
+
// Config resolution — show which files are loaded
|
|
386
|
+
console.log('');
|
|
387
|
+
console.log('Config sources:');
|
|
388
|
+
try {
|
|
389
|
+
const projectDir = opts.project ?? process.cwd();
|
|
390
|
+
const { sources } = await resolveConfig({ projectDir });
|
|
391
|
+
sources.forEach((src, i) => {
|
|
392
|
+
const label = src === 'defaults' ? 'defaults (built-in)' : src;
|
|
393
|
+
console.log(` ${i + 1}. ${label}`);
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
catch {
|
|
397
|
+
console.log(' (unable to resolve config — run `zora-agent init` first)');
|
|
398
|
+
}
|
|
345
399
|
if (!result.node.found) {
|
|
346
400
|
console.log('\n⚠️ Node.js 20+ is required. Please upgrade.');
|
|
347
401
|
}
|
|
@@ -359,6 +413,7 @@ registerEditCommands(program, configDir);
|
|
|
359
413
|
registerTeamCommands(program, configDir);
|
|
360
414
|
registerSteerCommands(program, configDir);
|
|
361
415
|
registerSkillCommands(program);
|
|
416
|
+
registerHookCommands(program, configDir);
|
|
362
417
|
registerInitCommand(program);
|
|
363
418
|
program.parse();
|
|
364
419
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-command.d.ts","sourceRoot":"","sources":["../../src/cli/init-command.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"init-command.d.ts","sourceRoot":"","sources":["../../src/cli/init-command.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAkC/C;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EAAE,EACrB,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,CAoBR;AAUD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAmH/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAOzD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKnD;AAoWD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgB1D"}
|
package/dist/cli/init-command.js
CHANGED
|
@@ -12,6 +12,8 @@ import { stringify as stringifyTOML } from 'smol-toml';
|
|
|
12
12
|
import { parse as parseTOML } from 'smol-toml';
|
|
13
13
|
import { PRESETS, TOOL_STACKS } from './presets.js';
|
|
14
14
|
import { runDoctorChecks } from './doctor.js';
|
|
15
|
+
import { createLogger } from '../utils/logger.js';
|
|
16
|
+
const log = createLogger('init');
|
|
15
17
|
const ZORA_DIR = path.join(os.homedir(), '.zora');
|
|
16
18
|
/**
|
|
17
19
|
* Directories to scaffold under ~/.zora/
|
|
@@ -146,6 +148,7 @@ context_days = 7
|
|
|
146
148
|
max_context_items = 20
|
|
147
149
|
max_category_summaries = 5
|
|
148
150
|
auto_extract_interval = 10
|
|
151
|
+
auto_extract = true
|
|
149
152
|
|
|
150
153
|
[security]
|
|
151
154
|
policy_file = "~/.zora/policy.toml"
|
|
@@ -162,7 +165,7 @@ jit_secret_decryption = true
|
|
|
162
165
|
[steering]
|
|
163
166
|
enabled = true
|
|
164
167
|
poll_interval = "5s"
|
|
165
|
-
dashboard_port =
|
|
168
|
+
dashboard_port = 8070
|
|
166
169
|
notify_on_flag = true
|
|
167
170
|
flag_timeout = "10m"
|
|
168
171
|
auto_approve_low_risk = true
|
|
@@ -239,13 +242,12 @@ async function runWizard(opts) {
|
|
|
239
242
|
fs.existsSync(configPath) ? 'config.toml' : null,
|
|
240
243
|
fs.existsSync(policyPath) ? 'policy.toml' : null,
|
|
241
244
|
].filter(Boolean).join(' and ');
|
|
242
|
-
|
|
243
|
-
console.error('Use --force to overwrite.');
|
|
245
|
+
log.error({ existing, dir: ZORA_DIR }, 'Existing configuration found. Use --force to overwrite.');
|
|
244
246
|
process.exit(1);
|
|
245
247
|
}
|
|
246
248
|
// Validate preset name early
|
|
247
249
|
if (opts.preset && !PRESET_ALIASES[opts.preset]) {
|
|
248
|
-
|
|
250
|
+
log.error({ preset: opts.preset, validPresets: Object.keys(PRESET_ALIASES) }, 'Unknown preset');
|
|
249
251
|
process.exit(1);
|
|
250
252
|
}
|
|
251
253
|
// ── Step 1: Welcome + Trust explanation ──────────────────────────
|
|
@@ -359,6 +361,7 @@ async function runWizard(opts) {
|
|
|
359
361
|
{ value: 'python', label: 'Python', hint: 'python3, pip, pip3' },
|
|
360
362
|
{ value: 'rust', label: 'Rust', hint: 'cargo, rustc, rustup' },
|
|
361
363
|
{ value: 'go', label: 'Go', hint: 'go' },
|
|
364
|
+
{ value: 'mcp', label: 'MCP', hint: 'mcp-cli (bridge to MCP servers)' },
|
|
362
365
|
{ value: 'general', label: 'General CLI', hint: 'ls, pwd, cat, head, grep, find, etc.' },
|
|
363
366
|
],
|
|
364
367
|
initialValues: ['node', 'general'],
|
|
@@ -397,14 +400,14 @@ async function runWizard(opts) {
|
|
|
397
400
|
parseTOML(policyToml);
|
|
398
401
|
}
|
|
399
402
|
catch (e) {
|
|
400
|
-
|
|
403
|
+
log.error({ err: e }, 'Generated policy.toml is invalid TOML');
|
|
401
404
|
process.exit(1);
|
|
402
405
|
}
|
|
403
406
|
try {
|
|
404
407
|
parseTOML(configToml);
|
|
405
408
|
}
|
|
406
409
|
catch (e) {
|
|
407
|
-
|
|
410
|
+
log.error({ err: e }, 'Generated config.toml is invalid TOML');
|
|
408
411
|
process.exit(1);
|
|
409
412
|
}
|
|
410
413
|
// Scaffold and write
|
|
@@ -419,11 +422,101 @@ Try it:
|
|
|
419
422
|
|
|
420
423
|
Or start the dashboard:
|
|
421
424
|
zora-agent start
|
|
422
|
-
Then open http://localhost:
|
|
425
|
+
Then open http://localhost:8070
|
|
423
426
|
|
|
424
427
|
To expand permissions later:
|
|
425
428
|
Edit ~/.zora/policy.toml or re-run: zora-agent init --force`);
|
|
426
429
|
}
|
|
430
|
+
/**
|
|
431
|
+
* Generate a minimal project config.toml.
|
|
432
|
+
* Only includes agent.name (from dir name) and dashboard_port.
|
|
433
|
+
*/
|
|
434
|
+
function generateProjectConfigToml(dirName, dashboardPort) {
|
|
435
|
+
return `# Zora Project Configuration — overrides ~/.zora/config.toml
|
|
436
|
+
# Only specify what differs from global. Everything else inherits.
|
|
437
|
+
|
|
438
|
+
[agent]
|
|
439
|
+
name = "${dirName}"
|
|
440
|
+
|
|
441
|
+
[steering]
|
|
442
|
+
dashboard_port = ${dashboardPort}
|
|
443
|
+
`;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Generate a minimal project policy.toml.
|
|
447
|
+
* Scopes filesystem to the project directory.
|
|
448
|
+
*/
|
|
449
|
+
function generateProjectPolicyToml(projectDir) {
|
|
450
|
+
const tildeDir = projectDir.replace(os.homedir(), '~');
|
|
451
|
+
return `# Zora Project Policy — overrides ~/.zora/policy.toml
|
|
452
|
+
# Only specify what differs from global. Everything else inherits.
|
|
453
|
+
|
|
454
|
+
[filesystem]
|
|
455
|
+
allowed_paths = ["${tildeDir}"]
|
|
456
|
+
`;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Run project-level init: creates .zora/ in the current directory
|
|
460
|
+
* with minimal overrides.
|
|
461
|
+
*/
|
|
462
|
+
async function initProject(opts) {
|
|
463
|
+
const projectDir = process.cwd();
|
|
464
|
+
const zoraDir = path.join(projectDir, '.zora');
|
|
465
|
+
const configPath = path.join(zoraDir, 'config.toml');
|
|
466
|
+
const policyPath = path.join(zoraDir, 'policy.toml');
|
|
467
|
+
// Check for existing global config (project init requires global init first)
|
|
468
|
+
const globalConfig = path.join(os.homedir(), '.zora', 'config.toml');
|
|
469
|
+
if (!fs.existsSync(globalConfig)) {
|
|
470
|
+
log.error('Global config not found. Run `zora-agent init` first, then `zora-agent init --project`.');
|
|
471
|
+
process.exit(1);
|
|
472
|
+
}
|
|
473
|
+
// Guard: refuse to overwrite unless --force
|
|
474
|
+
if (!opts.force && fs.existsSync(configPath)) {
|
|
475
|
+
log.error({ dir: zoraDir }, 'Project .zora/ already exists. Use --force to overwrite.');
|
|
476
|
+
process.exit(1);
|
|
477
|
+
}
|
|
478
|
+
const dirName = path.basename(projectDir);
|
|
479
|
+
// Auto-assign a dashboard port offset from the global default (8070)
|
|
480
|
+
// Use a simple hash of the dir name to pick a port in 8071-8099 range
|
|
481
|
+
let portOffset = 1;
|
|
482
|
+
for (const ch of dirName) {
|
|
483
|
+
portOffset = ((portOffset * 31) + ch.charCodeAt(0)) % 29; // 0-28
|
|
484
|
+
}
|
|
485
|
+
const dashboardPort = 8071 + portOffset;
|
|
486
|
+
const configToml = generateProjectConfigToml(dirName, dashboardPort);
|
|
487
|
+
const policyToml = generateProjectPolicyToml(projectDir);
|
|
488
|
+
// Validate generated TOML
|
|
489
|
+
try {
|
|
490
|
+
parseTOML(configToml);
|
|
491
|
+
parseTOML(policyToml);
|
|
492
|
+
}
|
|
493
|
+
catch (e) {
|
|
494
|
+
log.error({ err: e }, 'Generated TOML is invalid');
|
|
495
|
+
process.exit(1);
|
|
496
|
+
}
|
|
497
|
+
// Create .zora/ directory structure
|
|
498
|
+
if (!fs.existsSync(zoraDir)) {
|
|
499
|
+
fs.mkdirSync(zoraDir, { recursive: true });
|
|
500
|
+
}
|
|
501
|
+
for (const sub of ['state', 'sessions', 'memory', 'memory/daily', 'memory/items', 'memory/categories']) {
|
|
502
|
+
const dir = path.join(zoraDir, sub);
|
|
503
|
+
if (!fs.existsSync(dir)) {
|
|
504
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
fs.writeFileSync(configPath, configToml, 'utf-8');
|
|
508
|
+
fs.writeFileSync(policyPath, policyToml, 'utf-8');
|
|
509
|
+
clack.intro('Project initialized');
|
|
510
|
+
clack.note([
|
|
511
|
+
`Created: ${zoraDir}/`,
|
|
512
|
+
` config.toml (agent: ${dirName}, port: ${dashboardPort})`,
|
|
513
|
+
` policy.toml (filesystem scoped to ${projectDir})`,
|
|
514
|
+
'',
|
|
515
|
+
'Edit these to override global ~/.zora/ settings.',
|
|
516
|
+
'Start with: zora-agent start',
|
|
517
|
+
].join('\n'), 'Project .zora/');
|
|
518
|
+
clack.outro('Project config ready. Global settings inherited for everything else.');
|
|
519
|
+
}
|
|
427
520
|
/**
|
|
428
521
|
* Register the `zora-agent init` command on the commander program.
|
|
429
522
|
*/
|
|
@@ -431,12 +524,18 @@ export function registerInitCommand(program) {
|
|
|
431
524
|
program
|
|
432
525
|
.command('init')
|
|
433
526
|
.description('Set up Zora — generate config, policy, and directory structure')
|
|
527
|
+
.option('--project', 'Initialize project-level .zora/ in the current directory')
|
|
434
528
|
.option('--preset <preset>', 'Security preset: locked, safe, balanced, or power')
|
|
435
529
|
.option('--dev-path <path>', 'Path to your code directory')
|
|
436
530
|
.option('-y, --yes', 'Accept all defaults (non-interactive)')
|
|
437
531
|
.option('--force', 'Overwrite existing config files')
|
|
438
532
|
.action(async (opts) => {
|
|
439
|
-
|
|
533
|
+
if (opts.project) {
|
|
534
|
+
await initProject(opts);
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
await runWizard(opts);
|
|
538
|
+
}
|
|
440
539
|
});
|
|
441
540
|
}
|
|
442
541
|
//# sourceMappingURL=init-command.js.map
|