@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,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logs Search CLI Command Descriptor
|
|
3
|
+
*
|
|
4
|
+
* Search log entries by pattern.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { CLICommandAssetDescriptor } from './types.ts';
|
|
8
|
+
|
|
9
|
+
const descriptor: CLICommandAssetDescriptor = {
|
|
10
|
+
kind: 'cli/command',
|
|
11
|
+
id: 'logs.search',
|
|
12
|
+
name: 'search',
|
|
13
|
+
description: 'Search log entries by pattern',
|
|
14
|
+
group: 'logs',
|
|
15
|
+
|
|
16
|
+
arguments: [
|
|
17
|
+
{
|
|
18
|
+
name: 'pattern',
|
|
19
|
+
description: 'Search pattern (regex supported)',
|
|
20
|
+
required: true
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
|
|
24
|
+
options: [
|
|
25
|
+
{
|
|
26
|
+
flags: '-o, --output <id>',
|
|
27
|
+
description: 'Search in specific output (default: all)'
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
flags: '-n, --max <count>',
|
|
31
|
+
description: 'Maximum results to return',
|
|
32
|
+
default: '100'
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
flags: '-i, --ignore-case',
|
|
36
|
+
description: 'Case-insensitive search'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
flags: '--level <level>',
|
|
40
|
+
description: 'Filter by log level'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
flags: '--since <time>',
|
|
44
|
+
description: 'Only show entries since (e.g., 1h, 30m, 2024-01-01)'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
flags: '--json',
|
|
48
|
+
description: 'Output as JSON'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
flags: '-C, --context <lines>',
|
|
52
|
+
description: 'Show context lines around matches'
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
|
|
56
|
+
surfaces: ['cli'],
|
|
57
|
+
hardware: ['consumer'],
|
|
58
|
+
enabled: true
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export default descriptor;
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logs Search CLI Command Implementation
|
|
3
|
+
*
|
|
4
|
+
* Search log entries by pattern.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { getVibesRuntime } from '@vibesdotdev/runtime';
|
|
8
|
+
import type { OutputDescriptor } from '../schemas/output.ts';
|
|
9
|
+
import type { OutputImplementation } from '../kinds/output.ts';
|
|
10
|
+
|
|
11
|
+
interface SearchArgs {
|
|
12
|
+
pattern: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface SearchOptions {
|
|
16
|
+
output?: string;
|
|
17
|
+
max?: string;
|
|
18
|
+
ignoreCase?: boolean;
|
|
19
|
+
level?: string;
|
|
20
|
+
since?: string;
|
|
21
|
+
json?: boolean;
|
|
22
|
+
context?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Color codes for log levels
|
|
26
|
+
const LEVEL_COLORS: Record<string, string> = {
|
|
27
|
+
debug: '\x1b[90m',
|
|
28
|
+
info: '\x1b[36m',
|
|
29
|
+
warn: '\x1b[33m',
|
|
30
|
+
error: '\x1b[31m'
|
|
31
|
+
};
|
|
32
|
+
const RESET = '\x1b[0m';
|
|
33
|
+
const HIGHLIGHT = '\x1b[43m\x1b[30m'; // Yellow background, black text
|
|
34
|
+
|
|
35
|
+
function formatLine(line: string, pattern: RegExp): string {
|
|
36
|
+
try {
|
|
37
|
+
const entry = JSON.parse(line);
|
|
38
|
+
const level = entry.level ?? 'info';
|
|
39
|
+
const color = LEVEL_COLORS[level] ?? '';
|
|
40
|
+
const timestamp = entry.timestamp?.slice(0, 19) ?? '';
|
|
41
|
+
const namespace = entry.namespace ?? '';
|
|
42
|
+
const message = entry.message ?? '';
|
|
43
|
+
|
|
44
|
+
// Highlight matches
|
|
45
|
+
const highlightedMessage = message.replace(
|
|
46
|
+
pattern,
|
|
47
|
+
(match: string) => `${HIGHLIGHT}${match}${RESET}`
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
return `${color}[${timestamp}] [${level.toUpperCase().padEnd(5)}] [${namespace}]${RESET} ${highlightedMessage}`;
|
|
51
|
+
} catch {
|
|
52
|
+
return line.replace(pattern, (match: string) => `${HIGHLIGHT}${match}${RESET}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function matchesLevel(line: string, levelFilter: string): boolean {
|
|
57
|
+
try {
|
|
58
|
+
const entry = JSON.parse(line);
|
|
59
|
+
return entry.level === levelFilter;
|
|
60
|
+
} catch {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function matchesSince(line: string, sinceMs: number): boolean {
|
|
66
|
+
try {
|
|
67
|
+
const entry = JSON.parse(line);
|
|
68
|
+
if (!entry.timestamp) return true;
|
|
69
|
+
const entryTime = new Date(entry.timestamp).getTime();
|
|
70
|
+
return entryTime >= sinceMs;
|
|
71
|
+
} catch {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function parseSince(since: string): number {
|
|
77
|
+
// Handle relative time (1h, 30m, 2d)
|
|
78
|
+
const match = since.match(/^(\d+)([smhd])$/);
|
|
79
|
+
if (match) {
|
|
80
|
+
const value = parseInt(match[1], 10);
|
|
81
|
+
const unit = match[2];
|
|
82
|
+
const multipliers: Record<string, number> = {
|
|
83
|
+
s: 1000,
|
|
84
|
+
m: 60 * 1000,
|
|
85
|
+
h: 60 * 60 * 1000,
|
|
86
|
+
d: 24 * 60 * 60 * 1000
|
|
87
|
+
};
|
|
88
|
+
return Date.now() - value * multipliers[unit];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Try to parse as date
|
|
92
|
+
const date = new Date(since);
|
|
93
|
+
if (!isNaN(date.getTime())) {
|
|
94
|
+
return date.getTime();
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export default {
|
|
101
|
+
async execute(args: SearchArgs, opts: SearchOptions): Promise<void> {
|
|
102
|
+
const runtime = getVibesRuntime();
|
|
103
|
+
const maxResults = opts.max ? parseInt(opts.max, 10) : 100;
|
|
104
|
+
const sinceMs = opts.since ? parseSince(opts.since) : 0;
|
|
105
|
+
|
|
106
|
+
const flags = opts.ignoreCase ? 'gi' : 'g';
|
|
107
|
+
const pattern = new RegExp(args.pattern, flags);
|
|
108
|
+
|
|
109
|
+
// Get outputs to search
|
|
110
|
+
let outputIds: string[];
|
|
111
|
+
if (opts.output) {
|
|
112
|
+
outputIds = [opts.output];
|
|
113
|
+
} else {
|
|
114
|
+
const descriptors = runtime
|
|
115
|
+
.query<OutputDescriptor, OutputImplementation>('logging/output')
|
|
116
|
+
.enabled()
|
|
117
|
+
.descriptors();
|
|
118
|
+
outputIds = descriptors.map((d) => d.id);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const results: Array<{ output: string; line: string }> = [];
|
|
122
|
+
|
|
123
|
+
for (const outputId of outputIds) {
|
|
124
|
+
try {
|
|
125
|
+
const output = await runtime
|
|
126
|
+
.query<OutputDescriptor, OutputImplementation>('logging/output')
|
|
127
|
+
.withId(outputId)
|
|
128
|
+
.resolve();
|
|
129
|
+
|
|
130
|
+
// Read all available lines (up to a reasonable limit)
|
|
131
|
+
const lines = await output.read({ lines: 10000 });
|
|
132
|
+
|
|
133
|
+
for (const line of lines) {
|
|
134
|
+
// Apply filters
|
|
135
|
+
if (opts.level && !matchesLevel(line, opts.level)) continue;
|
|
136
|
+
if (sinceMs && !matchesSince(line, sinceMs)) continue;
|
|
137
|
+
if (!pattern.test(line)) continue;
|
|
138
|
+
|
|
139
|
+
results.push({ output: outputId, line });
|
|
140
|
+
if (results.length >= maxResults) break;
|
|
141
|
+
}
|
|
142
|
+
} catch {
|
|
143
|
+
// Skip outputs that can't be read
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (results.length >= maxResults) break;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (results.length === 0) {
|
|
150
|
+
console.log('No matching entries found.');
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (opts.json) {
|
|
155
|
+
const parsed = results.map(({ output, line }) => {
|
|
156
|
+
try {
|
|
157
|
+
return { output, ...JSON.parse(line) };
|
|
158
|
+
} catch {
|
|
159
|
+
return { output, raw: line };
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
console.log(`\n🔍 Found ${results.length} matches\n`);
|
|
167
|
+
for (const { output, line } of results) {
|
|
168
|
+
const formatted = formatLine(line, pattern);
|
|
169
|
+
console.log(`[${output}] ${formatted}`);
|
|
170
|
+
}
|
|
171
|
+
console.log('');
|
|
172
|
+
}
|
|
173
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logs Tail CLI Command Descriptor
|
|
3
|
+
*
|
|
4
|
+
* Follows a log output in real-time.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { CLICommandAssetDescriptor } from './types.ts';
|
|
8
|
+
|
|
9
|
+
const descriptor: CLICommandAssetDescriptor = {
|
|
10
|
+
kind: 'cli/command',
|
|
11
|
+
id: 'logs.tail',
|
|
12
|
+
name: 'tail',
|
|
13
|
+
description: 'Follow a log output in real-time',
|
|
14
|
+
group: 'logs',
|
|
15
|
+
|
|
16
|
+
arguments: [
|
|
17
|
+
{
|
|
18
|
+
name: 'output',
|
|
19
|
+
description: 'Output ID to tail (e.g., mcp-server, file)',
|
|
20
|
+
required: false
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
|
|
24
|
+
options: [
|
|
25
|
+
{
|
|
26
|
+
flags: '-n, --lines <count>',
|
|
27
|
+
description: 'Number of initial lines to show',
|
|
28
|
+
default: '10'
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
flags: '-f, --filter <pattern>',
|
|
32
|
+
description: 'Filter lines by pattern'
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
flags: '-i, --ignore-case',
|
|
36
|
+
description: 'Case-insensitive filtering'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
flags: '--level <level>',
|
|
40
|
+
description: 'Filter by log level (debug, info, warn, error)'
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
|
|
44
|
+
surfaces: ['cli'],
|
|
45
|
+
hardware: ['consumer'],
|
|
46
|
+
enabled: true
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export default descriptor;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logs Tail CLI Command Implementation
|
|
3
|
+
*
|
|
4
|
+
* Follows a log output in real-time.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { getVibesRuntime } from '@vibesdotdev/runtime';
|
|
8
|
+
import type { OutputDescriptor } from '../schemas/output.ts';
|
|
9
|
+
import type { OutputImplementation, TailHandle } from '../kinds/output.ts';
|
|
10
|
+
|
|
11
|
+
interface TailArgs {
|
|
12
|
+
output?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface TailOptions {
|
|
16
|
+
lines?: string;
|
|
17
|
+
filter?: string;
|
|
18
|
+
ignoreCase?: boolean;
|
|
19
|
+
level?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Color codes for log levels
|
|
23
|
+
const LEVEL_COLORS: Record<string, string> = {
|
|
24
|
+
debug: '\x1b[90m', // gray
|
|
25
|
+
info: '\x1b[36m', // cyan
|
|
26
|
+
warn: '\x1b[33m', // yellow
|
|
27
|
+
error: '\x1b[31m' // red
|
|
28
|
+
};
|
|
29
|
+
const RESET = '\x1b[0m';
|
|
30
|
+
|
|
31
|
+
function formatLine(line: string, levelFilter?: string): string | null {
|
|
32
|
+
try {
|
|
33
|
+
const entry = JSON.parse(line);
|
|
34
|
+
const level = entry.level ?? 'info';
|
|
35
|
+
|
|
36
|
+
// Filter by level if specified
|
|
37
|
+
if (levelFilter && level !== levelFilter) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const color = LEVEL_COLORS[level] ?? '';
|
|
42
|
+
const timestamp = entry.timestamp?.slice(11, 19) ?? '';
|
|
43
|
+
const namespace = entry.namespace ?? '';
|
|
44
|
+
const message = entry.message ?? '';
|
|
45
|
+
|
|
46
|
+
return `${color}[${timestamp}] [${level.toUpperCase().padEnd(5)}] [${namespace}]${RESET} ${message}`;
|
|
47
|
+
} catch {
|
|
48
|
+
// Not JSON, return as-is
|
|
49
|
+
return line;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export default {
|
|
54
|
+
async execute(args: TailArgs, opts: TailOptions): Promise<void> {
|
|
55
|
+
const runtime = getVibesRuntime();
|
|
56
|
+
const outputId = args.output ?? 'file';
|
|
57
|
+
|
|
58
|
+
let output: OutputImplementation;
|
|
59
|
+
try {
|
|
60
|
+
output = await runtime
|
|
61
|
+
.query<OutputDescriptor, OutputImplementation>('logging/output')
|
|
62
|
+
.withId(outputId)
|
|
63
|
+
.resolve();
|
|
64
|
+
} catch (err) {
|
|
65
|
+
console.error(
|
|
66
|
+
`Failed to resolve output '${outputId}': ${err instanceof Error ? err.message : String(err)}`
|
|
67
|
+
);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const lines = opts.lines ? parseInt(opts.lines, 10) : 10;
|
|
72
|
+
|
|
73
|
+
console.log(`\n📜 Tailing ${outputId} (Ctrl+C to stop)\n`);
|
|
74
|
+
|
|
75
|
+
let handle: TailHandle;
|
|
76
|
+
try {
|
|
77
|
+
handle = output.tail(
|
|
78
|
+
(line) => {
|
|
79
|
+
const formatted = formatLine(line, opts.level);
|
|
80
|
+
if (formatted !== null) {
|
|
81
|
+
console.log(formatted);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
lines,
|
|
86
|
+
filter: opts.filter,
|
|
87
|
+
ignoreCase: opts.ignoreCase
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
} catch (err) {
|
|
91
|
+
console.error(`Failed to tail: ${err instanceof Error ? err.message : String(err)}`);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Handle Ctrl+C gracefully
|
|
96
|
+
process.on('SIGINT', () => {
|
|
97
|
+
console.log('\n\nStopping...');
|
|
98
|
+
handle.close();
|
|
99
|
+
process.exit(0);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// Keep process alive
|
|
103
|
+
await new Promise(() => {});
|
|
104
|
+
}
|
|
105
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logs View CLI Command Descriptor
|
|
3
|
+
*
|
|
4
|
+
* View log entries from an output.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { CLICommandAssetDescriptor } from './types.ts';
|
|
8
|
+
|
|
9
|
+
const descriptor: CLICommandAssetDescriptor = {
|
|
10
|
+
kind: 'cli/command',
|
|
11
|
+
id: 'logs.view',
|
|
12
|
+
name: 'view',
|
|
13
|
+
description: 'View log entries from an output',
|
|
14
|
+
group: 'logs',
|
|
15
|
+
|
|
16
|
+
arguments: [
|
|
17
|
+
{
|
|
18
|
+
name: 'output',
|
|
19
|
+
description: 'Output ID to view (e.g., mcp-server, file)',
|
|
20
|
+
required: false
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
|
|
24
|
+
options: [
|
|
25
|
+
{
|
|
26
|
+
flags: '-n, --lines <count>',
|
|
27
|
+
description: 'Number of lines to show',
|
|
28
|
+
default: '50'
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
flags: '--offset <count>',
|
|
32
|
+
description: 'Skip this many lines from the end'
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
flags: '-f, --filter <pattern>',
|
|
36
|
+
description: 'Filter lines by pattern'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
flags: '-i, --ignore-case',
|
|
40
|
+
description: 'Case-insensitive filtering'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
flags: '--json',
|
|
44
|
+
description: 'Output as JSON'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
flags: '--raw',
|
|
48
|
+
description: 'Output raw log lines without formatting'
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
|
|
52
|
+
surfaces: ['cli'],
|
|
53
|
+
hardware: ['consumer'],
|
|
54
|
+
enabled: true
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export default descriptor;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logs View CLI Command Implementation
|
|
3
|
+
*
|
|
4
|
+
* View log entries from an output.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { getVibesRuntime } from '@vibesdotdev/runtime';
|
|
8
|
+
import type { OutputDescriptor } from '../schemas/output.ts';
|
|
9
|
+
import type { OutputImplementation } from '../kinds/output.ts';
|
|
10
|
+
|
|
11
|
+
interface ViewArgs {
|
|
12
|
+
output?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface ViewOptions {
|
|
16
|
+
lines?: string;
|
|
17
|
+
offset?: string;
|
|
18
|
+
filter?: string;
|
|
19
|
+
ignoreCase?: boolean;
|
|
20
|
+
json?: boolean;
|
|
21
|
+
raw?: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Color codes for log levels
|
|
25
|
+
const LEVEL_COLORS: Record<string, string> = {
|
|
26
|
+
debug: '\x1b[90m', // gray
|
|
27
|
+
info: '\x1b[36m', // cyan
|
|
28
|
+
warn: '\x1b[33m', // yellow
|
|
29
|
+
error: '\x1b[31m' // red
|
|
30
|
+
};
|
|
31
|
+
const RESET = '\x1b[0m';
|
|
32
|
+
|
|
33
|
+
function formatLine(line: string, raw: boolean): string {
|
|
34
|
+
if (raw) return line;
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
const entry = JSON.parse(line);
|
|
38
|
+
const level = entry.level ?? 'info';
|
|
39
|
+
const color = LEVEL_COLORS[level] ?? '';
|
|
40
|
+
const timestamp = entry.timestamp?.slice(0, 19) ?? '';
|
|
41
|
+
const namespace = entry.namespace ?? '';
|
|
42
|
+
const message = entry.message ?? '';
|
|
43
|
+
const context = entry.context ? ` ${JSON.stringify(entry.context)}` : '';
|
|
44
|
+
|
|
45
|
+
return `${color}[${timestamp}] [${level.toUpperCase().padEnd(5)}] [${namespace}]${RESET} ${message}${context}`;
|
|
46
|
+
} catch {
|
|
47
|
+
return line;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default {
|
|
52
|
+
async execute(args: ViewArgs, opts: ViewOptions): Promise<void> {
|
|
53
|
+
const runtime = getVibesRuntime();
|
|
54
|
+
const outputId = args.output ?? 'file';
|
|
55
|
+
|
|
56
|
+
let output: OutputImplementation;
|
|
57
|
+
try {
|
|
58
|
+
output = await runtime
|
|
59
|
+
.query<OutputDescriptor, OutputImplementation>('logging/output')
|
|
60
|
+
.withId(outputId)
|
|
61
|
+
.resolve();
|
|
62
|
+
} catch (err) {
|
|
63
|
+
console.error(
|
|
64
|
+
`Failed to resolve output '${outputId}': ${err instanceof Error ? err.message : String(err)}`
|
|
65
|
+
);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const lines = opts.lines ? parseInt(opts.lines, 10) : 50;
|
|
70
|
+
const offset = opts.offset ? parseInt(opts.offset, 10) : 0;
|
|
71
|
+
|
|
72
|
+
let entries: string[];
|
|
73
|
+
try {
|
|
74
|
+
entries = await output.read({
|
|
75
|
+
lines,
|
|
76
|
+
offset,
|
|
77
|
+
filter: opts.filter,
|
|
78
|
+
ignoreCase: opts.ignoreCase
|
|
79
|
+
});
|
|
80
|
+
} catch (err) {
|
|
81
|
+
console.error(`Failed to read: ${err instanceof Error ? err.message : String(err)}`);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (entries.length === 0) {
|
|
86
|
+
console.log('No log entries found.');
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (opts.json) {
|
|
91
|
+
const parsed = entries.map((line) => {
|
|
92
|
+
try {
|
|
93
|
+
return JSON.parse(line);
|
|
94
|
+
} catch {
|
|
95
|
+
return { raw: line };
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
console.log(JSON.stringify(parsed, null, 2));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
console.log(`\n📜 ${outputId} (${entries.length} entries)\n`);
|
|
103
|
+
for (const entry of entries) {
|
|
104
|
+
console.log(formatLine(entry, opts.raw ?? false));
|
|
105
|
+
}
|
|
106
|
+
console.log('');
|
|
107
|
+
}
|
|
108
|
+
};
|
package/src/cli/types.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Descriptor Types (local definitions)
|
|
3
|
+
*
|
|
4
|
+
* These types are defined locally because the CLI module hasn't been
|
|
5
|
+
* migrated to the monorepo yet. They mirror the shapes from the CLI
|
|
6
|
+
* module's descriptor schemas.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { RuntimeDescriptor } from '@vibesdotdev/runtime/schemas/descriptor';
|
|
10
|
+
|
|
11
|
+
export interface CLIGroupAssetDescriptor extends RuntimeDescriptor {
|
|
12
|
+
kind: 'cli/group';
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
parent?: string;
|
|
16
|
+
aliases?: string[];
|
|
17
|
+
surfaces?: ('cli' | 'web' | 'worker' | 'bridge')[];
|
|
18
|
+
internal?: boolean;
|
|
19
|
+
order?: number;
|
|
20
|
+
logBuffer?: {
|
|
21
|
+
enabled?: boolean;
|
|
22
|
+
sinks?: string[];
|
|
23
|
+
fallbackToStdout?: boolean;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface CLICommandAssetDescriptor extends RuntimeDescriptor {
|
|
28
|
+
kind: 'cli/command';
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
group: string;
|
|
32
|
+
arguments?: {
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
required?: boolean;
|
|
36
|
+
variadic?: boolean;
|
|
37
|
+
default?: unknown;
|
|
38
|
+
}[];
|
|
39
|
+
options?: {
|
|
40
|
+
flags: string;
|
|
41
|
+
description: string;
|
|
42
|
+
default?: unknown;
|
|
43
|
+
choices?: string[];
|
|
44
|
+
}[];
|
|
45
|
+
aliases?: string[];
|
|
46
|
+
surfaces?: ('cli' | 'web' | 'worker' | 'bridge')[];
|
|
47
|
+
internal?: boolean;
|
|
48
|
+
examples?: {
|
|
49
|
+
command: string;
|
|
50
|
+
description: string;
|
|
51
|
+
}[];
|
|
52
|
+
order?: number;
|
|
53
|
+
tuiAppId?: string;
|
|
54
|
+
logBuffer?: {
|
|
55
|
+
enabled?: boolean;
|
|
56
|
+
sinks?: string[];
|
|
57
|
+
fallbackToStdout?: boolean;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit Logger Context Types
|
|
3
|
+
*
|
|
4
|
+
* Consumers should use the runtime to query for audit implementations:
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* const runtime = getVibesRuntime();
|
|
8
|
+
* const auditor = await runtime.query('logging/audit').withId('default').resolve();
|
|
9
|
+
* await auditor.log({ category: 'authorization', ... });
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { AuditImplementation, AuditLogInput, AuditQueryOptions } from '../kinds/audit.ts';
|
|
14
|
+
import type { AuditEntry, AuditCategory } from '../schemas/audit.ts';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Audit context configuration.
|
|
18
|
+
*/
|
|
19
|
+
export interface AuditContextConfig {
|
|
20
|
+
/** Workspace path for audit log storage */
|
|
21
|
+
workspacePath: string;
|
|
22
|
+
/** Default category for uncategorized events */
|
|
23
|
+
defaultCategory: AuditCategory;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Audit context provider interface.
|
|
28
|
+
*/
|
|
29
|
+
export interface AuditContextProvider {
|
|
30
|
+
/** Log an audit event */
|
|
31
|
+
log(input: AuditLogInput): Promise<AuditEntry>;
|
|
32
|
+
/** Query audit entries */
|
|
33
|
+
query(options?: AuditQueryOptions): Promise<AuditEntry[]>;
|
|
34
|
+
/** Get auditor for a specific category */
|
|
35
|
+
forCategory(category: AuditCategory): Promise<AuditImplementation>;
|
|
36
|
+
}
|