@vibesdotdev/logging 0.0.1
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 +80 -0
- package/SPEC.md +65 -0
- package/dist/audit/audit.descriptor.d.ts +11 -0
- package/dist/audit/audit.descriptor.d.ts.map +1 -0
- package/dist/audit/audit.descriptor.js +40 -0
- package/dist/audit/audit.descriptor.js.map +1 -0
- package/dist/audit/audit.storage.schema.d.ts +79 -0
- package/dist/audit/audit.storage.schema.d.ts.map +1 -0
- package/dist/audit/audit.storage.schema.js +33 -0
- package/dist/audit/audit.storage.schema.js.map +1 -0
- package/dist/audit/index.d.ts +2 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +2 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/cli/logs.descriptor.d.ts +9 -0
- package/dist/cli/logs.descriptor.d.ts.map +1 -0
- package/dist/cli/logs.descriptor.js +16 -0
- package/dist/cli/logs.descriptor.js.map +1 -0
- package/dist/cli/logs.list.descriptor.d.ts +9 -0
- package/dist/cli/logs.list.descriptor.d.ts.map +1 -0
- package/dist/cli/logs.list.descriptor.js +23 -0
- package/dist/cli/logs.list.descriptor.js.map +1 -0
- package/dist/cli/logs.list.impl.d.ts +13 -0
- package/dist/cli/logs.list.impl.d.ts.map +1 -0
- package/dist/cli/logs.list.impl.js +81 -0
- package/dist/cli/logs.list.impl.js.map +1 -0
- package/dist/cli/logs.rotate.descriptor.d.ts +9 -0
- package/dist/cli/logs.rotate.descriptor.d.ts.map +1 -0
- package/dist/cli/logs.rotate.descriptor.js +34 -0
- package/dist/cli/logs.rotate.descriptor.js.map +1 -0
- package/dist/cli/logs.rotate.impl.d.ts +17 -0
- package/dist/cli/logs.rotate.impl.d.ts.map +1 -0
- package/dist/cli/logs.rotate.impl.js +48 -0
- package/dist/cli/logs.rotate.impl.js.map +1 -0
- package/dist/cli/logs.search.descriptor.d.ts +9 -0
- package/dist/cli/logs.search.descriptor.d.ts.map +1 -0
- package/dist/cli/logs.search.descriptor.js +55 -0
- package/dist/cli/logs.search.descriptor.js.map +1 -0
- package/dist/cli/logs.search.impl.d.ts +22 -0
- package/dist/cli/logs.search.impl.d.ts.map +1 -0
- package/dist/cli/logs.search.impl.js +145 -0
- package/dist/cli/logs.search.impl.js.map +1 -0
- package/dist/cli/logs.tail.descriptor.d.ts +9 -0
- package/dist/cli/logs.tail.descriptor.d.ts.map +1 -0
- package/dist/cli/logs.tail.descriptor.js +43 -0
- package/dist/cli/logs.tail.descriptor.js.map +1 -0
- package/dist/cli/logs.tail.impl.d.ts +19 -0
- package/dist/cli/logs.tail.impl.d.ts.map +1 -0
- package/dist/cli/logs.tail.impl.js +78 -0
- package/dist/cli/logs.tail.impl.js.map +1 -0
- package/dist/cli/logs.view.descriptor.d.ts +9 -0
- package/dist/cli/logs.view.descriptor.d.ts.map +1 -0
- package/dist/cli/logs.view.descriptor.js +51 -0
- package/dist/cli/logs.view.descriptor.js.map +1 -0
- package/dist/cli/logs.view.impl.d.ts +21 -0
- package/dist/cli/logs.view.impl.d.ts.map +1 -0
- package/dist/cli/logs.view.impl.js +85 -0
- package/dist/cli/logs.view.impl.js.map +1 -0
- package/dist/cli/types.d.ts +57 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +9 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/contexts/audit.d.ts +34 -0
- package/dist/contexts/audit.d.ts.map +1 -0
- package/dist/contexts/audit.js +13 -0
- package/dist/contexts/audit.js.map +1 -0
- package/dist/contexts/fallback-logger.d.ts +3 -0
- package/dist/contexts/fallback-logger.d.ts.map +1 -0
- package/dist/contexts/fallback-logger.js +67 -0
- package/dist/contexts/fallback-logger.js.map +1 -0
- package/dist/contexts/index.d.ts +8 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/contexts/index.js +9 -0
- package/dist/contexts/index.js.map +1 -0
- package/dist/contexts/logger.d.ts +26 -0
- package/dist/contexts/logger.d.ts.map +1 -0
- package/dist/contexts/logger.js +88 -0
- package/dist/contexts/logger.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +10 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +3 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +118 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/namespace.d.ts +69 -0
- package/dist/core/namespace.d.ts.map +1 -0
- package/dist/core/namespace.js +136 -0
- package/dist/core/namespace.js.map +1 -0
- package/dist/core/parsing.d.ts +3 -0
- package/dist/core/parsing.d.ts.map +1 -0
- package/dist/core/parsing.js +25 -0
- package/dist/core/parsing.js.map +1 -0
- package/dist/core/types.d.ts +69 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +7 -0
- package/dist/core/types.js.map +1 -0
- package/dist/docs/levels.docs.descriptor.d.ts +4 -0
- package/dist/docs/levels.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/levels.docs.descriptor.js +342 -0
- package/dist/docs/levels.docs.descriptor.js.map +1 -0
- package/dist/docs/structured.docs.descriptor.d.ts +4 -0
- package/dist/docs/structured.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/structured.docs.descriptor.js +442 -0
- package/dist/docs/structured.docs.descriptor.js.map +1 -0
- package/dist/docs/transports.docs.descriptor.d.ts +4 -0
- package/dist/docs/transports.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/transports.docs.descriptor.js +426 -0
- package/dist/docs/transports.docs.descriptor.js.map +1 -0
- package/dist/formatters/index.d.ts +7 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +8 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/formatters/json/json.formatters.descriptor.d.ts +9 -0
- package/dist/formatters/json/json.formatters.descriptor.d.ts.map +1 -0
- package/dist/formatters/json/json.formatters.descriptor.js +22 -0
- package/dist/formatters/json/json.formatters.descriptor.js.map +1 -0
- package/dist/formatters/json/json.impl.d.ts +22 -0
- package/dist/formatters/json/json.impl.d.ts.map +1 -0
- package/dist/formatters/json/json.impl.js +32 -0
- package/dist/formatters/json/json.impl.js.map +1 -0
- package/dist/formatters/json5/json5.descriptor.d.ts +9 -0
- package/dist/formatters/json5/json5.descriptor.d.ts.map +1 -0
- package/dist/formatters/json5/json5.descriptor.js +22 -0
- package/dist/formatters/json5/json5.descriptor.js.map +1 -0
- package/dist/formatters/json5/json5.impl.d.ts +23 -0
- package/dist/formatters/json5/json5.impl.d.ts.map +1 -0
- package/dist/formatters/json5/json5.impl.js +34 -0
- package/dist/formatters/json5/json5.impl.js.map +1 -0
- package/dist/formatters/jsonl/jsonl.descriptor.d.ts +10 -0
- package/dist/formatters/jsonl/jsonl.descriptor.d.ts.map +1 -0
- package/dist/formatters/jsonl/jsonl.descriptor.js +23 -0
- package/dist/formatters/jsonl/jsonl.descriptor.js.map +1 -0
- package/dist/formatters/jsonl/jsonl.impl.d.ts +21 -0
- package/dist/formatters/jsonl/jsonl.impl.d.ts.map +1 -0
- package/dist/formatters/jsonl/jsonl.impl.js +30 -0
- package/dist/formatters/jsonl/jsonl.impl.js.map +1 -0
- package/dist/formatters/pretty/pretty.descriptor.d.ts +9 -0
- package/dist/formatters/pretty/pretty.descriptor.d.ts.map +1 -0
- package/dist/formatters/pretty/pretty.descriptor.js +23 -0
- package/dist/formatters/pretty/pretty.descriptor.js.map +1 -0
- package/dist/formatters/pretty/pretty.impl.cli.d.ts +23 -0
- package/dist/formatters/pretty/pretty.impl.cli.d.ts.map +1 -0
- package/dist/formatters/pretty/pretty.impl.cli.js +81 -0
- package/dist/formatters/pretty/pretty.impl.cli.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +97 -0
- package/dist/index.js.map +1 -0
- package/dist/kinds/audit.d.ts +85 -0
- package/dist/kinds/audit.d.ts.map +1 -0
- package/dist/kinds/audit.js +71 -0
- package/dist/kinds/audit.js.map +1 -0
- package/dist/kinds/contexts.d.ts +21 -0
- package/dist/kinds/contexts.d.ts.map +1 -0
- package/dist/kinds/contexts.js +8 -0
- package/dist/kinds/contexts.js.map +1 -0
- package/dist/kinds/formatter.d.ts +42 -0
- package/dist/kinds/formatter.d.ts.map +1 -0
- package/dist/kinds/formatter.js +69 -0
- package/dist/kinds/formatter.js.map +1 -0
- package/dist/kinds/index.d.ts +13 -0
- package/dist/kinds/index.d.ts.map +1 -0
- package/dist/kinds/index.js +13 -0
- package/dist/kinds/index.js.map +1 -0
- package/dist/kinds/logger.contracts.d.ts +16 -0
- package/dist/kinds/logger.contracts.d.ts.map +1 -0
- package/dist/kinds/logger.contracts.js +9 -0
- package/dist/kinds/logger.contracts.js.map +1 -0
- package/dist/kinds/logger.d.ts +15 -0
- package/dist/kinds/logger.d.ts.map +1 -0
- package/dist/kinds/logger.impl.d.ts +40 -0
- package/dist/kinds/logger.impl.d.ts.map +1 -0
- package/dist/kinds/logger.impl.js +139 -0
- package/dist/kinds/logger.impl.js.map +1 -0
- package/dist/kinds/logger.js +28 -0
- package/dist/kinds/logger.js.map +1 -0
- package/dist/kinds/logger.utils.d.ts +15 -0
- package/dist/kinds/logger.utils.d.ts.map +1 -0
- package/dist/kinds/logger.utils.js +55 -0
- package/dist/kinds/logger.utils.js.map +1 -0
- package/dist/kinds/output.contracts.d.ts +50 -0
- package/dist/kinds/output.contracts.d.ts.map +1 -0
- package/dist/kinds/output.contracts.js +10 -0
- package/dist/kinds/output.contracts.js.map +1 -0
- package/dist/kinds/output.d.ts +20 -0
- package/dist/kinds/output.d.ts.map +1 -0
- package/dist/kinds/output.impl.d.ts +22 -0
- package/dist/kinds/output.impl.d.ts.map +1 -0
- package/dist/kinds/output.impl.js +84 -0
- package/dist/kinds/output.impl.js.map +1 -0
- package/dist/kinds/output.js +29 -0
- package/dist/kinds/output.js.map +1 -0
- package/dist/kinds/output.types.d.ts +92 -0
- package/dist/kinds/output.types.d.ts.map +1 -0
- package/dist/kinds/output.types.js +7 -0
- package/dist/kinds/output.types.js.map +1 -0
- package/dist/kinds/sink.d.ts +40 -0
- package/dist/kinds/sink.d.ts.map +1 -0
- package/dist/kinds/sink.js +61 -0
- package/dist/kinds/sink.js.map +1 -0
- package/dist/logger.context.descriptor.d.ts +21 -0
- package/dist/logger.context.descriptor.d.ts.map +1 -0
- package/dist/logger.context.descriptor.js +12 -0
- package/dist/logger.context.descriptor.js.map +1 -0
- package/dist/logging.cli.plugin.d.ts +20 -0
- package/dist/logging.cli.plugin.d.ts.map +1 -0
- package/dist/logging.cli.plugin.js +39 -0
- package/dist/logging.cli.plugin.js.map +1 -0
- package/dist/logging.plugin.d.ts +16 -0
- package/dist/logging.plugin.d.ts.map +1 -0
- package/dist/logging.plugin.js +83 -0
- package/dist/logging.plugin.js.map +1 -0
- package/dist/outputs/index.d.ts +7 -0
- package/dist/outputs/index.d.ts.map +1 -0
- package/dist/outputs/index.js +8 -0
- package/dist/outputs/index.js.map +1 -0
- package/dist/outputs/remote/remote.descriptor.d.ts +10 -0
- package/dist/outputs/remote/remote.descriptor.d.ts.map +1 -0
- package/dist/outputs/remote/remote.descriptor.js +24 -0
- package/dist/outputs/remote/remote.descriptor.js.map +1 -0
- package/dist/outputs/remote/remote.impl.d.ts +50 -0
- package/dist/outputs/remote/remote.impl.d.ts.map +1 -0
- package/dist/outputs/remote/remote.impl.js +178 -0
- package/dist/outputs/remote/remote.impl.js.map +1 -0
- package/dist/outputs.context.descriptor.d.ts +19 -0
- package/dist/outputs.context.descriptor.d.ts.map +1 -0
- package/dist/outputs.context.descriptor.js +9 -0
- package/dist/outputs.context.descriptor.js.map +1 -0
- package/dist/outputs.context.impl.d.ts +9 -0
- package/dist/outputs.context.impl.d.ts.map +1 -0
- package/dist/outputs.context.impl.js +18 -0
- package/dist/outputs.context.impl.js.map +1 -0
- package/dist/paths.d.ts +8 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +10 -0
- package/dist/paths.js.map +1 -0
- package/dist/schemas/audit.d.ts +133 -0
- package/dist/schemas/audit.d.ts.map +1 -0
- package/dist/schemas/audit.js +80 -0
- package/dist/schemas/audit.js.map +1 -0
- package/dist/schemas/entry.d.ts +74 -0
- package/dist/schemas/entry.d.ts.map +1 -0
- package/dist/schemas/entry.js +62 -0
- package/dist/schemas/entry.js.map +1 -0
- package/dist/schemas/formatter.d.ts +46 -0
- package/dist/schemas/formatter.d.ts.map +1 -0
- package/dist/schemas/formatter.js +31 -0
- package/dist/schemas/formatter.js.map +1 -0
- package/dist/schemas/index.d.ts +12 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +18 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/logger.d.ts +48 -0
- package/dist/schemas/logger.d.ts.map +1 -0
- package/dist/schemas/logger.js +27 -0
- package/dist/schemas/logger.js.map +1 -0
- package/dist/schemas/output.d.ts +68 -0
- package/dist/schemas/output.d.ts.map +1 -0
- package/dist/schemas/output.js +48 -0
- package/dist/schemas/output.js.map +1 -0
- package/dist/schemas/sink.d.ts +52 -0
- package/dist/schemas/sink.d.ts.map +1 -0
- package/dist/schemas/sink.js +30 -0
- package/dist/schemas/sink.js.map +1 -0
- package/dist/sinks/buffer/buffer.descriptor.d.ts +4 -0
- package/dist/sinks/buffer/buffer.descriptor.d.ts.map +1 -0
- package/dist/sinks/buffer/buffer.descriptor.js +11 -0
- package/dist/sinks/buffer/buffer.descriptor.js.map +1 -0
- package/dist/sinks/buffer/buffer.impl.cli.d.ts +21 -0
- package/dist/sinks/buffer/buffer.impl.cli.d.ts.map +1 -0
- package/dist/sinks/buffer/buffer.impl.cli.js +34 -0
- package/dist/sinks/buffer/buffer.impl.cli.js.map +1 -0
- package/dist/sinks/console/console.descriptor.d.ts +10 -0
- package/dist/sinks/console/console.descriptor.d.ts.map +1 -0
- package/dist/sinks/console/console.descriptor.js +17 -0
- package/dist/sinks/console/console.descriptor.js.map +1 -0
- package/dist/sinks/console/console.impl.browser.d.ts +21 -0
- package/dist/sinks/console/console.impl.browser.d.ts.map +1 -0
- package/dist/sinks/console/console.impl.browser.js +57 -0
- package/dist/sinks/console/console.impl.browser.js.map +1 -0
- package/dist/sinks/console/console.impl.cli.d.ts +21 -0
- package/dist/sinks/console/console.impl.cli.d.ts.map +1 -0
- package/dist/sinks/console/console.impl.cli.js +57 -0
- package/dist/sinks/console/console.impl.cli.js.map +1 -0
- package/dist/sinks/index.d.ts +8 -0
- package/dist/sinks/index.d.ts.map +1 -0
- package/dist/sinks/index.js +8 -0
- package/dist/sinks/index.js.map +1 -0
- package/dist/sinks/memory/memory.descriptor.d.ts +10 -0
- package/dist/sinks/memory/memory.descriptor.d.ts.map +1 -0
- package/dist/sinks/memory/memory.descriptor.js +17 -0
- package/dist/sinks/memory/memory.descriptor.js.map +1 -0
- package/dist/sinks/memory/memory.impl.d.ts +50 -0
- package/dist/sinks/memory/memory.impl.d.ts.map +1 -0
- package/dist/sinks/memory/memory.impl.js +88 -0
- package/dist/sinks/memory/memory.impl.js.map +1 -0
- package/dist/sinks/stdout/stdout.descriptor.d.ts +4 -0
- package/dist/sinks/stdout/stdout.descriptor.d.ts.map +1 -0
- package/dist/sinks/stdout/stdout.descriptor.js +11 -0
- package/dist/sinks/stdout/stdout.descriptor.js.map +1 -0
- package/dist/sinks/stdout/stdout.impl.cli.d.ts +10 -0
- package/dist/sinks/stdout/stdout.impl.cli.d.ts.map +1 -0
- package/dist/sinks/stdout/stdout.impl.cli.js +21 -0
- package/dist/sinks/stdout/stdout.impl.cli.js.map +1 -0
- package/dist/sinks.context.descriptor.d.ts +19 -0
- package/dist/sinks.context.descriptor.d.ts.map +1 -0
- package/dist/sinks.context.descriptor.js +9 -0
- package/dist/sinks.context.descriptor.js.map +1 -0
- package/dist/sinks.context.impl.d.ts +9 -0
- package/dist/sinks.context.impl.d.ts.map +1 -0
- package/dist/sinks.context.impl.js +18 -0
- package/dist/sinks.context.impl.js.map +1 -0
- package/package.json +331 -0
- package/src/audit/audit.descriptor.ts +45 -0
- package/src/audit/audit.storage.schema.ts +57 -0
- package/src/audit/index.ts +8 -0
- package/src/cli/logs.descriptor.ts +19 -0
- package/src/cli/logs.list.descriptor.ts +28 -0
- package/src/cli/logs.list.impl.ts +93 -0
- package/src/cli/logs.rotate.descriptor.ts +40 -0
- package/src/cli/logs.rotate.impl.ts +61 -0
- package/src/cli/logs.search.descriptor.ts +61 -0
- package/src/cli/logs.search.impl.ts +173 -0
- package/src/cli/logs.tail.descriptor.ts +49 -0
- package/src/cli/logs.tail.impl.ts +105 -0
- package/src/cli/logs.view.descriptor.ts +57 -0
- package/src/cli/logs.view.impl.ts +108 -0
- package/src/cli/types.ts +59 -0
- package/src/contexts/audit.ts +36 -0
- package/src/contexts/fallback-logger.ts +80 -0
- package/src/contexts/index.ts +23 -0
- package/src/contexts/logger.ts +119 -0
- package/src/core/index.ts +32 -0
- package/src/core/logger.ts +150 -0
- package/src/core/namespace.ts +195 -0
- package/src/core/parsing.ts +21 -0
- package/src/core/types.ts +82 -0
- package/src/docs/levels.docs.descriptor.ts +344 -0
- package/src/docs/structured.docs.descriptor.ts +444 -0
- package/src/docs/transports.docs.descriptor.ts +428 -0
- package/src/formatters/index.ts +6 -0
- package/src/formatters/json/json.formatters.descriptor.ts +25 -0
- package/src/formatters/json/json.impl.ts +41 -0
- package/src/formatters/json5/json5.descriptor.ts +25 -0
- package/src/formatters/json5/json5.impl.ts +43 -0
- package/src/formatters/jsonl/jsonl.descriptor.ts +26 -0
- package/src/formatters/jsonl/jsonl.impl.ts +39 -0
- package/src/formatters/pretty/pretty.descriptor.ts +26 -0
- package/src/formatters/pretty/pretty.impl.cli.ts +101 -0
- package/src/index.ts +190 -0
- package/src/kinds/audit.ts +169 -0
- package/src/kinds/contexts.ts +22 -0
- package/src/kinds/formatter.ts +117 -0
- package/src/kinds/index.ts +25 -0
- package/src/kinds/logger.contracts.ts +17 -0
- package/src/kinds/logger.impl.ts +206 -0
- package/src/kinds/logger.ts +46 -0
- package/src/kinds/logger.utils.ts +91 -0
- package/src/kinds/output.contracts.ts +54 -0
- package/src/kinds/output.impl.ts +118 -0
- package/src/kinds/output.ts +59 -0
- package/src/kinds/output.types.ts +105 -0
- package/src/kinds/sink.ts +100 -0
- package/src/logger.context.descriptor.ts +13 -0
- package/src/logging.cli.plugin.ts +43 -0
- package/src/logging.plugin.ts +93 -0
- package/src/outputs/index.ts +6 -0
- package/src/outputs/remote/remote.descriptor.ts +27 -0
- package/src/outputs/remote/remote.impl.ts +218 -0
- package/src/outputs.context.descriptor.ts +10 -0
- package/src/outputs.context.impl.ts +30 -0
- package/src/paths.ts +10 -0
- package/src/schemas/audit.ts +98 -0
- package/src/schemas/entry.ts +88 -0
- package/src/schemas/formatter.ts +37 -0
- package/src/schemas/index.ts +80 -0
- package/src/schemas/logger.ts +38 -0
- package/src/schemas/output.ts +62 -0
- package/src/schemas/sink.ts +39 -0
- package/src/sinks/buffer/buffer.descriptor.ts +13 -0
- package/src/sinks/buffer/buffer.impl.cli.ts +49 -0
- package/src/sinks/console/console.descriptor.ts +20 -0
- package/src/sinks/console/console.impl.browser.ts +69 -0
- package/src/sinks/console/console.impl.cli.ts +71 -0
- package/src/sinks/index.ts +8 -0
- package/src/sinks/memory/memory.descriptor.ts +20 -0
- package/src/sinks/memory/memory.impl.ts +119 -0
- package/src/sinks/stdout/stdout.descriptor.ts +13 -0
- package/src/sinks/stdout/stdout.impl.cli.ts +27 -0
- package/src/sinks.context.descriptor.ts +10 -0
- package/src/sinks.context.impl.ts +30 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote Output Descriptor
|
|
3
|
+
*
|
|
4
|
+
* Sends logs to a remote HTTP endpoint.
|
|
5
|
+
* Cloud hardware target.
|
|
6
|
+
*/
|
|
7
|
+
export const remoteOutputDescriptor = {
|
|
8
|
+
kind: 'logging/output',
|
|
9
|
+
id: 'remote',
|
|
10
|
+
name: 'Remote Output',
|
|
11
|
+
description: 'Sends logs to a remote HTTP endpoint',
|
|
12
|
+
tags: ['cloud', 'centralized'],
|
|
13
|
+
hardware: ['cloud'],
|
|
14
|
+
storage: 'remote',
|
|
15
|
+
format: 'jsonl',
|
|
16
|
+
buffering: {
|
|
17
|
+
enabled: true,
|
|
18
|
+
size: 16384,
|
|
19
|
+
flushInterval: 5000,
|
|
20
|
+
maxBufferEntries: 5000
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export default remoteOutputDescriptor;
|
|
24
|
+
//# sourceMappingURL=remote.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote.descriptor.js","sourceRoot":"","sources":["../../../src/outputs/remote/remote.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACvD,IAAI,EAAE,gBAAgB;IACtB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,sCAAsC;IACnD,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;IAC9B,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,OAAO;IACf,SAAS,EAAE;QACV,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;KACtB;CACD,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote Output Implementation
|
|
3
|
+
*
|
|
4
|
+
* Batched HTTP delivery to a logging endpoint.
|
|
5
|
+
*/
|
|
6
|
+
import type { OutputImplementation, OutputContext, OutputReadOptions, OutputTailOptions, TailHandle, OutputStats } from '../../kinds/output.ts';
|
|
7
|
+
import type { OutputDescriptor } from '../../schemas/output.ts';
|
|
8
|
+
import type { RuntimeLogEntry } from '../../schemas/entry.ts';
|
|
9
|
+
/** Metrics for buffer operations */
|
|
10
|
+
interface BufferMetrics {
|
|
11
|
+
/** Total entries added to buffer */
|
|
12
|
+
added: number;
|
|
13
|
+
/** Total entries sent successfully */
|
|
14
|
+
sent: number;
|
|
15
|
+
/** Total entries dropped due to buffer overflow */
|
|
16
|
+
dropped: number;
|
|
17
|
+
/** Total failed sends that were re-buffered for retry */
|
|
18
|
+
retried: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Remote output - sends logs via HTTP.
|
|
22
|
+
*/
|
|
23
|
+
export default class RemoteOutput implements OutputImplementation {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
readonly descriptor: OutputDescriptor;
|
|
26
|
+
private readonly formatter;
|
|
27
|
+
private readonly endpoint;
|
|
28
|
+
private readonly buffering;
|
|
29
|
+
private readonly maxBufferEntries;
|
|
30
|
+
private buffer;
|
|
31
|
+
private flushTimer;
|
|
32
|
+
private isFlushing;
|
|
33
|
+
private metrics;
|
|
34
|
+
constructor(descriptor: OutputDescriptor, context: OutputContext);
|
|
35
|
+
/** Get current buffer metrics */
|
|
36
|
+
getMetrics(): BufferMetrics;
|
|
37
|
+
/** Get current buffer size */
|
|
38
|
+
getBufferSize(): number;
|
|
39
|
+
private addToBuffer;
|
|
40
|
+
write(entry: RuntimeLogEntry): Promise<void>;
|
|
41
|
+
writeBatch(entries: RuntimeLogEntry[]): Promise<void>;
|
|
42
|
+
flush(): Promise<void>;
|
|
43
|
+
read(_options?: OutputReadOptions): Promise<string[]>;
|
|
44
|
+
tail(_callback: (line: string) => void, _options?: OutputTailOptions): TailHandle;
|
|
45
|
+
stats(): Promise<OutputStats>;
|
|
46
|
+
close(): Promise<void>;
|
|
47
|
+
private send;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=remote.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote.impl.d.ts","sourceRoot":"","sources":["../../../src/outputs/remote/remote.impl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,yBAAyB,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9D,oCAAoC;AACpC,UAAU,aAAa;IACtB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,oBAAoB;IAChE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAgE;gBAEnE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa;IA8BhE,iCAAiC;IACjC,UAAU,IAAI,aAAa;IAI3B,8BAA8B;IAC9B,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,WAAW;IAwBb,KAAK,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5C,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAarD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,IAAI,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK3D,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,UAAU;IAK3E,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAI7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAWd,IAAI;CAsClB"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote Output Implementation
|
|
3
|
+
*
|
|
4
|
+
* Batched HTTP delivery to a logging endpoint.
|
|
5
|
+
*/
|
|
6
|
+
import { getDefaultLogger } from "../../contexts/logger.js";
|
|
7
|
+
const logger = getDefaultLogger();
|
|
8
|
+
/** Default remote endpoint */
|
|
9
|
+
const DEFAULT_ENDPOINT = 'http://localhost:3000/api/logs';
|
|
10
|
+
/**
|
|
11
|
+
* Remote output - sends logs via HTTP.
|
|
12
|
+
*/
|
|
13
|
+
export default class RemoteOutput {
|
|
14
|
+
id;
|
|
15
|
+
descriptor;
|
|
16
|
+
formatter;
|
|
17
|
+
endpoint;
|
|
18
|
+
buffering;
|
|
19
|
+
maxBufferEntries;
|
|
20
|
+
buffer = [];
|
|
21
|
+
flushTimer = null;
|
|
22
|
+
isFlushing = false;
|
|
23
|
+
metrics = { added: 0, sent: 0, dropped: 0, retried: 0 };
|
|
24
|
+
constructor(descriptor, context) {
|
|
25
|
+
this.id = descriptor.id;
|
|
26
|
+
this.descriptor = descriptor;
|
|
27
|
+
// Use formatter from context or create default
|
|
28
|
+
this.formatter = context.formatter ?? {
|
|
29
|
+
format: (e) => JSON.stringify(e),
|
|
30
|
+
parse: (s) => JSON.parse(s),
|
|
31
|
+
formatBatch: (entries) => entries.map((e) => JSON.stringify(e)).join('\n')
|
|
32
|
+
};
|
|
33
|
+
// Configuration
|
|
34
|
+
this.endpoint = descriptor.endpoint ?? DEFAULT_ENDPOINT;
|
|
35
|
+
this.buffering = descriptor.buffering ?? {
|
|
36
|
+
enabled: true,
|
|
37
|
+
size: 16384,
|
|
38
|
+
flushInterval: 5000,
|
|
39
|
+
maxBufferEntries: 10000
|
|
40
|
+
};
|
|
41
|
+
this.maxBufferEntries = this.buffering.maxBufferEntries ?? 10000;
|
|
42
|
+
// Start flush timer if buffering enabled
|
|
43
|
+
if (this.buffering.enabled && this.buffering.flushInterval) {
|
|
44
|
+
this.flushTimer = setInterval(() => {
|
|
45
|
+
this.flush().catch((err) => logger.error('Remote output flush error', { error: err }));
|
|
46
|
+
}, this.buffering.flushInterval);
|
|
47
|
+
this.flushTimer.unref?.();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** Get current buffer metrics */
|
|
51
|
+
getMetrics() {
|
|
52
|
+
return { ...this.metrics };
|
|
53
|
+
}
|
|
54
|
+
/** Get current buffer size */
|
|
55
|
+
getBufferSize() {
|
|
56
|
+
return this.buffer.length;
|
|
57
|
+
}
|
|
58
|
+
addToBuffer(entries) {
|
|
59
|
+
const spaceAvailable = this.maxBufferEntries - this.buffer.length;
|
|
60
|
+
if (entries.length <= spaceAvailable) {
|
|
61
|
+
// All entries fit
|
|
62
|
+
this.buffer.push(...entries);
|
|
63
|
+
this.metrics.added += entries.length;
|
|
64
|
+
}
|
|
65
|
+
else if (spaceAvailable > 0) {
|
|
66
|
+
// Partial fit - add what we can, drop the oldest to make room for rest
|
|
67
|
+
const toAdd = entries.slice(-spaceAvailable); // Keep newest entries
|
|
68
|
+
const toDrop = entries.slice(0, entries.length - spaceAvailable);
|
|
69
|
+
this.buffer.push(...toAdd);
|
|
70
|
+
this.metrics.added += toAdd.length;
|
|
71
|
+
this.metrics.dropped += toDrop.length;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// No space - drop oldest entries to make room for newest
|
|
75
|
+
const dropCount = Math.min(entries.length, this.maxBufferEntries);
|
|
76
|
+
this.buffer.splice(0, dropCount); // Remove oldest
|
|
77
|
+
this.metrics.dropped += dropCount;
|
|
78
|
+
this.buffer.push(...entries);
|
|
79
|
+
this.metrics.added += entries.length;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async write(entry) {
|
|
83
|
+
if (this.buffering.enabled) {
|
|
84
|
+
this.addToBuffer([entry]);
|
|
85
|
+
// Flush if buffer is large enough
|
|
86
|
+
const estimatedSize = JSON.stringify(this.buffer).length;
|
|
87
|
+
if (estimatedSize >= this.buffering.size) {
|
|
88
|
+
await this.flush();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
await this.send([entry]);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async writeBatch(entries) {
|
|
96
|
+
if (this.buffering.enabled) {
|
|
97
|
+
this.addToBuffer(entries);
|
|
98
|
+
const estimatedSize = JSON.stringify(this.buffer).length;
|
|
99
|
+
if (estimatedSize >= this.buffering.size) {
|
|
100
|
+
await this.flush();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
await this.send(entries);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async flush() {
|
|
108
|
+
if (this.buffer.length === 0 || this.isFlushing)
|
|
109
|
+
return;
|
|
110
|
+
this.isFlushing = true;
|
|
111
|
+
try {
|
|
112
|
+
const entries = this.buffer.splice(0);
|
|
113
|
+
await this.send(entries);
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
this.isFlushing = false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async read(_options) {
|
|
120
|
+
// Remote outputs do not support reading
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
tail(_callback, _options) {
|
|
124
|
+
// Remote outputs do not support tailing
|
|
125
|
+
return { close: () => { } };
|
|
126
|
+
}
|
|
127
|
+
async stats() {
|
|
128
|
+
return { size: 0, exists: true };
|
|
129
|
+
}
|
|
130
|
+
async close() {
|
|
131
|
+
// Clear flush timer
|
|
132
|
+
if (this.flushTimer) {
|
|
133
|
+
clearInterval(this.flushTimer);
|
|
134
|
+
this.flushTimer = null;
|
|
135
|
+
}
|
|
136
|
+
// Flush remaining buffer
|
|
137
|
+
await this.flush();
|
|
138
|
+
}
|
|
139
|
+
async send(entries) {
|
|
140
|
+
if (entries.length === 0)
|
|
141
|
+
return;
|
|
142
|
+
const body = this.formatter.formatBatch
|
|
143
|
+
? this.formatter.formatBatch(entries)
|
|
144
|
+
: entries.map((e) => this.formatter.format(e)).join('\n');
|
|
145
|
+
try {
|
|
146
|
+
const response = await fetch(this.endpoint, {
|
|
147
|
+
method: 'POST',
|
|
148
|
+
headers: {
|
|
149
|
+
'Content-Type': 'application/x-ndjson'
|
|
150
|
+
},
|
|
151
|
+
body
|
|
152
|
+
});
|
|
153
|
+
if (!response.ok) {
|
|
154
|
+
logger.error('Failed to send logs to remote endpoint', {
|
|
155
|
+
status: response.status,
|
|
156
|
+
statusText: response.statusText,
|
|
157
|
+
endpoint: this.endpoint
|
|
158
|
+
});
|
|
159
|
+
// Re-add failed entries to buffer for retry
|
|
160
|
+
this.addToBuffer(entries);
|
|
161
|
+
this.metrics.retried += entries.length;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
this.metrics.sent += entries.length;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
logger.error('Network error sending logs to remote endpoint', {
|
|
169
|
+
error: error instanceof Error ? error.message : String(error),
|
|
170
|
+
endpoint: this.endpoint
|
|
171
|
+
});
|
|
172
|
+
// Re-add failed entries to buffer for retry
|
|
173
|
+
this.addToBuffer(entries);
|
|
174
|
+
this.metrics.retried += entries.length;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=remote.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote.impl.js","sourceRoot":"","sources":["../../../src/outputs/remote/remote.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging Outputs Context Descriptor
|
|
3
|
+
*/
|
|
4
|
+
declare const _default: {
|
|
5
|
+
id: string;
|
|
6
|
+
kind: "context";
|
|
7
|
+
name?: string | undefined;
|
|
8
|
+
description?: string | undefined;
|
|
9
|
+
tags?: string[] | undefined;
|
|
10
|
+
hardware?: string[] | undefined;
|
|
11
|
+
enabled?: boolean | undefined;
|
|
12
|
+
priority?: number | undefined;
|
|
13
|
+
requiredContext?: string[] | undefined;
|
|
14
|
+
optionalContext?: string[] | undefined;
|
|
15
|
+
config?: Record<string, unknown> | undefined;
|
|
16
|
+
valueSchema?: unknown;
|
|
17
|
+
};
|
|
18
|
+
export default _default;
|
|
19
|
+
//# sourceMappingURL=outputs.context.descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputs.context.descriptor.d.ts","sourceRoot":"","sources":["../src/outputs.context.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;;;;;;;;;;;;;;;AAIH,wBAGG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging Outputs Context Descriptor
|
|
3
|
+
*/
|
|
4
|
+
import { createContextDescriptor } from '@vibesdotdev/runtime/factory/context';
|
|
5
|
+
export default createContextDescriptor({
|
|
6
|
+
id: 'logging/outputs',
|
|
7
|
+
description: 'Map of resolved logging output implementations by ID.'
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=outputs.context.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputs.context.descriptor.js","sourceRoot":"","sources":["../src/outputs.context.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,eAAe,uBAAuB,CAAC;IACtC,EAAE,EAAE,iBAAiB;IACrB,WAAW,EAAE,uDAAuD;CACpE,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging Outputs Context Implementation
|
|
3
|
+
*/
|
|
4
|
+
import type { OutputImplementation } from './kinds/output.ts';
|
|
5
|
+
declare const _default: {
|
|
6
|
+
provide: (runtime: unknown) => Promise<Map<string, OutputImplementation>>;
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=outputs.context.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputs.context.impl.d.ts","sourceRoot":"","sources":["../src/outputs.context.impl.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;;uBAGpC,OAAO;;AADjC,wBAwBE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
provide: async (runtime) => {
|
|
3
|
+
const rt = runtime;
|
|
4
|
+
const map = new Map();
|
|
5
|
+
if (rt.hasKind('logging/output')) {
|
|
6
|
+
for (const desc of rt.query('logging/output').descriptors()) {
|
|
7
|
+
try {
|
|
8
|
+
map.set(desc.id, (await rt.query('logging/output').withId(desc.id).resolve()));
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
// Skip outputs that fail to resolve
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return map;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=outputs.context.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputs.context.impl.js","sourceRoot":"","sources":["../src/outputs.context.impl.ts"],"names":[],"mappings":"AAKA,eAAe;IACd,OAAO,EAAE,KAAK,EAAE,OAAgB,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,OAMV,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgC,CAAC;QACpD,IAAI,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC7D,IAAI,CAAC;oBACJ,GAAG,CAAC,GAAG,CACN,IAAI,CAAC,EAAE,EACP,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAyB,CACpF,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACR,oCAAoC;gBACrC,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;CACD,CAAC"}
|
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log path utilities (string-only, universal-isomorphic).
|
|
3
|
+
*
|
|
4
|
+
* FS-backed path resolution (getVibesGlobalLogDir, resolveLogPathFromDescriptorPath)
|
|
5
|
+
* lives in @vibesdotdev/logging-fs.
|
|
6
|
+
*/
|
|
7
|
+
export declare function uniqueLogPaths(paths: Array<string | null | undefined>): string[];
|
|
8
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,EAAE,CAEhF"}
|
package/dist/paths.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log path utilities (string-only, universal-isomorphic).
|
|
3
|
+
*
|
|
4
|
+
* FS-backed path resolution (getVibesGlobalLogDir, resolveLogPathFromDescriptorPath)
|
|
5
|
+
* lives in @vibesdotdev/logging-fs.
|
|
6
|
+
*/
|
|
7
|
+
export function uniqueLogPaths(paths) {
|
|
8
|
+
return Array.from(new Set(paths.filter((path) => Boolean(path))));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,UAAU,cAAc,CAAC,KAAuC;IACrE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit Logging Descriptor Schema
|
|
3
|
+
*
|
|
4
|
+
* Audit logging for compliance and security events.
|
|
5
|
+
* Entries are immutable and stored with integrity guarantees.
|
|
6
|
+
*/
|
|
7
|
+
import * as z from 'zod/v4';
|
|
8
|
+
/** Audit event categories */
|
|
9
|
+
export declare const AuditCategorySchema: z.ZodEnum<{
|
|
10
|
+
system: "system";
|
|
11
|
+
authentication: "authentication";
|
|
12
|
+
authorization: "authorization";
|
|
13
|
+
data_access: "data_access";
|
|
14
|
+
data_modification: "data_modification";
|
|
15
|
+
configuration: "configuration";
|
|
16
|
+
security: "security";
|
|
17
|
+
}>;
|
|
18
|
+
export type AuditCategory = z.infer<typeof AuditCategorySchema>;
|
|
19
|
+
/** Audit event severity levels */
|
|
20
|
+
export declare const AuditSeveritySchema: z.ZodEnum<{
|
|
21
|
+
low: "low";
|
|
22
|
+
medium: "medium";
|
|
23
|
+
high: "high";
|
|
24
|
+
critical: "critical";
|
|
25
|
+
}>;
|
|
26
|
+
export type AuditSeverity = z.infer<typeof AuditSeveritySchema>;
|
|
27
|
+
/** Audit event outcome */
|
|
28
|
+
export declare const AuditOutcomeSchema: z.ZodEnum<{
|
|
29
|
+
error: "error";
|
|
30
|
+
unknown: "unknown";
|
|
31
|
+
success: "success";
|
|
32
|
+
failure: "failure";
|
|
33
|
+
}>;
|
|
34
|
+
export type AuditOutcome = z.infer<typeof AuditOutcomeSchema>;
|
|
35
|
+
/** Actor who triggered the audit event */
|
|
36
|
+
export declare const AuditActorSchema: z.ZodObject<{
|
|
37
|
+
id: z.ZodString;
|
|
38
|
+
type: z.ZodEnum<{
|
|
39
|
+
user: "user";
|
|
40
|
+
system: "system";
|
|
41
|
+
service: "service";
|
|
42
|
+
}>;
|
|
43
|
+
name: z.ZodOptional<z.ZodString>;
|
|
44
|
+
ip: z.ZodOptional<z.ZodString>;
|
|
45
|
+
userAgent: z.ZodOptional<z.ZodString>;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
export type AuditActor = z.infer<typeof AuditActorSchema>;
|
|
48
|
+
/** Target of the audit event */
|
|
49
|
+
export declare const AuditTargetSchema: z.ZodObject<{
|
|
50
|
+
id: z.ZodString;
|
|
51
|
+
type: z.ZodString;
|
|
52
|
+
name: z.ZodOptional<z.ZodString>;
|
|
53
|
+
}, z.core.$strip>;
|
|
54
|
+
export type AuditTarget = z.infer<typeof AuditTargetSchema>;
|
|
55
|
+
/** Single audit log entry */
|
|
56
|
+
export declare const AuditEntrySchema: z.ZodObject<{
|
|
57
|
+
id: z.ZodString;
|
|
58
|
+
timestamp: z.ZodString;
|
|
59
|
+
category: z.ZodEnum<{
|
|
60
|
+
system: "system";
|
|
61
|
+
authentication: "authentication";
|
|
62
|
+
authorization: "authorization";
|
|
63
|
+
data_access: "data_access";
|
|
64
|
+
data_modification: "data_modification";
|
|
65
|
+
configuration: "configuration";
|
|
66
|
+
security: "security";
|
|
67
|
+
}>;
|
|
68
|
+
severity: z.ZodEnum<{
|
|
69
|
+
low: "low";
|
|
70
|
+
medium: "medium";
|
|
71
|
+
high: "high";
|
|
72
|
+
critical: "critical";
|
|
73
|
+
}>;
|
|
74
|
+
action: z.ZodString;
|
|
75
|
+
actor: z.ZodObject<{
|
|
76
|
+
id: z.ZodString;
|
|
77
|
+
type: z.ZodEnum<{
|
|
78
|
+
user: "user";
|
|
79
|
+
system: "system";
|
|
80
|
+
service: "service";
|
|
81
|
+
}>;
|
|
82
|
+
name: z.ZodOptional<z.ZodString>;
|
|
83
|
+
ip: z.ZodOptional<z.ZodString>;
|
|
84
|
+
userAgent: z.ZodOptional<z.ZodString>;
|
|
85
|
+
}, z.core.$strip>;
|
|
86
|
+
target: z.ZodOptional<z.ZodObject<{
|
|
87
|
+
id: z.ZodString;
|
|
88
|
+
type: z.ZodString;
|
|
89
|
+
name: z.ZodOptional<z.ZodString>;
|
|
90
|
+
}, z.core.$strip>>;
|
|
91
|
+
outcome: z.ZodEnum<{
|
|
92
|
+
error: "error";
|
|
93
|
+
unknown: "unknown";
|
|
94
|
+
success: "success";
|
|
95
|
+
failure: "failure";
|
|
96
|
+
}>;
|
|
97
|
+
context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
98
|
+
error: z.ZodOptional<z.ZodString>;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
export type AuditEntry = z.infer<typeof AuditEntrySchema>;
|
|
101
|
+
/** Audit descriptor schema */
|
|
102
|
+
export declare const AuditDescriptorSchema: z.ZodObject<{
|
|
103
|
+
id: z.ZodString;
|
|
104
|
+
name: z.ZodOptional<z.ZodString>;
|
|
105
|
+
description: z.ZodOptional<z.ZodString>;
|
|
106
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
107
|
+
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
108
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
109
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
110
|
+
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
111
|
+
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
112
|
+
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
113
|
+
kind: z.ZodLiteral<"logging/audit">;
|
|
114
|
+
category: z.ZodEnum<{
|
|
115
|
+
system: "system";
|
|
116
|
+
authentication: "authentication";
|
|
117
|
+
authorization: "authorization";
|
|
118
|
+
data_access: "data_access";
|
|
119
|
+
data_modification: "data_modification";
|
|
120
|
+
configuration: "configuration";
|
|
121
|
+
security: "security";
|
|
122
|
+
}>;
|
|
123
|
+
severity: z.ZodDefault<z.ZodEnum<{
|
|
124
|
+
low: "low";
|
|
125
|
+
medium: "medium";
|
|
126
|
+
high: "high";
|
|
127
|
+
critical: "critical";
|
|
128
|
+
}>>;
|
|
129
|
+
retention: z.ZodDefault<z.ZodString>;
|
|
130
|
+
immutable: z.ZodDefault<z.ZodBoolean>;
|
|
131
|
+
}, z.core.$strip>;
|
|
132
|
+
export type AuditDescriptor = z.infer<typeof AuditDescriptorSchema>;
|
|
133
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/schemas/audit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,6BAA6B;AAC7B,eAAO,MAAM,mBAAmB;;;;;;;;EAQ9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,kCAAkC;AAClC,eAAO,MAAM,mBAAmB;;;;;EAAgD,CAAC;AACjF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,0BAA0B;AAC1B,eAAO,MAAM,kBAAkB;;;;;EAAqD,CAAC;AACrF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,0CAA0C;AAC1C,eAAO,MAAM,gBAAgB;;;;;;;;;;iBAW3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,gCAAgC;AAChC,eAAO,MAAM,iBAAiB;;;;iBAO5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,6BAA6B;AAC7B,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqB3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,8BAA8B;AAC9B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAchC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit Logging Descriptor Schema
|
|
3
|
+
*
|
|
4
|
+
* Audit logging for compliance and security events.
|
|
5
|
+
* Entries are immutable and stored with integrity guarantees.
|
|
6
|
+
*/
|
|
7
|
+
import * as z from 'zod/v4';
|
|
8
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/runtime/schemas/descriptor';
|
|
9
|
+
/** Audit event categories */
|
|
10
|
+
export const AuditCategorySchema = z.enum([
|
|
11
|
+
'authentication',
|
|
12
|
+
'authorization',
|
|
13
|
+
'data_access',
|
|
14
|
+
'data_modification',
|
|
15
|
+
'configuration',
|
|
16
|
+
'system',
|
|
17
|
+
'security'
|
|
18
|
+
]);
|
|
19
|
+
/** Audit event severity levels */
|
|
20
|
+
export const AuditSeveritySchema = z.enum(['low', 'medium', 'high', 'critical']);
|
|
21
|
+
/** Audit event outcome */
|
|
22
|
+
export const AuditOutcomeSchema = z.enum(['success', 'failure', 'error', 'unknown']);
|
|
23
|
+
/** Actor who triggered the audit event */
|
|
24
|
+
export const AuditActorSchema = z.object({
|
|
25
|
+
/** Actor identifier */
|
|
26
|
+
id: z.string(),
|
|
27
|
+
/** Actor type (user, service, system) */
|
|
28
|
+
type: z.enum(['user', 'service', 'system']),
|
|
29
|
+
/** Human-readable name */
|
|
30
|
+
name: z.string().optional(),
|
|
31
|
+
/** IP address */
|
|
32
|
+
ip: z.string().optional(),
|
|
33
|
+
/** User agent */
|
|
34
|
+
userAgent: z.string().optional()
|
|
35
|
+
});
|
|
36
|
+
/** Target of the audit event */
|
|
37
|
+
export const AuditTargetSchema = z.object({
|
|
38
|
+
/** Target identifier */
|
|
39
|
+
id: z.string(),
|
|
40
|
+
/** Target type (e.g., 'user', 'document', 'api') */
|
|
41
|
+
type: z.string(),
|
|
42
|
+
/** Human-readable name */
|
|
43
|
+
name: z.string().optional()
|
|
44
|
+
});
|
|
45
|
+
/** Single audit log entry */
|
|
46
|
+
export const AuditEntrySchema = z.object({
|
|
47
|
+
/** Unique entry ID */
|
|
48
|
+
id: z.string(),
|
|
49
|
+
/** Timestamp (ISO 8601) */
|
|
50
|
+
timestamp: z.string(),
|
|
51
|
+
/** Event category */
|
|
52
|
+
category: AuditCategorySchema,
|
|
53
|
+
/** Severity level */
|
|
54
|
+
severity: AuditSeveritySchema,
|
|
55
|
+
/** Action performed */
|
|
56
|
+
action: z.string(),
|
|
57
|
+
/** Who triggered the event */
|
|
58
|
+
actor: AuditActorSchema,
|
|
59
|
+
/** What was affected */
|
|
60
|
+
target: AuditTargetSchema.optional(),
|
|
61
|
+
/** Event outcome */
|
|
62
|
+
outcome: AuditOutcomeSchema,
|
|
63
|
+
/** Additional context */
|
|
64
|
+
context: z.record(z.string(), z.unknown()).optional(),
|
|
65
|
+
/** Error details (for failure/error outcomes) */
|
|
66
|
+
error: z.string().optional()
|
|
67
|
+
});
|
|
68
|
+
/** Audit descriptor schema */
|
|
69
|
+
export const AuditDescriptorSchema = RuntimeDescriptorSchema.extend({
|
|
70
|
+
kind: z.literal('logging/audit'),
|
|
71
|
+
/** Event category this audit config handles */
|
|
72
|
+
category: AuditCategorySchema,
|
|
73
|
+
/** Minimum severity to log */
|
|
74
|
+
severity: AuditSeveritySchema.default('low'),
|
|
75
|
+
/** Retention period (e.g., '90d', '1y') */
|
|
76
|
+
retention: z.string().default('90d'),
|
|
77
|
+
/** Whether entries are immutable (append-only) */
|
|
78
|
+
immutable: z.boolean().default(true)
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/schemas/audit.ts"],"names":[],"mappings":"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"}
|