zora-agent 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +145 -0
- package/LICENSE +21 -0
- package/README.md +159 -0
- package/dist/cli/audit-commands.d.ts +8 -0
- package/dist/cli/audit-commands.d.ts.map +1 -0
- package/dist/cli/audit-commands.js +67 -0
- package/dist/cli/audit-commands.js.map +1 -0
- package/dist/cli/daemon.d.ts +9 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/daemon.js +107 -0
- package/dist/cli/daemon.js.map +1 -0
- package/dist/cli/doctor.d.ts +21 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +31 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/edit-commands.d.ts +8 -0
- package/dist/cli/edit-commands.d.ts.map +1 -0
- package/dist/cli/edit-commands.js +46 -0
- package/dist/cli/edit-commands.js.map +1 -0
- package/dist/cli/index.d.ts +11 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +319 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-command.d.ts +30 -0
- package/dist/cli/init-command.d.ts.map +1 -0
- package/dist/cli/init-command.js +425 -0
- package/dist/cli/init-command.js.map +1 -0
- package/dist/cli/memory-commands.d.ts +11 -0
- package/dist/cli/memory-commands.d.ts.map +1 -0
- package/dist/cli/memory-commands.js +57 -0
- package/dist/cli/memory-commands.js.map +1 -0
- package/dist/cli/presets.d.ts +12 -0
- package/dist/cli/presets.d.ts.map +1 -0
- package/dist/cli/presets.js +169 -0
- package/dist/cli/presets.js.map +1 -0
- package/dist/cli/skill-commands.d.ts +10 -0
- package/dist/cli/skill-commands.d.ts.map +1 -0
- package/dist/cli/skill-commands.js +73 -0
- package/dist/cli/skill-commands.js.map +1 -0
- package/dist/cli/steer-commands.d.ts +10 -0
- package/dist/cli/steer-commands.d.ts.map +1 -0
- package/dist/cli/steer-commands.js +92 -0
- package/dist/cli/steer-commands.js.map +1 -0
- package/dist/cli/team-commands.d.ts +8 -0
- package/dist/cli/team-commands.d.ts.map +1 -0
- package/dist/cli/team-commands.js +93 -0
- package/dist/cli/team-commands.js.map +1 -0
- package/dist/config/defaults.d.ts +26 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +173 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +30 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +130 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/policy-loader.d.ts +18 -0
- package/dist/config/policy-loader.d.ts.map +1 -0
- package/dist/config/policy-loader.js +72 -0
- package/dist/config/policy-loader.js.map +1 -0
- package/dist/dashboard/auth-middleware.d.ts +15 -0
- package/dist/dashboard/auth-middleware.d.ts.map +1 -0
- package/dist/dashboard/auth-middleware.js +44 -0
- package/dist/dashboard/auth-middleware.js.map +1 -0
- package/dist/dashboard/frontend/vite.config.d.ts +3 -0
- package/dist/dashboard/frontend/vite.config.d.ts.map +1 -0
- package/dist/dashboard/frontend/vite.config.js +11 -0
- package/dist/dashboard/frontend/vite.config.js.map +1 -0
- package/dist/dashboard/server.d.ts +55 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +254 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/category-organizer.d.ts +33 -0
- package/dist/memory/category-organizer.d.ts.map +1 -0
- package/dist/memory/category-organizer.js +137 -0
- package/dist/memory/category-organizer.js.map +1 -0
- package/dist/memory/extraction-pipeline.d.ts +22 -0
- package/dist/memory/extraction-pipeline.d.ts.map +1 -0
- package/dist/memory/extraction-pipeline.js +156 -0
- package/dist/memory/extraction-pipeline.js.map +1 -0
- package/dist/memory/index.d.ts +7 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +7 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +56 -0
- package/dist/memory/memory-manager.d.ts.map +1 -0
- package/dist/memory/memory-manager.js +198 -0
- package/dist/memory/memory-manager.js.map +1 -0
- package/dist/memory/memory-types.d.ts +44 -0
- package/dist/memory/memory-types.d.ts.map +1 -0
- package/dist/memory/memory-types.js +8 -0
- package/dist/memory/memory-types.js.map +1 -0
- package/dist/memory/salience-scorer.d.ts +19 -0
- package/dist/memory/salience-scorer.d.ts.map +1 -0
- package/dist/memory/salience-scorer.js +72 -0
- package/dist/memory/salience-scorer.js.map +1 -0
- package/dist/memory/structured-memory.d.ts +28 -0
- package/dist/memory/structured-memory.d.ts.map +1 -0
- package/dist/memory/structured-memory.js +140 -0
- package/dist/memory/structured-memory.js.map +1 -0
- package/dist/orchestrator/auth-monitor.d.ts +28 -0
- package/dist/orchestrator/auth-monitor.d.ts.map +1 -0
- package/dist/orchestrator/auth-monitor.js +49 -0
- package/dist/orchestrator/auth-monitor.js.map +1 -0
- package/dist/orchestrator/execution-loop.d.ts +59 -0
- package/dist/orchestrator/execution-loop.d.ts.map +1 -0
- package/dist/orchestrator/execution-loop.js +94 -0
- package/dist/orchestrator/execution-loop.js.map +1 -0
- package/dist/orchestrator/failover-controller.d.ts +32 -0
- package/dist/orchestrator/failover-controller.d.ts.map +1 -0
- package/dist/orchestrator/failover-controller.js +111 -0
- package/dist/orchestrator/failover-controller.js.map +1 -0
- package/dist/orchestrator/index.d.ts +11 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +11 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +99 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator.js +456 -0
- package/dist/orchestrator/orchestrator.js.map +1 -0
- package/dist/orchestrator/retry-queue.d.ts +39 -0
- package/dist/orchestrator/retry-queue.d.ts.map +1 -0
- package/dist/orchestrator/retry-queue.js +99 -0
- package/dist/orchestrator/retry-queue.js.map +1 -0
- package/dist/orchestrator/router.d.ts +49 -0
- package/dist/orchestrator/router.d.ts.map +1 -0
- package/dist/orchestrator/router.js +167 -0
- package/dist/orchestrator/router.js.map +1 -0
- package/dist/orchestrator/session-manager.d.ts +39 -0
- package/dist/orchestrator/session-manager.d.ts.map +1 -0
- package/dist/orchestrator/session-manager.js +117 -0
- package/dist/orchestrator/session-manager.js.map +1 -0
- package/dist/providers/claude-provider.d.ts +182 -0
- package/dist/providers/claude-provider.d.ts.map +1 -0
- package/dist/providers/claude-provider.js +443 -0
- package/dist/providers/claude-provider.js.map +1 -0
- package/dist/providers/gemini-provider.d.ts +46 -0
- package/dist/providers/gemini-provider.d.ts.map +1 -0
- package/dist/providers/gemini-provider.js +336 -0
- package/dist/providers/gemini-provider.js.map +1 -0
- package/dist/providers/index.d.ts +10 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +10 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ollama-provider.d.ts +61 -0
- package/dist/providers/ollama-provider.d.ts.map +1 -0
- package/dist/providers/ollama-provider.js +319 -0
- package/dist/providers/ollama-provider.js.map +1 -0
- package/dist/routines/event-triggers.d.ts +34 -0
- package/dist/routines/event-triggers.d.ts.map +1 -0
- package/dist/routines/event-triggers.js +104 -0
- package/dist/routines/event-triggers.js.map +1 -0
- package/dist/routines/heartbeat.d.ts +35 -0
- package/dist/routines/heartbeat.d.ts.map +1 -0
- package/dist/routines/heartbeat.js +93 -0
- package/dist/routines/heartbeat.js.map +1 -0
- package/dist/routines/index.d.ts +7 -0
- package/dist/routines/index.d.ts.map +1 -0
- package/dist/routines/index.js +7 -0
- package/dist/routines/index.js.map +1 -0
- package/dist/routines/routine-manager.d.ts +62 -0
- package/dist/routines/routine-manager.d.ts.map +1 -0
- package/dist/routines/routine-manager.js +148 -0
- package/dist/routines/routine-manager.js.map +1 -0
- package/dist/security/audit-logger.d.ts +55 -0
- package/dist/security/audit-logger.d.ts.map +1 -0
- package/dist/security/audit-logger.js +252 -0
- package/dist/security/audit-logger.js.map +1 -0
- package/dist/security/capability-tokens.d.ts +30 -0
- package/dist/security/capability-tokens.d.ts.map +1 -0
- package/dist/security/capability-tokens.js +110 -0
- package/dist/security/capability-tokens.js.map +1 -0
- package/dist/security/index.d.ts +18 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +12 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/integrity-guardian.d.ts +43 -0
- package/dist/security/integrity-guardian.d.ts.map +1 -0
- package/dist/security/integrity-guardian.js +103 -0
- package/dist/security/integrity-guardian.js.map +1 -0
- package/dist/security/intent-capsule.d.ts +52 -0
- package/dist/security/intent-capsule.d.ts.map +1 -0
- package/dist/security/intent-capsule.js +157 -0
- package/dist/security/intent-capsule.js.map +1 -0
- package/dist/security/leak-detector.d.ts +26 -0
- package/dist/security/leak-detector.d.ts.map +1 -0
- package/dist/security/leak-detector.js +75 -0
- package/dist/security/leak-detector.js.map +1 -0
- package/dist/security/policy-engine.d.ts +188 -0
- package/dist/security/policy-engine.d.ts.map +1 -0
- package/dist/security/policy-engine.js +799 -0
- package/dist/security/policy-engine.js.map +1 -0
- package/dist/security/prompt-defense.d.ts +30 -0
- package/dist/security/prompt-defense.d.ts.map +1 -0
- package/dist/security/prompt-defense.js +164 -0
- package/dist/security/prompt-defense.js.map +1 -0
- package/dist/security/secrets-manager.d.ts +47 -0
- package/dist/security/secrets-manager.d.ts.map +1 -0
- package/dist/security/secrets-manager.js +132 -0
- package/dist/security/secrets-manager.js.map +1 -0
- package/dist/security/security-types.d.ts +84 -0
- package/dist/security/security-types.d.ts.map +1 -0
- package/dist/security/security-types.js +8 -0
- package/dist/security/security-types.js.map +1 -0
- package/dist/skills/index.d.ts +5 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +5 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skill-loader.d.ts +25 -0
- package/dist/skills/skill-loader.d.ts.map +1 -0
- package/dist/skills/skill-loader.js +64 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/steering/flag-manager.d.ts +52 -0
- package/dist/steering/flag-manager.d.ts.map +1 -0
- package/dist/steering/flag-manager.js +160 -0
- package/dist/steering/flag-manager.js.map +1 -0
- package/dist/steering/index.d.ts +8 -0
- package/dist/steering/index.d.ts.map +1 -0
- package/dist/steering/index.js +8 -0
- package/dist/steering/index.js.map +1 -0
- package/dist/steering/steer-injector.d.ts +15 -0
- package/dist/steering/steer-injector.d.ts.map +1 -0
- package/dist/steering/steer-injector.js +41 -0
- package/dist/steering/steer-injector.js.map +1 -0
- package/dist/steering/steering-manager.d.ts +33 -0
- package/dist/steering/steering-manager.d.ts.map +1 -0
- package/dist/steering/steering-manager.js +79 -0
- package/dist/steering/steering-manager.js.map +1 -0
- package/dist/steering/telegram-gateway.d.ts +27 -0
- package/dist/steering/telegram-gateway.d.ts.map +1 -0
- package/dist/steering/telegram-gateway.js +89 -0
- package/dist/steering/telegram-gateway.js.map +1 -0
- package/dist/steering/types.d.ts +54 -0
- package/dist/steering/types.d.ts.map +1 -0
- package/dist/steering/types.js +11 -0
- package/dist/steering/types.js.map +1 -0
- package/dist/teams/agent-loader.d.ts +38 -0
- package/dist/teams/agent-loader.d.ts.map +1 -0
- package/dist/teams/agent-loader.js +85 -0
- package/dist/teams/agent-loader.js.map +1 -0
- package/dist/teams/bridge-watchdog.d.ts +44 -0
- package/dist/teams/bridge-watchdog.d.ts.map +1 -0
- package/dist/teams/bridge-watchdog.js +118 -0
- package/dist/teams/bridge-watchdog.js.map +1 -0
- package/dist/teams/gemini-bridge.d.ts +43 -0
- package/dist/teams/gemini-bridge.d.ts.map +1 -0
- package/dist/teams/gemini-bridge.js +132 -0
- package/dist/teams/gemini-bridge.js.map +1 -0
- package/dist/teams/index.d.ts +11 -0
- package/dist/teams/index.d.ts.map +1 -0
- package/dist/teams/index.js +11 -0
- package/dist/teams/index.js.map +1 -0
- package/dist/teams/mailbox.d.ts +33 -0
- package/dist/teams/mailbox.d.ts.map +1 -0
- package/dist/teams/mailbox.js +97 -0
- package/dist/teams/mailbox.js.map +1 -0
- package/dist/teams/pr-lifecycle.d.ts +47 -0
- package/dist/teams/pr-lifecycle.d.ts.map +1 -0
- package/dist/teams/pr-lifecycle.js +83 -0
- package/dist/teams/pr-lifecycle.js.map +1 -0
- package/dist/teams/team-manager.d.ts +57 -0
- package/dist/teams/team-manager.d.ts.map +1 -0
- package/dist/teams/team-manager.js +170 -0
- package/dist/teams/team-manager.js.map +1 -0
- package/dist/teams/team-types.d.ts +35 -0
- package/dist/teams/team-types.d.ts.map +1 -0
- package/dist/teams/team-types.js +9 -0
- package/dist/teams/team-types.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/notifications.d.ts +13 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +30 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/types.d.ts +311 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/fs.d.ts +9 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +31 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/logger.d.ts +43 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +139 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/wasm/wasmtime-spike.d.ts +19 -0
- package/dist/wasm/wasmtime-spike.d.ts.map +1 -0
- package/dist/wasm/wasmtime-spike.js +39 -0
- package/dist/wasm/wasmtime-spike.js.map +1 -0
- package/examples/routines/content-pipeline.toml +20 -0
- package/examples/routines/job-search.toml +19 -0
- package/examples/routines/repo-cleanup.toml +14 -0
- package/package.json +66 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `zora-agent init` — Interactive setup wizard.
|
|
3
|
+
*
|
|
4
|
+
* Generates ~/.zora/config.toml, policy.toml, SOUL.md,
|
|
5
|
+
* and scaffolds the directory structure.
|
|
6
|
+
*/
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import os from 'node:os';
|
|
9
|
+
import fs from 'node:fs';
|
|
10
|
+
import * as clack from '@clack/prompts';
|
|
11
|
+
import { stringify as stringifyTOML } from 'smol-toml';
|
|
12
|
+
import { parse as parseTOML } from 'smol-toml';
|
|
13
|
+
import { PRESETS, TOOL_STACKS } from './presets.js';
|
|
14
|
+
import { runDoctorChecks } from './doctor.js';
|
|
15
|
+
const ZORA_DIR = path.join(os.homedir(), '.zora');
|
|
16
|
+
/**
|
|
17
|
+
* Directories to scaffold under ~/.zora/
|
|
18
|
+
*/
|
|
19
|
+
const SCAFFOLD_DIRS = [
|
|
20
|
+
'', // ~/.zora/ itself
|
|
21
|
+
'workspace',
|
|
22
|
+
'memory',
|
|
23
|
+
'memory/daily',
|
|
24
|
+
'memory/items',
|
|
25
|
+
'memory/categories',
|
|
26
|
+
'audit',
|
|
27
|
+
];
|
|
28
|
+
const SOUL_TEMPLATE = `# Zora — Soul File
|
|
29
|
+
|
|
30
|
+
You are Zora, a long-running autonomous personal AI agent.
|
|
31
|
+
|
|
32
|
+
## Core Principles
|
|
33
|
+
- Be helpful, honest, and careful.
|
|
34
|
+
- Always respect the policy file boundaries.
|
|
35
|
+
- Ask for clarification when uncertain.
|
|
36
|
+
- Keep audit logs for all actions.
|
|
37
|
+
|
|
38
|
+
## Owner Preferences
|
|
39
|
+
- (Add your preferences here)
|
|
40
|
+
`;
|
|
41
|
+
/**
|
|
42
|
+
* Generate policy.toml content from a preset, dev path, denied paths, and tool stacks.
|
|
43
|
+
*/
|
|
44
|
+
export function generatePolicyToml(preset, devPath, deniedPaths, toolStacks) {
|
|
45
|
+
const base = structuredClone(PRESETS[preset]);
|
|
46
|
+
// Replace ~/Projects with user's dev path
|
|
47
|
+
base.filesystem.allowed_paths = base.filesystem.allowed_paths.map((p) => (p === '~/Projects' ? devPath : p));
|
|
48
|
+
// Merge additional denied paths (deduplicate)
|
|
49
|
+
const allDenied = new Set([...base.filesystem.denied_paths, ...deniedPaths]);
|
|
50
|
+
base.filesystem.denied_paths = [...allDenied];
|
|
51
|
+
// Merge tool stack commands into allowed_commands (only if shell isn't deny_all)
|
|
52
|
+
if (base.shell.mode !== 'deny_all') {
|
|
53
|
+
const extraCommands = toolStacks.flatMap((stack) => TOOL_STACKS[stack] ?? []);
|
|
54
|
+
const allCommands = new Set([...base.shell.allowed_commands, ...extraCommands]);
|
|
55
|
+
base.shell.allowed_commands = [...allCommands];
|
|
56
|
+
}
|
|
57
|
+
return policyToToml(base);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Serialize a ZoraPolicy to TOML string.
|
|
61
|
+
*/
|
|
62
|
+
function policyToToml(policy) {
|
|
63
|
+
// smol-toml stringify works with plain objects
|
|
64
|
+
return stringifyTOML(policy);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Generate config.toml content based on doctor results.
|
|
68
|
+
*/
|
|
69
|
+
export function generateConfigToml(doctor) {
|
|
70
|
+
const providers = [];
|
|
71
|
+
let rank = 1;
|
|
72
|
+
if (doctor.claude.found) {
|
|
73
|
+
providers.push(`[[providers]]
|
|
74
|
+
name = "claude"
|
|
75
|
+
type = "claude-sdk"
|
|
76
|
+
rank = ${rank}
|
|
77
|
+
capabilities = ["reasoning", "coding", "creative"]
|
|
78
|
+
cost_tier = "included"
|
|
79
|
+
enabled = true
|
|
80
|
+
auth_method = "mac_session"
|
|
81
|
+
model = "claude-sonnet-4-5"
|
|
82
|
+
max_turns = 200`);
|
|
83
|
+
rank++;
|
|
84
|
+
}
|
|
85
|
+
if (doctor.gemini.found) {
|
|
86
|
+
providers.push(`[[providers]]
|
|
87
|
+
name = "gemini"
|
|
88
|
+
type = "gemini-cli"
|
|
89
|
+
rank = ${rank}
|
|
90
|
+
capabilities = ["search", "structured-data", "large-context", "coding"]
|
|
91
|
+
cost_tier = "included"
|
|
92
|
+
enabled = true
|
|
93
|
+
auth_method = "workspace_sso"
|
|
94
|
+
cli_path = "gemini"
|
|
95
|
+
model = "gemini-2.5-pro"
|
|
96
|
+
max_turns = 100`);
|
|
97
|
+
}
|
|
98
|
+
const providerBlock = providers.length > 0
|
|
99
|
+
? providers.join('\n\n')
|
|
100
|
+
: `# No providers detected. Add one manually:
|
|
101
|
+
# [[providers]]
|
|
102
|
+
# name = "claude"
|
|
103
|
+
# type = "claude-sdk"
|
|
104
|
+
# rank = 1
|
|
105
|
+
# capabilities = ["reasoning", "coding"]
|
|
106
|
+
# cost_tier = "included"
|
|
107
|
+
# enabled = true`;
|
|
108
|
+
return `# Zora Configuration — generated by \`zora-agent init\`
|
|
109
|
+
|
|
110
|
+
[agent]
|
|
111
|
+
name = "zora"
|
|
112
|
+
workspace = "~/.zora/workspace"
|
|
113
|
+
max_parallel_jobs = 3
|
|
114
|
+
default_timeout = "2h"
|
|
115
|
+
heartbeat_interval = "30m"
|
|
116
|
+
log_level = "info"
|
|
117
|
+
|
|
118
|
+
[agent.identity]
|
|
119
|
+
soul_file = "~/.zora/SOUL.md"
|
|
120
|
+
|
|
121
|
+
[agent.resources]
|
|
122
|
+
cpu_throttle_percent = 80
|
|
123
|
+
memory_limit_mb = 4096
|
|
124
|
+
throttle_check_interval = "10s"
|
|
125
|
+
|
|
126
|
+
${providerBlock}
|
|
127
|
+
|
|
128
|
+
[routing]
|
|
129
|
+
mode = "respect_ranking"
|
|
130
|
+
|
|
131
|
+
[failover]
|
|
132
|
+
enabled = true
|
|
133
|
+
auto_handoff = true
|
|
134
|
+
max_handoff_context_tokens = 50000
|
|
135
|
+
retry_after_cooldown = true
|
|
136
|
+
max_retries = 3
|
|
137
|
+
checkpoint_on_auth_failure = true
|
|
138
|
+
notify_on_failover = true
|
|
139
|
+
|
|
140
|
+
[memory]
|
|
141
|
+
long_term_file = "~/.zora/memory/MEMORY.md"
|
|
142
|
+
daily_notes_dir = "~/.zora/memory/daily"
|
|
143
|
+
items_dir = "~/.zora/memory/items"
|
|
144
|
+
categories_dir = "~/.zora/memory/categories"
|
|
145
|
+
context_days = 7
|
|
146
|
+
max_context_items = 20
|
|
147
|
+
max_category_summaries = 5
|
|
148
|
+
auto_extract_interval = 10
|
|
149
|
+
|
|
150
|
+
[security]
|
|
151
|
+
policy_file = "~/.zora/policy.toml"
|
|
152
|
+
audit_log = "~/.zora/audit/audit.jsonl"
|
|
153
|
+
audit_hash_chain = true
|
|
154
|
+
audit_single_writer = true
|
|
155
|
+
integrity_check = true
|
|
156
|
+
integrity_interval = "30m"
|
|
157
|
+
integrity_includes_tool_registry = true
|
|
158
|
+
leak_detection = true
|
|
159
|
+
sanitize_untrusted_content = true
|
|
160
|
+
jit_secret_decryption = true
|
|
161
|
+
|
|
162
|
+
[steering]
|
|
163
|
+
enabled = true
|
|
164
|
+
poll_interval = "5s"
|
|
165
|
+
dashboard_port = 7070
|
|
166
|
+
notify_on_flag = true
|
|
167
|
+
flag_timeout = "10m"
|
|
168
|
+
auto_approve_low_risk = true
|
|
169
|
+
always_flag_irreversible = true
|
|
170
|
+
|
|
171
|
+
[notifications]
|
|
172
|
+
enabled = true
|
|
173
|
+
on_task_complete = true
|
|
174
|
+
on_error = true
|
|
175
|
+
on_failover = true
|
|
176
|
+
on_auth_expiry = true
|
|
177
|
+
on_all_providers_down = true
|
|
178
|
+
`;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Scaffold the ~/.zora directory structure.
|
|
182
|
+
*/
|
|
183
|
+
export function scaffoldDirectories(baseDir) {
|
|
184
|
+
for (const dir of SCAFFOLD_DIRS) {
|
|
185
|
+
const fullPath = path.join(baseDir, dir);
|
|
186
|
+
if (!fs.existsSync(fullPath)) {
|
|
187
|
+
fs.mkdirSync(fullPath, { recursive: true });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Write the SOUL.md template if it doesn't exist.
|
|
193
|
+
*/
|
|
194
|
+
export function writeSoulFile(baseDir) {
|
|
195
|
+
const soulPath = path.join(baseDir, 'SOUL.md');
|
|
196
|
+
if (!fs.existsSync(soulPath)) {
|
|
197
|
+
fs.writeFileSync(soulPath, SOUL_TEMPLATE, 'utf-8');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Detect a sensible default dev path.
|
|
202
|
+
*/
|
|
203
|
+
function detectDevPath() {
|
|
204
|
+
const candidates = [
|
|
205
|
+
path.join(os.homedir(), 'Dev'),
|
|
206
|
+
path.join(os.homedir(), 'Projects'),
|
|
207
|
+
path.join(os.homedir(), 'Developer'),
|
|
208
|
+
path.join(os.homedir(), 'Code'),
|
|
209
|
+
path.join(os.homedir(), 'src'),
|
|
210
|
+
];
|
|
211
|
+
for (const candidate of candidates) {
|
|
212
|
+
if (fs.existsSync(candidate)) {
|
|
213
|
+
return candidate.replace(os.homedir(), '~');
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return '~/Projects';
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Run the interactive wizard.
|
|
220
|
+
*/
|
|
221
|
+
async function runWizard(opts) {
|
|
222
|
+
const configPath = path.join(ZORA_DIR, 'config.toml');
|
|
223
|
+
const policyPath = path.join(ZORA_DIR, 'policy.toml');
|
|
224
|
+
// Guard: refuse to overwrite unless --force
|
|
225
|
+
if (!opts.force && (fs.existsSync(configPath) || fs.existsSync(policyPath))) {
|
|
226
|
+
const existing = [
|
|
227
|
+
fs.existsSync(configPath) ? 'config.toml' : null,
|
|
228
|
+
fs.existsSync(policyPath) ? 'policy.toml' : null,
|
|
229
|
+
].filter(Boolean).join(' and ');
|
|
230
|
+
console.error(`Existing ${existing} found in ${ZORA_DIR}.`);
|
|
231
|
+
console.error('Use --force to overwrite.');
|
|
232
|
+
process.exit(1);
|
|
233
|
+
}
|
|
234
|
+
// ── Step 1: Welcome + Trust explanation ──────────────────────────
|
|
235
|
+
clack.intro('Welcome to Zora');
|
|
236
|
+
if (!opts.yes) {
|
|
237
|
+
clack.note([
|
|
238
|
+
'Zora starts LOCKED — zero access to your files or commands.',
|
|
239
|
+
'This wizard grants the minimum permissions you choose.',
|
|
240
|
+
'Every action is logged to a tamper-proof audit trail.',
|
|
241
|
+
'You can expand permissions later without restarting.',
|
|
242
|
+
].join('\n'), 'How Zora earns trust');
|
|
243
|
+
}
|
|
244
|
+
// ── Step 2: Detect CLI providers ─────────────────────────────────
|
|
245
|
+
const spin = clack.spinner();
|
|
246
|
+
spin.start('Checking environment...');
|
|
247
|
+
const doctor = await runDoctorChecks();
|
|
248
|
+
spin.stop('Environment checked');
|
|
249
|
+
const nodeStatus = doctor.node.found ? `Node.js ${doctor.node.version}` : 'Node.js < 20 (upgrade recommended)';
|
|
250
|
+
const claudeStatus = doctor.claude.found
|
|
251
|
+
? `Claude CLI found — Zora will use your existing subscription`
|
|
252
|
+
: 'Claude CLI (not found)';
|
|
253
|
+
const geminiStatus = doctor.gemini.found
|
|
254
|
+
? `Gemini CLI found — Zora will use your existing subscription`
|
|
255
|
+
: 'Gemini CLI (not found)';
|
|
256
|
+
clack.note([nodeStatus, claudeStatus, geminiStatus].join('\n'), 'Detected tools');
|
|
257
|
+
// ── Step 3: Permanent deny-list ──────────────────────────────────
|
|
258
|
+
let deniedPaths;
|
|
259
|
+
if (opts.yes) {
|
|
260
|
+
deniedPaths = ['~/.ssh', '~/.gnupg', '~/.aws'];
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
const deniedChoices = await clack.multiselect({
|
|
264
|
+
message: 'These paths are ALWAYS off-limits (recommended defaults pre-selected):',
|
|
265
|
+
options: [
|
|
266
|
+
{ value: '~/.ssh', label: '~/.ssh', hint: 'SSH keys — never grant access' },
|
|
267
|
+
{ value: '~/.gnupg', label: '~/.gnupg', hint: 'GPG keys — never grant access' },
|
|
268
|
+
{ value: '~/.aws', label: '~/.aws', hint: 'AWS credentials — never grant access' },
|
|
269
|
+
{ value: '~/Documents', label: '~/Documents' },
|
|
270
|
+
{ value: '~/Desktop', label: '~/Desktop' },
|
|
271
|
+
{ value: '~/Downloads', label: '~/Downloads' },
|
|
272
|
+
{ value: '~/Library', label: '~/Library', hint: 'macOS system' },
|
|
273
|
+
],
|
|
274
|
+
initialValues: ['~/.ssh', '~/.gnupg', '~/.aws'],
|
|
275
|
+
});
|
|
276
|
+
if (clack.isCancel(deniedChoices)) {
|
|
277
|
+
clack.cancel('Setup cancelled.');
|
|
278
|
+
process.exit(0);
|
|
279
|
+
}
|
|
280
|
+
deniedPaths = deniedChoices;
|
|
281
|
+
}
|
|
282
|
+
// ── Step 4: First folder ─────────────────────────────────────────
|
|
283
|
+
let devPath;
|
|
284
|
+
const defaultDevPath = detectDevPath();
|
|
285
|
+
if (opts.devPath) {
|
|
286
|
+
devPath = opts.devPath.replace(os.homedir(), '~');
|
|
287
|
+
}
|
|
288
|
+
else if (opts.yes) {
|
|
289
|
+
devPath = defaultDevPath;
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
const devPathInput = await clack.text({
|
|
293
|
+
message: 'Pick your first folder — where Zora can read and work:',
|
|
294
|
+
placeholder: defaultDevPath,
|
|
295
|
+
defaultValue: defaultDevPath,
|
|
296
|
+
});
|
|
297
|
+
if (clack.isCancel(devPathInput)) {
|
|
298
|
+
clack.cancel('Setup cancelled.');
|
|
299
|
+
process.exit(0);
|
|
300
|
+
}
|
|
301
|
+
devPath = devPathInput.replace(os.homedir(), '~');
|
|
302
|
+
}
|
|
303
|
+
// ── Step 5: Want to go further? ──────────────────────────────────
|
|
304
|
+
let preset;
|
|
305
|
+
let toolStacks;
|
|
306
|
+
if (opts.preset && (opts.preset === 'locked' || opts.preset === 'safe' || opts.preset === 'balanced' || opts.preset === 'power')) {
|
|
307
|
+
preset = opts.preset;
|
|
308
|
+
toolStacks = opts.yes ? ['general'] : [];
|
|
309
|
+
if (opts.yes && (doctor.claude.found || doctor.gemini.found))
|
|
310
|
+
toolStacks.push('node');
|
|
311
|
+
}
|
|
312
|
+
else if (opts.yes) {
|
|
313
|
+
preset = 'balanced';
|
|
314
|
+
toolStacks = ['general'];
|
|
315
|
+
if (doctor.claude.found || doctor.gemini.found)
|
|
316
|
+
toolStacks.push('node');
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
const goFurther = await clack.select({
|
|
320
|
+
message: 'Want to go further, or is one folder enough for now?',
|
|
321
|
+
options: [
|
|
322
|
+
{ value: 'minimal', label: "I'm good for now", hint: 'Read-only access to your folder, no shell commands' },
|
|
323
|
+
{ value: 'balanced', label: 'Add shell commands too', hint: 'git, npm, ls — the standard dev toolkit (recommended)' },
|
|
324
|
+
{ value: 'power', label: 'Full dev setup', hint: 'Expanded tools: python, find, sed, awk' },
|
|
325
|
+
],
|
|
326
|
+
});
|
|
327
|
+
if (clack.isCancel(goFurther)) {
|
|
328
|
+
clack.cancel('Setup cancelled.');
|
|
329
|
+
process.exit(0);
|
|
330
|
+
}
|
|
331
|
+
if (goFurther === 'minimal') {
|
|
332
|
+
preset = 'safe';
|
|
333
|
+
toolStacks = [];
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
preset = goFurther;
|
|
337
|
+
// Only ask about tool stacks when shell access is enabled
|
|
338
|
+
const stackChoices = await clack.multiselect({
|
|
339
|
+
message: 'Which tool stacks do you use?',
|
|
340
|
+
options: [
|
|
341
|
+
{ value: 'node', label: 'Node.js', hint: 'node, npm, npx, tsc, vitest' },
|
|
342
|
+
{ value: 'python', label: 'Python', hint: 'python3, pip, pip3' },
|
|
343
|
+
{ value: 'rust', label: 'Rust', hint: 'cargo, rustc, rustup' },
|
|
344
|
+
{ value: 'go', label: 'Go', hint: 'go' },
|
|
345
|
+
{ value: 'general', label: 'General CLI', hint: 'ls, pwd, cat, head, grep, find, etc.' },
|
|
346
|
+
],
|
|
347
|
+
initialValues: ['node', 'general'],
|
|
348
|
+
});
|
|
349
|
+
if (clack.isCancel(stackChoices)) {
|
|
350
|
+
clack.cancel('Setup cancelled.');
|
|
351
|
+
process.exit(0);
|
|
352
|
+
}
|
|
353
|
+
toolStacks = stackChoices;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
// ── Step 6: Summary + confirm ────────────────────────────────────
|
|
357
|
+
if (!opts.yes) {
|
|
358
|
+
const providerList = [doctor.claude.found ? 'Claude' : null, doctor.gemini.found ? 'Gemini' : null].filter(Boolean).join(', ') || 'none detected';
|
|
359
|
+
const summary = [
|
|
360
|
+
`Preset: ${preset}`,
|
|
361
|
+
`Workspace: ${devPath}`,
|
|
362
|
+
`Denied: ${deniedPaths.join(', ')}`,
|
|
363
|
+
`Tool stacks: ${toolStacks.length > 0 ? toolStacks.join(', ') : 'none (shell disabled)'}`,
|
|
364
|
+
`Providers: ${providerList} (using your existing subscriptions)`,
|
|
365
|
+
].join('\n');
|
|
366
|
+
clack.note(summary, 'Summary');
|
|
367
|
+
const confirmed = await clack.confirm({
|
|
368
|
+
message: 'Write configuration files?',
|
|
369
|
+
});
|
|
370
|
+
if (clack.isCancel(confirmed) || !confirmed) {
|
|
371
|
+
clack.cancel('Setup cancelled.');
|
|
372
|
+
process.exit(0);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
// ── Generate and write files ─────────────────────────────────────
|
|
376
|
+
const policyToml = generatePolicyToml(preset, devPath, deniedPaths, toolStacks);
|
|
377
|
+
const configToml = generateConfigToml(doctor);
|
|
378
|
+
// Validate generated TOML parses cleanly
|
|
379
|
+
try {
|
|
380
|
+
parseTOML(policyToml);
|
|
381
|
+
}
|
|
382
|
+
catch (e) {
|
|
383
|
+
console.error('Generated policy.toml is invalid TOML:', e);
|
|
384
|
+
process.exit(1);
|
|
385
|
+
}
|
|
386
|
+
try {
|
|
387
|
+
parseTOML(configToml);
|
|
388
|
+
}
|
|
389
|
+
catch (e) {
|
|
390
|
+
console.error('Generated config.toml is invalid TOML:', e);
|
|
391
|
+
process.exit(1);
|
|
392
|
+
}
|
|
393
|
+
// Scaffold and write
|
|
394
|
+
scaffoldDirectories(ZORA_DIR);
|
|
395
|
+
writeSoulFile(ZORA_DIR);
|
|
396
|
+
fs.writeFileSync(policyPath, policyToml, 'utf-8');
|
|
397
|
+
fs.writeFileSync(configPath, configToml, 'utf-8');
|
|
398
|
+
clack.outro(`Zora is ready! Permissions can grow over time as you need them.
|
|
399
|
+
|
|
400
|
+
Try it:
|
|
401
|
+
zora-agent ask "What's in my ${devPath.replace('~', '~')} folder? Give me a one-line summary of each."
|
|
402
|
+
|
|
403
|
+
Or start the dashboard:
|
|
404
|
+
zora-agent start
|
|
405
|
+
Then open http://localhost:7070
|
|
406
|
+
|
|
407
|
+
To expand permissions later:
|
|
408
|
+
Edit ~/.zora/policy.toml or re-run: zora-agent init --force`);
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Register the `zora-agent init` command on the commander program.
|
|
412
|
+
*/
|
|
413
|
+
export function registerInitCommand(program) {
|
|
414
|
+
program
|
|
415
|
+
.command('init')
|
|
416
|
+
.description('Set up Zora — generate config, policy, and directory structure')
|
|
417
|
+
.option('--preset <preset>', 'Security preset: locked, safe, balanced, or power')
|
|
418
|
+
.option('--dev-path <path>', 'Path to your code directory')
|
|
419
|
+
.option('-y, --yes', 'Accept all defaults (non-interactive)')
|
|
420
|
+
.option('--force', 'Overwrite existing config files')
|
|
421
|
+
.action(async (opts) => {
|
|
422
|
+
await runWizard(opts);
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=init-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-command.js","sourceRoot":"","sources":["../../src/cli/init-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory CLI Commands — search, forget, and list memory categories.
|
|
3
|
+
*
|
|
4
|
+
* Spec §5.9 "CLI Interface" — memory subcommands.
|
|
5
|
+
*/
|
|
6
|
+
import type { Command } from 'commander';
|
|
7
|
+
import type { MemoryManager } from '../memory/memory-manager.js';
|
|
8
|
+
export declare function registerMemoryCommands(program: Command, setupContext: () => Promise<{
|
|
9
|
+
memoryManager: MemoryManager;
|
|
10
|
+
}>): void;
|
|
11
|
+
//# sourceMappingURL=memory-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-commands.d.ts","sourceRoot":"","sources":["../../src/cli/memory-commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,OAAO,CAAC;IAAE,aAAa,EAAE,aAAa,CAAA;CAAE,CAAC,GAC5D,IAAI,CAwDN"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory CLI Commands — search, forget, and list memory categories.
|
|
3
|
+
*
|
|
4
|
+
* Spec §5.9 "CLI Interface" — memory subcommands.
|
|
5
|
+
*/
|
|
6
|
+
export function registerMemoryCommands(program, setupContext) {
|
|
7
|
+
const memory = program.command('memory').description('Manage agent memory');
|
|
8
|
+
memory
|
|
9
|
+
.command('search <query>')
|
|
10
|
+
.description('Search memory items by keyword')
|
|
11
|
+
.option('-n, --limit <n>', 'Max results', '10')
|
|
12
|
+
.action(async (query, opts) => {
|
|
13
|
+
const { memoryManager } = await setupContext();
|
|
14
|
+
const results = await memoryManager.searchMemory(query, parseInt(opts.limit, 10));
|
|
15
|
+
if (results.length === 0) {
|
|
16
|
+
console.log('No memory items found.');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.log(`Found ${results.length} result(s):\n`);
|
|
20
|
+
for (const r of results) {
|
|
21
|
+
console.log(` [${r.itemId}] score=${r.score.toFixed(2)}`);
|
|
22
|
+
console.log(` access=${r.components.accessWeight.toFixed(2)} recency=${r.components.recencyDecay.toFixed(2)} relevance=${r.components.relevanceScore.toFixed(2)}`);
|
|
23
|
+
console.log();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
memory
|
|
27
|
+
.command('forget <id>')
|
|
28
|
+
.description('Delete a memory item')
|
|
29
|
+
.action(async (id) => {
|
|
30
|
+
const { memoryManager } = await setupContext();
|
|
31
|
+
const deleted = await memoryManager.forgetItem(id);
|
|
32
|
+
if (deleted) {
|
|
33
|
+
console.log(`Deleted memory item: ${id}`);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.log(`Memory item not found: ${id}`);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
memory
|
|
40
|
+
.command('categories')
|
|
41
|
+
.description('List memory categories')
|
|
42
|
+
.action(async () => {
|
|
43
|
+
const { memoryManager } = await setupContext();
|
|
44
|
+
const categories = await memoryManager.getCategories();
|
|
45
|
+
if (categories.length === 0) {
|
|
46
|
+
console.log('No categories found.');
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
console.log(`${categories.length} categorie(s):\n`);
|
|
50
|
+
for (const cat of categories) {
|
|
51
|
+
console.log(` [${cat.category}] ${cat.item_count} items — ${cat.summary}`);
|
|
52
|
+
console.log(` last updated: ${cat.last_updated}`);
|
|
53
|
+
console.log();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=memory-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-commands.js","sourceRoot":"","sources":["../../src/cli/memory-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy Presets — Safe, Balanced, Power.
|
|
3
|
+
*
|
|
4
|
+
* These match the spec presets in specs/v5/docs/POLICY_PRESETS.md.
|
|
5
|
+
* Used by `zora-agent init` to generate policy.toml.
|
|
6
|
+
*/
|
|
7
|
+
import type { ZoraPolicy } from '../types.js';
|
|
8
|
+
export type PresetName = 'locked' | 'safe' | 'balanced' | 'power';
|
|
9
|
+
export declare const PRESETS: Record<PresetName, ZoraPolicy>;
|
|
10
|
+
export declare const TOOL_STACKS: Record<string, string[]>;
|
|
11
|
+
export declare const PRESET_DESCRIPTIONS: Record<PresetName, string>;
|
|
12
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/cli/presets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAElE,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAuJlD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAMhD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAK1D,CAAC"}
|