zora-agent 0.9.4 → 0.9.6
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 +87 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-command.d.ts.map +1 -1
- package/dist/cli/init-command.js +108 -9
- 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 +416 -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 +161 -46
- 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 +28 -17
- package/dist/security/policy-engine.d.ts.map +1 -1
- package/dist/security/policy-engine.js +42 -185
- 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 +205 -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
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,43 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Logger — Structured
|
|
2
|
+
* Logger — Structured logging with pino.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* - JSON
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
4
|
+
* OPS-05 / LOG-01: Replace ad-hoc console.log with structured pino logger.
|
|
5
|
+
* - JSON output in production, pretty-print in development
|
|
6
|
+
* - Child loggers with module context
|
|
7
|
+
* - Log levels configurable via config.toml log_level
|
|
8
|
+
* - File transport via pino (optional)
|
|
8
9
|
*/
|
|
9
|
-
|
|
10
|
+
import pino from 'pino';
|
|
11
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
10
12
|
export interface LoggerOptions {
|
|
11
13
|
level?: LogLevel;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
enableConsole?: boolean;
|
|
17
|
-
enableFile?: boolean;
|
|
14
|
+
/** Module name for child logger context */
|
|
15
|
+
module?: string;
|
|
16
|
+
/** Enable pretty printing (auto-detected from NODE_ENV if unset) */
|
|
17
|
+
pretty?: boolean;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
export declare function getLogger(options?: LoggerOptions): Logger;
|
|
42
|
-
export declare function setDefaultLogger(logger: Logger): void;
|
|
19
|
+
/**
|
|
20
|
+
* Initialize the root logger. Call once at startup with the config log_level.
|
|
21
|
+
* Subsequent calls are no-ops unless force=true.
|
|
22
|
+
*/
|
|
23
|
+
export declare function initLogger(options?: LoggerOptions, force?: boolean): pino.Logger;
|
|
24
|
+
/**
|
|
25
|
+
* Get a child logger for a specific module.
|
|
26
|
+
* If the root logger hasn't been initialized, initializes with defaults.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getLogger(module?: string): pino.Logger;
|
|
29
|
+
/**
|
|
30
|
+
* Factory: create a child logger scoped to a module name.
|
|
31
|
+
* Alias for getLogger(moduleName).
|
|
32
|
+
*/
|
|
33
|
+
export declare const createLogger: typeof getLogger;
|
|
34
|
+
/** Default root logger instance. */
|
|
35
|
+
export declare const logger: pino.Logger<never, boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Reset the root logger (for testing).
|
|
38
|
+
*/
|
|
39
|
+
export declare function resetLogger(): void;
|
|
43
40
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAaD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,aAAkB,EAAE,KAAK,UAAQ,GAAG,IAAI,CAAC,MAAM,CAyBlF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAMtD;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,kBAAY,CAAC;AAEtC,oCAAoC;AACpC,eAAO,MAAM,MAAM,6BAAc,CAAC;AAElC;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -1,139 +1,69 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Logger — Structured
|
|
2
|
+
* Logger — Structured logging with pino.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* - JSON
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
4
|
+
* OPS-05 / LOG-01: Replace ad-hoc console.log with structured pino logger.
|
|
5
|
+
* - JSON output in production, pretty-print in development
|
|
6
|
+
* - Child loggers with module context
|
|
7
|
+
* - Log levels configurable via config.toml log_level
|
|
8
|
+
* - File transport via pino (optional)
|
|
8
9
|
*/
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
try {
|
|
35
|
-
fs.mkdirSync(path.dirname(this._logFilePath), { recursive: true, mode: 0o700 });
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
// Directory may already exist
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
debug(message, meta) {
|
|
43
|
-
this._log('debug', message, meta);
|
|
44
|
-
}
|
|
45
|
-
info(message, meta) {
|
|
46
|
-
this._log('info', message, meta);
|
|
47
|
-
}
|
|
48
|
-
warn(message, meta) {
|
|
49
|
-
this._log('warn', message, meta);
|
|
50
|
-
}
|
|
51
|
-
error(message, meta) {
|
|
52
|
-
this._log('error', message, meta);
|
|
53
|
-
}
|
|
54
|
-
_log(level, message, meta) {
|
|
55
|
-
if (LOG_LEVELS[level] < this._level)
|
|
56
|
-
return;
|
|
57
|
-
const entry = {
|
|
58
|
-
timestamp: new Date().toISOString(),
|
|
59
|
-
level,
|
|
60
|
-
message,
|
|
61
|
-
...(meta && Object.keys(meta).length > 0 ? { meta } : {}),
|
|
62
|
-
};
|
|
63
|
-
const line = JSON.stringify(entry);
|
|
64
|
-
if (this._enableConsole) {
|
|
65
|
-
switch (level) {
|
|
66
|
-
case 'error':
|
|
67
|
-
console.error(line);
|
|
68
|
-
break;
|
|
69
|
-
case 'warn':
|
|
70
|
-
console.warn(line);
|
|
71
|
-
break;
|
|
72
|
-
default:
|
|
73
|
-
console.log(line);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (this._enableFile) {
|
|
77
|
-
this._writeToFile(line);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
_writeToFile(line) {
|
|
81
|
-
try {
|
|
82
|
-
// Check if rotation is needed
|
|
83
|
-
try {
|
|
84
|
-
const stats = fs.statSync(this._logFilePath);
|
|
85
|
-
if (stats.size >= this._maxFileSize) {
|
|
86
|
-
this._rotate();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
// File doesn't exist yet, no rotation needed
|
|
91
|
-
}
|
|
92
|
-
fs.appendFileSync(this._logFilePath, line + '\n', { mode: 0o600 });
|
|
93
|
-
}
|
|
94
|
-
catch (err) {
|
|
95
|
-
// If we can't write to the log file, fall back to stderr
|
|
96
|
-
console.error(`[Logger] Failed to write to log file: ${err instanceof Error ? err.message : String(err)}`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
_rotate() {
|
|
100
|
-
try {
|
|
101
|
-
// Remove oldest rotated file
|
|
102
|
-
const oldest = `${this._logFilePath}.${this._maxFiles}`;
|
|
103
|
-
try {
|
|
104
|
-
fs.unlinkSync(oldest);
|
|
105
|
-
}
|
|
106
|
-
catch {
|
|
107
|
-
// File may not exist
|
|
108
|
-
}
|
|
109
|
-
// Shift existing rotated files
|
|
110
|
-
for (let i = this._maxFiles - 1; i >= 1; i--) {
|
|
111
|
-
const from = `${this._logFilePath}.${i}`;
|
|
112
|
-
const to = `${this._logFilePath}.${i + 1}`;
|
|
113
|
-
try {
|
|
114
|
-
fs.renameSync(from, to);
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
// File may not exist
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// Rotate current file
|
|
121
|
-
fs.renameSync(this._logFilePath, `${this._logFilePath}.1`);
|
|
122
|
-
}
|
|
123
|
-
catch (err) {
|
|
124
|
-
console.error(`[Logger] Failed to rotate log files: ${err instanceof Error ? err.message : String(err)}`);
|
|
10
|
+
import pino from 'pino';
|
|
11
|
+
// Detect if we should pretty-print: dev mode or TTY
|
|
12
|
+
function shouldPrettyPrint() {
|
|
13
|
+
return (process.env.NODE_ENV !== 'production' &&
|
|
14
|
+
process.env.ZORA_LOG_FORMAT !== 'json' &&
|
|
15
|
+
(process.stdout.isTTY === true || process.env.ZORA_LOG_PRETTY === '1'));
|
|
16
|
+
}
|
|
17
|
+
let _rootLogger = null;
|
|
18
|
+
/**
|
|
19
|
+
* Initialize the root logger. Call once at startup with the config log_level.
|
|
20
|
+
* Subsequent calls are no-ops unless force=true.
|
|
21
|
+
*/
|
|
22
|
+
export function initLogger(options = {}, force = false) {
|
|
23
|
+
if (_rootLogger && !force)
|
|
24
|
+
return _rootLogger;
|
|
25
|
+
const level = options.level ?? process.env.ZORA_LOG_LEVEL ?? 'info';
|
|
26
|
+
const pretty = options.pretty ?? shouldPrettyPrint();
|
|
27
|
+
const transport = pretty
|
|
28
|
+
? {
|
|
29
|
+
target: 'pino-pretty',
|
|
30
|
+
options: {
|
|
31
|
+
colorize: true,
|
|
32
|
+
translateTime: 'SYS:HH:MM:ss.l',
|
|
33
|
+
ignore: 'pid,hostname',
|
|
34
|
+
},
|
|
125
35
|
}
|
|
126
|
-
|
|
36
|
+
: undefined;
|
|
37
|
+
_rootLogger = pino({
|
|
38
|
+
level,
|
|
39
|
+
...(transport ? { transport } : {}),
|
|
40
|
+
base: { name: 'zora' },
|
|
41
|
+
timestamp: pino.stdTimeFunctions.isoTime,
|
|
42
|
+
});
|
|
43
|
+
return _rootLogger;
|
|
127
44
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Get a child logger for a specific module.
|
|
47
|
+
* If the root logger hasn't been initialized, initializes with defaults.
|
|
48
|
+
*/
|
|
49
|
+
export function getLogger(module) {
|
|
50
|
+
const root = _rootLogger ?? initLogger();
|
|
51
|
+
if (module) {
|
|
52
|
+
return root.child({ module });
|
|
133
53
|
}
|
|
134
|
-
return
|
|
54
|
+
return root;
|
|
135
55
|
}
|
|
136
|
-
|
|
137
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Factory: create a child logger scoped to a module name.
|
|
58
|
+
* Alias for getLogger(moduleName).
|
|
59
|
+
*/
|
|
60
|
+
export const createLogger = getLogger;
|
|
61
|
+
/** Default root logger instance. */
|
|
62
|
+
export const logger = getLogger();
|
|
63
|
+
/**
|
|
64
|
+
* Reset the root logger (for testing).
|
|
65
|
+
*/
|
|
66
|
+
export function resetLogger() {
|
|
67
|
+
_rootLogger = null;
|
|
138
68
|
}
|
|
139
69
|
//# sourceMappingURL=logger.js.map
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAYxB,oDAAoD;AACpD,SAAS,iBAAiB;IACxB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QACrC,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM;QACtC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,GAAG,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,IAAI,WAAW,GAAuB,IAAI,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,UAAyB,EAAE,EAAE,KAAK,GAAG,KAAK;IACnE,IAAI,WAAW,IAAI,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC;IAE9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAK,OAAO,CAAC,GAAG,CAAC,cAA2B,IAAI,MAAM,CAAC;IAClF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,iBAAiB,EAAE,CAAC;IAErD,MAAM,SAAS,GAAG,MAAM;QACtB,CAAC,CAAC;YACE,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,gBAAgB;gBAC/B,MAAM,EAAE,cAAc;aACvB;SACF;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,WAAW,GAAG,IAAI,CAAC;QACjB,KAAK;QACL,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACtB,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;KACzC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,MAAe;IACvC,MAAM,IAAI,GAAG,WAAW,IAAI,UAAU,EAAE,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AAEtC,oCAAoC;AACpC,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-job-id.d.ts","sourceRoot":"","sources":["../../src/utils/validate-job-id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIjD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates that a jobId is safe for use in file paths.
|
|
3
|
+
* Only allows alphanumeric characters, hyphens, and underscores.
|
|
4
|
+
*/
|
|
5
|
+
export function validateJobId(jobId) {
|
|
6
|
+
if (!/^[a-zA-Z0-9_-]+$/.test(jobId)) {
|
|
7
|
+
throw new Error(`Invalid jobId: must contain only alphanumeric characters, hyphens, and underscores`);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=validate-job-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-job-id.js","sourceRoot":"","sources":["../../src/utils/validate-job-id.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;IACxG,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zora-agent",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.6",
|
|
4
4
|
"description": "Long-running autonomous personal AI agent — multi-provider, capability-routed, memory-enriched",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
"examples"
|
|
16
16
|
],
|
|
17
17
|
"scripts": {
|
|
18
|
-
"build": "tsc",
|
|
18
|
+
"build": "tsc && npm run build:frontend",
|
|
19
|
+
"build:backend": "tsc",
|
|
20
|
+
"build:frontend": "cd src/dashboard/frontend && (test -d node_modules || npm ci --ignore-scripts) && npm run build && mkdir -p ../../../dist/dashboard/frontend && cp -r dist ../../../dist/dashboard/frontend/",
|
|
21
|
+
"install:frontend": "cd src/dashboard/frontend && npm install --ignore-scripts",
|
|
19
22
|
"dev": "tsx src/index.ts",
|
|
20
23
|
"test": "npm run test:unit && npm run test:browser",
|
|
21
24
|
"test:unit": "vitest run",
|
|
@@ -48,8 +51,11 @@
|
|
|
48
51
|
"@clack/prompts": "^1.0.1",
|
|
49
52
|
"commander": "^14.0.3",
|
|
50
53
|
"express": "^4.21.2",
|
|
54
|
+
"minisearch": "^7.2.0",
|
|
51
55
|
"node-cron": "^4.2.1",
|
|
52
|
-
"
|
|
56
|
+
"pino": "^10.3.1",
|
|
57
|
+
"smol-toml": "^1.3.1",
|
|
58
|
+
"zod": "^4.3.6"
|
|
53
59
|
},
|
|
54
60
|
"peerDependencies": {
|
|
55
61
|
"node-telegram-bot-api": "^0.67.0"
|
|
@@ -65,7 +71,10 @@
|
|
|
65
71
|
"@types/node": "^22.19.11",
|
|
66
72
|
"@types/node-cron": "^3.0.11",
|
|
67
73
|
"@types/node-telegram-bot-api": "^0.64.13",
|
|
74
|
+
"@types/pino": "^7.0.4",
|
|
75
|
+
"pino-pretty": "^13.1.3",
|
|
68
76
|
"playwright": "^1.58.2",
|
|
77
|
+
"supertest": "^7.2.2",
|
|
69
78
|
"tsx": "^4.19.0",
|
|
70
79
|
"typescript": "^5.7.0",
|
|
71
80
|
"vitest": "^3.0.0"
|