zora-agent 0.10.0 → 0.10.2
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/README.md +171 -65
- package/dist/cli/daemon.js +1 -0
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/index.js +27 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/secret-commands.d.ts +16 -0
- package/dist/cli/secret-commands.d.ts.map +1 -0
- package/dist/cli/secret-commands.js +87 -0
- package/dist/cli/secret-commands.js.map +1 -0
- package/dist/cli/skill-commands.d.ts.map +1 -1
- package/dist/cli/skill-commands.js +75 -0
- package/dist/cli/skill-commands.js.map +1 -1
- package/dist/cli/subagent-commands.d.ts +13 -0
- package/dist/cli/subagent-commands.d.ts.map +1 -0
- package/dist/cli/subagent-commands.js +80 -0
- package/dist/cli/subagent-commands.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +6 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/dashboard/cost-tracker.d.ts +40 -0
- package/dist/dashboard/cost-tracker.d.ts.map +1 -0
- package/dist/dashboard/cost-tracker.js +63 -0
- package/dist/dashboard/cost-tracker.js.map +1 -0
- package/dist/dashboard/frontend/dist/assets/{index-DSXaCp9r.js → index-Bi0V-1ti.js} +83 -83
- package/dist/dashboard/frontend/dist/assets/index-SQqtXVeO.css +1 -0
- package/dist/dashboard/frontend/dist/index.html +2 -2
- package/dist/dashboard/server.d.ts +5 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +17 -0
- package/dist/dashboard/server.js.map +1 -1
- package/dist/hooks/built-in/audit-log.d.ts +13 -0
- package/dist/hooks/built-in/audit-log.d.ts.map +1 -0
- package/dist/hooks/built-in/audit-log.js +48 -0
- package/dist/hooks/built-in/audit-log.js.map +1 -0
- package/dist/hooks/built-in/rate-limit.d.ts +18 -0
- package/dist/hooks/built-in/rate-limit.d.ts.map +1 -0
- package/dist/hooks/built-in/rate-limit.js +30 -0
- package/dist/hooks/built-in/rate-limit.js.map +1 -0
- package/dist/hooks/built-in/secret-redact.d.ts +7 -0
- package/dist/hooks/built-in/secret-redact.d.ts.map +1 -0
- package/dist/hooks/built-in/secret-redact.js +33 -0
- package/dist/hooks/built-in/secret-redact.js.map +1 -0
- package/dist/hooks/built-in/shell-safety.d.ts +7 -0
- package/dist/hooks/built-in/shell-safety.d.ts.map +1 -0
- package/dist/hooks/built-in/shell-safety.js +34 -0
- package/dist/hooks/built-in/shell-safety.js.map +1 -0
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/tool-hook-runner.d.ts +36 -0
- package/dist/hooks/tool-hook-runner.d.ts.map +1 -0
- package/dist/hooks/tool-hook-runner.js +49 -0
- package/dist/hooks/tool-hook-runner.js.map +1 -0
- package/dist/lib/error-normalizer.d.ts +53 -0
- package/dist/lib/error-normalizer.d.ts.map +1 -0
- package/dist/lib/error-normalizer.js +128 -0
- package/dist/lib/error-normalizer.js.map +1 -0
- package/dist/memory/context-compressor.d.ts +3 -1
- package/dist/memory/context-compressor.d.ts.map +1 -1
- package/dist/memory/context-compressor.js +18 -3
- package/dist/memory/context-compressor.js.map +1 -1
- package/dist/memory/plan-cache.d.ts +27 -0
- package/dist/memory/plan-cache.d.ts.map +1 -0
- package/dist/memory/plan-cache.js +91 -0
- package/dist/memory/plan-cache.js.map +1 -0
- package/dist/orchestrator/code-tool-runner.d.ts +41 -0
- package/dist/orchestrator/code-tool-runner.d.ts.map +1 -0
- package/dist/orchestrator/code-tool-runner.js +375 -0
- package/dist/orchestrator/code-tool-runner.js.map +1 -0
- package/dist/orchestrator/error-pattern-detector.d.ts +54 -0
- package/dist/orchestrator/error-pattern-detector.d.ts.map +1 -0
- package/dist/orchestrator/error-pattern-detector.js +87 -0
- package/dist/orchestrator/error-pattern-detector.js.map +1 -0
- package/dist/orchestrator/execution-planner.d.ts +33 -0
- package/dist/orchestrator/execution-planner.d.ts.map +1 -0
- package/dist/orchestrator/execution-planner.js +67 -0
- package/dist/orchestrator/execution-planner.js.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +77 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.js +595 -29
- package/dist/orchestrator/orchestrator.js.map +1 -1
- package/dist/orchestrator/retry-queue.d.ts +7 -1
- package/dist/orchestrator/retry-queue.d.ts.map +1 -1
- package/dist/orchestrator/retry-queue.js +10 -4
- package/dist/orchestrator/retry-queue.js.map +1 -1
- package/dist/orchestrator/step-classifier.d.ts +26 -0
- package/dist/orchestrator/step-classifier.d.ts.map +1 -0
- package/dist/orchestrator/step-classifier.js +77 -0
- package/dist/orchestrator/step-classifier.js.map +1 -0
- package/dist/orchestrator/tlci-dispatcher.d.ts +47 -0
- package/dist/orchestrator/tlci-dispatcher.d.ts.map +1 -0
- package/dist/orchestrator/tlci-dispatcher.js +116 -0
- package/dist/orchestrator/tlci-dispatcher.js.map +1 -0
- package/dist/routines/heartbeat.d.ts.map +1 -1
- package/dist/routines/heartbeat.js +3 -1
- package/dist/routines/heartbeat.js.map +1 -1
- package/dist/routines/routine-manager.d.ts.map +1 -1
- package/dist/routines/routine-manager.js +3 -1
- package/dist/routines/routine-manager.js.map +1 -1
- package/dist/security/intent-capsule.d.ts +19 -0
- package/dist/security/intent-capsule.d.ts.map +1 -1
- package/dist/security/intent-capsule.js +84 -1
- package/dist/security/intent-capsule.js.map +1 -1
- package/dist/security/policy-engine.d.ts +1 -0
- package/dist/security/policy-engine.d.ts.map +1 -1
- package/dist/security/policy-engine.js +22 -1
- package/dist/security/policy-engine.js.map +1 -1
- package/dist/services/negative-cache.d.ts +67 -0
- package/dist/services/negative-cache.d.ts.map +1 -0
- package/dist/services/negative-cache.js +164 -0
- package/dist/services/negative-cache.js.map +1 -0
- package/dist/skills/skill-auditor.d.ts +36 -0
- package/dist/skills/skill-auditor.d.ts.map +1 -0
- package/dist/skills/skill-auditor.js +89 -0
- package/dist/skills/skill-auditor.js.map +1 -0
- package/dist/skills/skill-installer.d.ts +41 -0
- package/dist/skills/skill-installer.d.ts.map +1 -0
- package/dist/skills/skill-installer.js +141 -0
- package/dist/skills/skill-installer.js.map +1 -0
- package/dist/skills/skill-scanner.d.ts +30 -0
- package/dist/skills/skill-scanner.d.ts.map +1 -0
- package/dist/skills/skill-scanner.js +249 -0
- package/dist/skills/skill-scanner.js.map +1 -0
- 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/planning-tool.d.ts +95 -0
- package/dist/tools/planning-tool.d.ts.map +1 -0
- package/dist/tools/planning-tool.js +117 -0
- package/dist/tools/planning-tool.js.map +1 -0
- package/dist/tools/skill-tool.d.ts +94 -0
- package/dist/tools/skill-tool.d.ts.map +1 -0
- package/dist/tools/skill-tool.js +202 -0
- package/dist/tools/skill-tool.js.map +1 -0
- package/dist/tools/subagent-tool.d.ts +11 -0
- package/dist/tools/subagent-tool.d.ts.map +1 -0
- package/dist/tools/subagent-tool.js +87 -0
- package/dist/tools/subagent-tool.js.map +1 -0
- package/dist/types.d.ts +22 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/args.d.ts +5 -0
- package/dist/utils/args.d.ts.map +1 -0
- package/dist/utils/args.js +20 -0
- package/dist/utils/args.js.map +1 -0
- package/package.json +4 -1
- package/dist/dashboard/frontend/dist/assets/index-2FaDr6iS.js +0 -277
- package/dist/dashboard/frontend/dist/assets/index-B9-KXW14.css +0 -1
- package/dist/dashboard/frontend/dist/assets/index-BMxbyTer.css +0 -1
- package/dist/dashboard/frontend/dist/assets/index-BXUfB9iR.js +0 -253
- package/dist/dashboard/frontend/dist/assets/index-BcOGj1EF.css +0 -1
- package/dist/dashboard/frontend/dist/assets/index-BtiFO9YN.js +0 -261
- package/dist/dashboard/frontend/dist/assets/index-CQmpMTLW.js +0 -253
- package/dist/dashboard/frontend/dist/assets/index-Cfjy5acU.css +0 -1
- package/dist/dashboard/frontend/dist/assets/index-D41hcjgc.js +0 -253
- package/dist/dashboard/frontend/dist/assets/index-D83BawFd.css +0 -1
- package/dist/dashboard/frontend/dist/assets/index-DAODjoxu.css +0 -1
- package/dist/dashboard/frontend/dist/assets/index-DB-Eu5oV.js +0 -253
- package/dist/dashboard/frontend/dist/assets/index-W0VVEDu6.js +0 -253
- package/dist/dashboard/frontend/dist/assets/index-aK9PWl6w.js +0 -253
- package/dist/dashboard/frontend/vite.config.d.ts +0 -3
- package/dist/dashboard/frontend/vite.config.d.ts.map +0 -1
- package/dist/dashboard/frontend/vite.config.js +0 -11
- package/dist/dashboard/frontend/vite.config.js.map +0 -1
|
@@ -9,12 +9,38 @@ import os from 'node:os';
|
|
|
9
9
|
import path from 'node:path';
|
|
10
10
|
import fs from 'node:fs/promises';
|
|
11
11
|
import { loadSkills } from '../skills/skill-loader.js';
|
|
12
|
+
import { installSkill } from '../skills/skill-installer.js';
|
|
13
|
+
import { auditInstalledSkills } from '../skills/skill-auditor.js';
|
|
12
14
|
import { createLogger } from '../utils/logger.js';
|
|
13
15
|
const log = createLogger('skill-commands');
|
|
14
16
|
export function registerSkillCommands(program) {
|
|
15
17
|
const skill = program
|
|
16
18
|
.command('skill')
|
|
17
19
|
.description('List and inspect available Claude Code skills');
|
|
20
|
+
skill
|
|
21
|
+
.command('audit')
|
|
22
|
+
.description('Scan all installed skills for security issues (catches manually installed skills)')
|
|
23
|
+
.option('--threshold <level>', 'Report findings at this severity and above: critical|high|medium|low (default: high)', 'high')
|
|
24
|
+
.option('--fail-fast', 'Stop on first critical finding')
|
|
25
|
+
.action(async (opts) => {
|
|
26
|
+
const validThresholds = ['critical', 'high', 'medium', 'low'];
|
|
27
|
+
if (!validThresholds.includes(opts.threshold)) {
|
|
28
|
+
console.error(`Invalid threshold "${opts.threshold}". Use: ${validThresholds.join(', ')}`);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
const threshold = opts.threshold;
|
|
32
|
+
console.log(`Auditing installed skills (threshold: ${threshold})...\n`);
|
|
33
|
+
const report = await auditInstalledSkills({
|
|
34
|
+
severityThreshold: threshold,
|
|
35
|
+
failFast: opts.failFast,
|
|
36
|
+
});
|
|
37
|
+
console.log(report.summary);
|
|
38
|
+
if (!report.clean) {
|
|
39
|
+
console.log('\nTo remediate: remove the flagged skill directory from ~/.claude/skills/<name>/,');
|
|
40
|
+
console.log('or reinstall via "zora-agent skill install <file.skill>" to get a verified version.');
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
18
44
|
skill
|
|
19
45
|
.command('list')
|
|
20
46
|
.description('List all available skills from ~/.claude/skills/')
|
|
@@ -32,6 +58,55 @@ export function registerSkillCommands(program) {
|
|
|
32
58
|
console.log(` ${paddedName}${s.description}`);
|
|
33
59
|
}
|
|
34
60
|
});
|
|
61
|
+
skill
|
|
62
|
+
.command('install')
|
|
63
|
+
.description('Install a skill from a .skill or .zip package')
|
|
64
|
+
.argument('<file>', 'Path to .skill or .zip file')
|
|
65
|
+
.option('--project', 'Install to .zora/skills/ (project-local) instead of ~/.claude/skills/ (global)')
|
|
66
|
+
.option('--force', 'Install despite security findings')
|
|
67
|
+
.option('--dry-run', 'Scan only — do not install')
|
|
68
|
+
.option('--threshold <level>', 'Block at this severity and above: critical|high|medium|low (default: high)', 'high')
|
|
69
|
+
.action(async (file, opts) => {
|
|
70
|
+
const absFile = path.resolve(file);
|
|
71
|
+
try {
|
|
72
|
+
await fs.access(absFile);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
console.error(`File not found: ${absFile}`);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
const threshold = opts.threshold;
|
|
79
|
+
const validThresholds = ['critical', 'high', 'medium', 'low'];
|
|
80
|
+
if (!validThresholds.includes(threshold)) {
|
|
81
|
+
console.error(`Invalid threshold "${threshold}". Use: ${validThresholds.join(', ')}`);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
console.log(`Scanning ${path.basename(absFile)}...`);
|
|
85
|
+
try {
|
|
86
|
+
const result = await installSkill(absFile, {
|
|
87
|
+
target: opts.project ? 'project' : 'global',
|
|
88
|
+
severityThreshold: threshold,
|
|
89
|
+
force: opts.force,
|
|
90
|
+
dryRun: opts.dryRun,
|
|
91
|
+
});
|
|
92
|
+
console.log(result.report);
|
|
93
|
+
if (result.installed) {
|
|
94
|
+
console.log(`\n✅ Installed: ${result.skillName}`);
|
|
95
|
+
console.log(` Path: ${result.installPath}`);
|
|
96
|
+
if (!result.scanPassed) {
|
|
97
|
+
console.log(` ⚠️ Installed with findings (--force)`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else if (result.blockedBy) {
|
|
101
|
+
console.error(`\n❌ Install blocked: ${result.blockedBy}`);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
35
110
|
skill
|
|
36
111
|
.command('info')
|
|
37
112
|
.description('Show details about a specific skill')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-commands.js","sourceRoot":"","sources":["../../src/cli/skill-commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-commands.js","sourceRoot":"","sources":["../../src/cli/skill-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subagent CLI Commands — List and inspect available subagent definitions.
|
|
3
|
+
*
|
|
4
|
+
* Subagents live at .zora/subagents/<name>/SUBAGENT.md (project-local)
|
|
5
|
+
* or ~/.zora/subagents/<name>/SUBAGENT.md (global).
|
|
6
|
+
*
|
|
7
|
+
* Commands:
|
|
8
|
+
* zora-agent subagent list — list all available subagents
|
|
9
|
+
* zora-agent subagent info <name> — show full details for a named subagent
|
|
10
|
+
*/
|
|
11
|
+
import type { Command } from 'commander';
|
|
12
|
+
export declare function registerSubagentCommands(program: Command): void;
|
|
13
|
+
//# sourceMappingURL=subagent-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-commands.d.ts","sourceRoot":"","sources":["../../src/cli/subagent-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuE/D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subagent CLI Commands — List and inspect available subagent definitions.
|
|
3
|
+
*
|
|
4
|
+
* Subagents live at .zora/subagents/<name>/SUBAGENT.md (project-local)
|
|
5
|
+
* or ~/.zora/subagents/<name>/SUBAGENT.md (global).
|
|
6
|
+
*
|
|
7
|
+
* Commands:
|
|
8
|
+
* zora-agent subagent list — list all available subagents
|
|
9
|
+
* zora-agent subagent info <name> — show full details for a named subagent
|
|
10
|
+
*/
|
|
11
|
+
import { loadSubagents } from '../skills/subagent-loader.js';
|
|
12
|
+
import { createLogger } from '../utils/logger.js';
|
|
13
|
+
const log = createLogger('subagent-commands');
|
|
14
|
+
export function registerSubagentCommands(program) {
|
|
15
|
+
const subagent = program
|
|
16
|
+
.command('subagent')
|
|
17
|
+
.description('List and inspect available subagent definitions');
|
|
18
|
+
subagent
|
|
19
|
+
.command('list')
|
|
20
|
+
.description('List all available subagents from .zora/subagents/ and ~/.zora/subagents/')
|
|
21
|
+
.action(async () => {
|
|
22
|
+
const subagents = await loadSubagents();
|
|
23
|
+
if (subagents.length === 0) {
|
|
24
|
+
console.log('No subagents defined.');
|
|
25
|
+
console.log('Create .zora/subagents/<name>/SUBAGENT.md to define a project-local subagent,');
|
|
26
|
+
console.log('or ~/.zora/subagents/<name>/SUBAGENT.md for a global subagent.');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
console.log(`Found ${subagents.length} subagent(s):\n`);
|
|
30
|
+
const maxNameLen = Math.max(...subagents.map(s => s.name.length));
|
|
31
|
+
for (const s of subagents) {
|
|
32
|
+
const paddedName = s.name.padEnd(maxNameLen + 2);
|
|
33
|
+
const toolCount = s.allowedTools.length;
|
|
34
|
+
const toolLabel = toolCount === 0 ? '(all tools)' : `${toolCount} tool(s)`;
|
|
35
|
+
console.log(` ${paddedName}${s.description} [${s.layer}, ${toolLabel}]`);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
subagent
|
|
39
|
+
.command('info')
|
|
40
|
+
.description('Show full details for a specific subagent')
|
|
41
|
+
.argument('<name>', 'Subagent name (directory name in .zora/subagents/<name>/)')
|
|
42
|
+
.action(async (name) => {
|
|
43
|
+
const subagents = await loadSubagents();
|
|
44
|
+
const found = subagents.find(s => s.name === name);
|
|
45
|
+
if (!found) {
|
|
46
|
+
log.error({ name }, 'Subagent not found');
|
|
47
|
+
const similar = subagents.filter(s => s.name.includes(name));
|
|
48
|
+
if (similar.length > 0) {
|
|
49
|
+
console.error(`Did you mean one of: ${similar.map(s => s.name).join(', ')}?`);
|
|
50
|
+
}
|
|
51
|
+
else if (subagents.length > 0) {
|
|
52
|
+
console.error(`Available subagents: ${subagents.map(s => s.name).join(', ')}`);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
console.error('No subagents are currently defined.');
|
|
56
|
+
}
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
console.log(`Name: ${found.name}`);
|
|
60
|
+
console.log(`Description: ${found.description}`);
|
|
61
|
+
console.log(`Layer: ${found.layer}`);
|
|
62
|
+
console.log(`Path: ${found.path}`);
|
|
63
|
+
if (found.allowedTools.length > 0) {
|
|
64
|
+
console.log(`Allowed tools (${found.allowedTools.length}):`);
|
|
65
|
+
for (const tool of found.allowedTools) {
|
|
66
|
+
console.log(` - ${tool}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.log('Allowed tools: (all tools — no restriction declared)');
|
|
71
|
+
}
|
|
72
|
+
if (found.systemPrompt) {
|
|
73
|
+
const lines = found.systemPrompt.split('\n');
|
|
74
|
+
const preview = lines.slice(0, 8).join('\n').trim();
|
|
75
|
+
const truncated = lines.length > 8 ? `\n ... (${lines.length - 8} more lines)` : '';
|
|
76
|
+
console.log(`\nSystem prompt preview:\n ${preview.split('\n').join('\n ')}${truncated}`);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=subagent-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-commands.js","sourceRoot":"","sources":["../../src/cli/subagent-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,12 @@ export declare const DEFAULT_ROUTING: RoutingConfig;
|
|
|
9
9
|
export declare const DEFAULT_FAILOVER: FailoverConfig;
|
|
10
10
|
export declare const DEFAULT_MEMORY: MemoryConfig;
|
|
11
11
|
export declare const DEFAULT_SECURITY: SecurityConfig;
|
|
12
|
+
/**
|
|
13
|
+
* Default drift blocking mode for ZoraPolicy.
|
|
14
|
+
* 'strict' blocks destructive actions (write_file/edit_file/shell_exec/shell_exec_destructive/git_push/unknown) on drift.
|
|
15
|
+
* 'advisory' logs only; 'paranoid' blocks all drifting actions.
|
|
16
|
+
*/
|
|
17
|
+
export declare const DEFAULT_DRIFT_BLOCKING_MODE: "strict";
|
|
12
18
|
export declare const DEFAULT_STEERING: SteeringConfig;
|
|
13
19
|
export declare const DEFAULT_NOTIFICATIONS: NotificationsConfig;
|
|
14
20
|
export declare const DEFAULT_MCP: McpConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,SAAS,EACV,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,aAAa,EAAE,WAe3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,aAE7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,cAQ9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YAkB5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,cAW9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,cAc9B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,mBAOnC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAEzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,UAU5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAsB1F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CA2D3D"}
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,SAAS,EACV,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,aAAa,EAAE,WAe3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,aAE7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,cAQ9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YAkB5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,cAW9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,UAAiE,CAAC;AAE1G,eAAO,MAAM,gBAAgB,EAAE,cAc9B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,mBAOnC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAEzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,UAU5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAsB1F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CA2D3D"}
|
package/dist/config/defaults.js
CHANGED
|
@@ -62,6 +62,12 @@ export const DEFAULT_SECURITY = {
|
|
|
62
62
|
sanitize_untrusted_content: true,
|
|
63
63
|
jit_secret_decryption: true,
|
|
64
64
|
};
|
|
65
|
+
/**
|
|
66
|
+
* Default drift blocking mode for ZoraPolicy.
|
|
67
|
+
* 'strict' blocks destructive actions (write_file/edit_file/shell_exec/shell_exec_destructive/git_push/unknown) on drift.
|
|
68
|
+
* 'advisory' logs only; 'paranoid' blocks all drifting actions.
|
|
69
|
+
*/
|
|
70
|
+
export const DEFAULT_DRIFT_BLOCKING_MODE = 'strict';
|
|
65
71
|
export const DEFAULT_STEERING = {
|
|
66
72
|
enabled: true,
|
|
67
73
|
poll_interval: '5s',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CostTracker — Aggregates TLCI metrics for the /api/tlci-stats dashboard endpoint.
|
|
3
|
+
*
|
|
4
|
+
* Daily totals are tracked separately from the rolling 100-plan window so stats remain
|
|
5
|
+
* accurate even when more than 100 plans execute in a single day.
|
|
6
|
+
*/
|
|
7
|
+
import { PlanCache } from '../memory/plan-cache.js';
|
|
8
|
+
import type { ExecutionPlan } from '../orchestrator/execution-planner.js';
|
|
9
|
+
export interface CostTrackerSnapshot {
|
|
10
|
+
todayStepsByTier: {
|
|
11
|
+
code: number;
|
|
12
|
+
slm: number;
|
|
13
|
+
frontier: number;
|
|
14
|
+
};
|
|
15
|
+
todaySavingsUSD: number;
|
|
16
|
+
todayCostUSD: number;
|
|
17
|
+
last100StepsTierDistribution: {
|
|
18
|
+
code: number;
|
|
19
|
+
slm: number;
|
|
20
|
+
frontier: number;
|
|
21
|
+
};
|
|
22
|
+
planCacheHitRate: number;
|
|
23
|
+
allTimeSavingsUSD: number;
|
|
24
|
+
allTimeExecutions: number;
|
|
25
|
+
vsAllLLMMessage: string;
|
|
26
|
+
}
|
|
27
|
+
export declare class CostTracker {
|
|
28
|
+
private readonly _planCache;
|
|
29
|
+
private readonly _recentPlans;
|
|
30
|
+
private _planRequests;
|
|
31
|
+
private _planCacheHits;
|
|
32
|
+
private _todayStart;
|
|
33
|
+
private _dailyStepsByTier;
|
|
34
|
+
private _dailySavingsUSD;
|
|
35
|
+
private _dailyCostUSD;
|
|
36
|
+
constructor(_planCache: PlanCache);
|
|
37
|
+
recordPlanRequest(cacheHit: boolean, plan: ExecutionPlan): void;
|
|
38
|
+
getSnapshot(): Promise<CostTrackerSnapshot>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=cost-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-tracker.d.ts","sourceRoot":"","sources":["../../src/dashboard/cost-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,WAAW;IAYV,OAAO,CAAC,QAAQ,CAAC,UAAU;IAVvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,iBAAiB,CAAoC;IAC7D,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAK;gBAEG,UAAU,EAAE,SAAS;IAElD,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAwBzD,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAwBlD"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CostTracker — Aggregates TLCI metrics for the /api/tlci-stats dashboard endpoint.
|
|
3
|
+
*
|
|
4
|
+
* Daily totals are tracked separately from the rolling 100-plan window so stats remain
|
|
5
|
+
* accurate even when more than 100 plans execute in a single day.
|
|
6
|
+
*/
|
|
7
|
+
export class CostTracker {
|
|
8
|
+
_planCache;
|
|
9
|
+
// Rolling window for tier-distribution chart (last 100 plans)
|
|
10
|
+
_recentPlans = [];
|
|
11
|
+
_planRequests = 0;
|
|
12
|
+
_planCacheHits = 0;
|
|
13
|
+
// Daily accumulators — reset at midnight, tracks all plans regardless of window size
|
|
14
|
+
_todayStart = new Date().setHours(0, 0, 0, 0);
|
|
15
|
+
_dailyStepsByTier = { code: 0, slm: 0, frontier: 0 };
|
|
16
|
+
_dailySavingsUSD = 0;
|
|
17
|
+
_dailyCostUSD = 0;
|
|
18
|
+
constructor(_planCache) {
|
|
19
|
+
this._planCache = _planCache;
|
|
20
|
+
}
|
|
21
|
+
recordPlanRequest(cacheHit, plan) {
|
|
22
|
+
this._planRequests++;
|
|
23
|
+
if (cacheHit)
|
|
24
|
+
this._planCacheHits++;
|
|
25
|
+
// Roll over daily counters if the date changed
|
|
26
|
+
const today = new Date().setHours(0, 0, 0, 0);
|
|
27
|
+
if (today !== this._todayStart) {
|
|
28
|
+
this._todayStart = today;
|
|
29
|
+
this._dailyStepsByTier = { code: 0, slm: 0, frontier: 0 };
|
|
30
|
+
this._dailySavingsUSD = 0;
|
|
31
|
+
this._dailyCostUSD = 0;
|
|
32
|
+
}
|
|
33
|
+
this._dailyStepsByTier.code += plan.tierBreakdown.code;
|
|
34
|
+
this._dailyStepsByTier.slm += plan.tierBreakdown.slm;
|
|
35
|
+
this._dailyStepsByTier.frontier += plan.tierBreakdown.frontier;
|
|
36
|
+
this._dailySavingsUSD += plan.costComparison.savingsUSD;
|
|
37
|
+
this._dailyCostUSD += plan.costComparison.tlciEstimate;
|
|
38
|
+
// Rolling window for the distribution chart
|
|
39
|
+
this._recentPlans.push(plan);
|
|
40
|
+
if (this._recentPlans.length > 100)
|
|
41
|
+
this._recentPlans.shift();
|
|
42
|
+
}
|
|
43
|
+
async getSnapshot() {
|
|
44
|
+
const cacheStats = await this._planCache.getStats();
|
|
45
|
+
const last100StepsTierDistribution = this._recentPlans.slice(-100).reduce((acc, p) => {
|
|
46
|
+
acc.code += p.tierBreakdown.code;
|
|
47
|
+
acc.slm += p.tierBreakdown.slm;
|
|
48
|
+
acc.frontier += p.tierBreakdown.frontier;
|
|
49
|
+
return acc;
|
|
50
|
+
}, { code: 0, slm: 0, frontier: 0 });
|
|
51
|
+
return {
|
|
52
|
+
todayStepsByTier: { ...this._dailyStepsByTier },
|
|
53
|
+
todaySavingsUSD: this._dailySavingsUSD,
|
|
54
|
+
todayCostUSD: this._dailyCostUSD,
|
|
55
|
+
last100StepsTierDistribution,
|
|
56
|
+
planCacheHitRate: this._planRequests > 0 ? this._planCacheHits / this._planRequests : 0,
|
|
57
|
+
allTimeSavingsUSD: cacheStats.totalSavingsUSD,
|
|
58
|
+
allTimeExecutions: cacheStats.totalExecutions,
|
|
59
|
+
vsAllLLMMessage: `Zora saved you $${this._dailySavingsUSD.toFixed(2)} today vs all-LLM`,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=cost-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-tracker.js","sourceRoot":"","sources":["../../src/dashboard/cost-tracker.ts"],"names":[],"mappings":"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"}
|