veryfront 0.1.984 → 0.1.986

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.
Files changed (120) hide show
  1. package/LICENSE +16 -4
  2. package/NOTICE +2 -0
  3. package/esm/cli/commands/build/command.js +1 -1
  4. package/esm/cli/commands/build/handler.d.ts.map +1 -1
  5. package/esm/cli/commands/build/handler.js +3 -1
  6. package/esm/cli/commands/dev/handler.d.ts.map +1 -1
  7. package/esm/cli/commands/dev/handler.js +3 -1
  8. package/esm/cli/commands/knowledge/parser.d.ts.map +1 -1
  9. package/esm/cli/commands/knowledge/parser.js +2 -1
  10. package/esm/cli/commands/serve/handler.d.ts.map +1 -1
  11. package/esm/cli/commands/serve/handler.js +3 -1
  12. package/esm/cli/commands/start/handler.d.ts.map +1 -1
  13. package/esm/cli/commands/start/handler.js +3 -1
  14. package/esm/cli/main.js +0 -17
  15. package/esm/cli/router.d.ts.map +1 -1
  16. package/esm/cli/router.js +67 -98
  17. package/esm/cli/shared/default-contracts.d.ts +3 -0
  18. package/esm/cli/shared/default-contracts.d.ts.map +1 -0
  19. package/esm/cli/shared/default-contracts.js +19 -0
  20. package/esm/cli/shared/ensure-content-processor.d.ts +9 -1
  21. package/esm/cli/shared/ensure-content-processor.d.ts.map +1 -1
  22. package/esm/cli/shared/ensure-content-processor.js +23 -2
  23. package/esm/cli/shared/server-startup.d.ts.map +1 -1
  24. package/esm/cli/shared/server-startup.js +7 -4
  25. package/esm/deno.d.ts +3 -0
  26. package/esm/deno.js +5 -2
  27. package/esm/src/agent/hosted/veryfront-cloud-agent-service.d.ts.map +1 -1
  28. package/esm/src/agent/hosted/veryfront-cloud-agent-service.js +7 -5
  29. package/esm/src/agent/service/auth.d.ts.map +1 -1
  30. package/esm/src/agent/service/auth.js +2 -2
  31. package/esm/src/extensions/builtin-extensions.d.ts +9 -1
  32. package/esm/src/extensions/builtin-extensions.d.ts.map +1 -1
  33. package/esm/src/extensions/builtin-extensions.js +138 -54
  34. package/esm/src/extensions/first-party-import.d.ts +25 -0
  35. package/esm/src/extensions/first-party-import.d.ts.map +1 -0
  36. package/esm/src/extensions/first-party-import.js +120 -0
  37. package/esm/src/html/styles-builder/tailwind-compiler-cache.d.ts.map +1 -1
  38. package/esm/src/html/styles-builder/tailwind-compiler-cache.js +2 -1
  39. package/esm/src/internal-agents/run-stream.d.ts.map +1 -1
  40. package/esm/src/internal-agents/run-stream.js +2 -1
  41. package/esm/src/provider/local/local-engine.d.ts.map +1 -1
  42. package/esm/src/provider/local/local-engine.js +7 -4
  43. package/esm/src/provider/types.d.ts +1 -0
  44. package/esm/src/provider/types.d.ts.map +1 -1
  45. package/esm/src/provider/types.js +1 -1
  46. package/esm/src/proxy/main.js +4 -1
  47. package/esm/src/testing/init.js +18 -4
  48. package/esm/src/utils/version-constant.d.ts +1 -1
  49. package/esm/src/utils/version-constant.js +1 -1
  50. package/package.json +18 -94
  51. package/esm/extensions/ext-auth-jwt/src/index.d.ts +0 -39
  52. package/esm/extensions/ext-auth-jwt/src/index.d.ts.map +0 -1
  53. package/esm/extensions/ext-auth-jwt/src/index.js +0 -123
  54. package/esm/extensions/ext-bundler-esbuild/src/binary.d.ts +0 -7
  55. package/esm/extensions/ext-bundler-esbuild/src/binary.d.ts.map +0 -1
  56. package/esm/extensions/ext-bundler-esbuild/src/binary.js +0 -143
  57. package/esm/extensions/ext-bundler-esbuild/src/es-module-lexer.d.ts +0 -17
  58. package/esm/extensions/ext-bundler-esbuild/src/es-module-lexer.d.ts.map +0 -1
  59. package/esm/extensions/ext-bundler-esbuild/src/es-module-lexer.js +0 -29
  60. package/esm/extensions/ext-bundler-esbuild/src/esbuild-bundler.d.ts +0 -20
  61. package/esm/extensions/ext-bundler-esbuild/src/esbuild-bundler.d.ts.map +0 -1
  62. package/esm/extensions/ext-bundler-esbuild/src/esbuild-bundler.js +0 -98
  63. package/esm/extensions/ext-bundler-esbuild/src/index.d.ts +0 -19
  64. package/esm/extensions/ext-bundler-esbuild/src/index.d.ts.map +0 -1
  65. package/esm/extensions/ext-bundler-esbuild/src/index.js +0 -40
  66. package/esm/extensions/ext-bundler-esbuild/src/plugin-adapter.d.ts +0 -14
  67. package/esm/extensions/ext-bundler-esbuild/src/plugin-adapter.d.ts.map +0 -1
  68. package/esm/extensions/ext-bundler-esbuild/src/plugin-adapter.js +0 -55
  69. package/esm/extensions/ext-bundler-esbuild/src/runtime.d.ts +0 -4
  70. package/esm/extensions/ext-bundler-esbuild/src/runtime.d.ts.map +0 -1
  71. package/esm/extensions/ext-bundler-esbuild/src/runtime.js +0 -43
  72. package/esm/extensions/ext-content-mdx/src/compiler/markdown-compile.d.ts +0 -3
  73. package/esm/extensions/ext-content-mdx/src/compiler/markdown-compile.d.ts.map +0 -1
  74. package/esm/extensions/ext-content-mdx/src/compiler/markdown-compile.js +0 -99
  75. package/esm/extensions/ext-content-mdx/src/compiler/mdx-compile.d.ts +0 -3
  76. package/esm/extensions/ext-content-mdx/src/compiler/mdx-compile.d.ts.map +0 -1
  77. package/esm/extensions/ext-content-mdx/src/compiler/mdx-compile.js +0 -53
  78. package/esm/extensions/ext-content-mdx/src/index.d.ts +0 -30
  79. package/esm/extensions/ext-content-mdx/src/index.d.ts.map +0 -1
  80. package/esm/extensions/ext-content-mdx/src/index.js +0 -55
  81. package/esm/extensions/ext-content-mdx/src/plugins/plugin-loader.d.ts +0 -4
  82. package/esm/extensions/ext-content-mdx/src/plugins/plugin-loader.d.ts.map +0 -1
  83. package/esm/extensions/ext-content-mdx/src/plugins/plugin-loader.js +0 -18
  84. package/esm/extensions/ext-content-mdx/src/plugins/rehype-node-positions.d.ts +0 -20
  85. package/esm/extensions/ext-content-mdx/src/plugins/rehype-node-positions.d.ts.map +0 -1
  86. package/esm/extensions/ext-content-mdx/src/plugins/rehype-node-positions.js +0 -45
  87. package/esm/extensions/ext-content-mdx/src/plugins/remark-headings.d.ts +0 -4
  88. package/esm/extensions/ext-content-mdx/src/plugins/remark-headings.d.ts.map +0 -1
  89. package/esm/extensions/ext-content-mdx/src/plugins/remark-headings.js +0 -69
  90. package/esm/extensions/ext-content-mdx/src/plugins/remark-mdx-utils.d.ts +0 -14
  91. package/esm/extensions/ext-content-mdx/src/plugins/remark-mdx-utils.d.ts.map +0 -1
  92. package/esm/extensions/ext-content-mdx/src/plugins/remark-mdx-utils.js +0 -191
  93. package/esm/extensions/ext-css-tailwind/src/index.d.ts +0 -9
  94. package/esm/extensions/ext-css-tailwind/src/index.d.ts.map +0 -1
  95. package/esm/extensions/ext-css-tailwind/src/index.js +0 -71
  96. package/esm/extensions/ext-db-sqlite/src/index.d.ts +0 -15
  97. package/esm/extensions/ext-db-sqlite/src/index.d.ts.map +0 -1
  98. package/esm/extensions/ext-db-sqlite/src/index.js +0 -38
  99. package/esm/extensions/ext-document-kreuzberg/src/index.d.ts +0 -9
  100. package/esm/extensions/ext-document-kreuzberg/src/index.d.ts.map +0 -1
  101. package/esm/extensions/ext-document-kreuzberg/src/index.js +0 -81
  102. package/esm/extensions/ext-document-kreuzberg/src/kreuzberg.d.ts +0 -3
  103. package/esm/extensions/ext-document-kreuzberg/src/kreuzberg.d.ts.map +0 -1
  104. package/esm/extensions/ext-document-kreuzberg/src/kreuzberg.js +0 -67
  105. package/esm/extensions/ext-document-kreuzberg/src/runtime.d.ts +0 -3
  106. package/esm/extensions/ext-document-kreuzberg/src/runtime.d.ts.map +0 -1
  107. package/esm/extensions/ext-document-kreuzberg/src/runtime.js +0 -26
  108. package/esm/extensions/ext-document-kreuzberg/src/upload-extraction-worker.js +0 -20
  109. package/esm/extensions/ext-observability-opentelemetry/src/index.d.ts +0 -56
  110. package/esm/extensions/ext-observability-opentelemetry/src/index.d.ts.map +0 -1
  111. package/esm/extensions/ext-observability-opentelemetry/src/index.js +0 -338
  112. package/esm/extensions/ext-parser-babel/src/index.d.ts +0 -27
  113. package/esm/extensions/ext-parser-babel/src/index.d.ts.map +0 -1
  114. package/esm/extensions/ext-parser-babel/src/index.js +0 -82
  115. package/esm/extensions/ext-parser-babel/src/inject-node-positions.d.ts +0 -16
  116. package/esm/extensions/ext-parser-babel/src/inject-node-positions.d.ts.map +0 -1
  117. package/esm/extensions/ext-parser-babel/src/inject-node-positions.js +0 -129
  118. package/esm/extensions/ext-sandbox-shell-tools/src/index.d.ts +0 -16
  119. package/esm/extensions/ext-sandbox-shell-tools/src/index.d.ts.map +0 -1
  120. package/esm/extensions/ext-sandbox-shell-tools/src/index.js +0 -29
@@ -1,56 +0,0 @@
1
- import type { ExtensionFactory } from "../../../src/extensions/index.js";
2
- import type { NodeTelemetryInitializeOptions, NodeTelemetryProvider, SpanData, TracingExporter } from "../../../src/extensions/observability/index.js";
3
- /**
4
- * The TracerProvider interface as expected by the core shim.
5
- * Using structural typing because the real SDK provider satisfies this shape.
6
- */
7
- interface ShimTracerProvider {
8
- getTracer(name: string, version?: string): unknown;
9
- }
10
- type MetricsAPI = {
11
- getMeter(name: string | undefined, version?: string): unknown;
12
- };
13
- type TraceAPI = {
14
- getActiveSpan(): unknown;
15
- getSpan(ctx: unknown): unknown;
16
- };
17
- type EnvReader = (name: string) => string | undefined;
18
- export interface ResolvedOtlpExtensionConfig {
19
- serviceName: string;
20
- serviceVersion: string;
21
- headers: Record<string, string>;
22
- tracesEnabled: boolean;
23
- metricsEnabled: boolean;
24
- tracesUrl: string | undefined;
25
- metricsUrl: string | undefined;
26
- metricsExportIntervalMillis: number;
27
- }
28
- export declare function resolveOtlpSignalUrl(endpoint: string | undefined, signal: "traces" | "metrics"): string | undefined;
29
- export declare function resolveOtlpExtensionConfig(read?: EnvReader): ResolvedOtlpExtensionConfig;
30
- declare class OtlpTracingExporter implements TracingExporter {
31
- private sdkProvider;
32
- private meterProvider;
33
- private metricsApi;
34
- private traceApi;
35
- start(_ctxConfig: Record<string, unknown>): Promise<void>;
36
- export(_spans: SpanData[]): Promise<void>;
37
- shutdown(): Promise<void>;
38
- getProvider(): ShimTracerProvider;
39
- getMetricsAPI(): MetricsAPI | null;
40
- getTraceAPI(): TraceAPI | null;
41
- }
42
- declare class OpenTelemetryNodeTelemetryProvider implements NodeTelemetryProvider {
43
- private sdk;
44
- initialize(options: NodeTelemetryInitializeOptions): Promise<boolean>;
45
- shutdown(): Promise<void>;
46
- }
47
- /**
48
- * Default export for the ext-observability-opentelemetry extension factory.
49
- *
50
- * Produces an extension that registers a `TracingExporter` contract
51
- * implementation backed by the OpenTelemetry JS SDK.
52
- */
53
- declare const extOpenTelemetry: ExtensionFactory;
54
- export default extOpenTelemetry;
55
- export { OpenTelemetryNodeTelemetryProvider, OtlpTracingExporter };
56
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-observability-opentelemetry/src/index.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EACV,8BAA8B,EAC9B,qBAAqB,EACrB,QAAQ,EACR,eAAe,EAChB,MAAM,gDAAgD,CAAC;AAExD;;;GAGG;AACH,UAAU,kBAAkB;IAC1B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACpD;AAsBD,KAAK,UAAU,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AACpF,KAAK,QAAQ,GAAG;IAAE,aAAa,IAAI,OAAO,CAAC;IAAC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE,CAAC;AAuG7E,KAAK,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAgCD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,QAAQ,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,GAAE,SAAmB,GACxB,2BAA2B,CAqB7B;AAED,cAAM,mBAAoB,YAAW,eAAe;IAClD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,QAAQ,CAAyB;IAEnC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2EzD,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB/B,WAAW,IAAI,kBAAkB;IAKjC,aAAa,IAAI,UAAU,GAAG,IAAI;IAIlC,WAAW,IAAI,QAAQ,GAAG,IAAI;CAG/B;AAED,cAAM,kCAAmC,YAAW,qBAAqB;IACvE,OAAO,CAAC,GAAG,CAA8C;IAEnD,UAAU,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,OAAO,CAAC;IA6CrE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAQhC;AAED;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB,EAAE,gBAqCvB,CAAC;AAEF,eAAe,gBAAgB,CAAC;AAChC,OAAO,EAAE,kCAAkC,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,338 +0,0 @@
1
- /**
2
- * ext-observability-opentelemetry: OpenTelemetry observability extension backed by the
3
- * official OpenTelemetry JS SDK.
4
- *
5
- * Provides the `TracingExporter` and `NodeTelemetryProvider` contracts:
6
- * - `start(config)`: builds the SDK provider and OTLP HTTP exporter
7
- * - `export(spans)`: no-op, the SDK handles export via BatchSpanProcessor
8
- * - `shutdown()`: flushes and shuts down the provider
9
- * - `getProvider()`: returns the SDK TracerProvider for shim wiring
10
- * - `initialize(options)`: starts NodeSDK auto-instrumentation
11
- *
12
- * Configuration is read from standard OTEL environment variables.
13
- *
14
- * @module extensions/ext-observability-opentelemetry
15
- */
16
- import * as dntShim from "../../../_dnt.shims.js";
17
- const NOOP_SPAN = {
18
- setAttribute() {
19
- return NOOP_SPAN;
20
- },
21
- setAttributes() {
22
- return NOOP_SPAN;
23
- },
24
- setStatus() {
25
- return NOOP_SPAN;
26
- },
27
- recordException() { },
28
- addEvent() {
29
- return NOOP_SPAN;
30
- },
31
- end() { },
32
- spanContext() {
33
- return {
34
- traceId: "00000000000000000000000000000000",
35
- spanId: "0000000000000000",
36
- traceFlags: 0,
37
- };
38
- },
39
- updateName() { },
40
- };
41
- const NOOP_TRACER = {
42
- startSpan() {
43
- return NOOP_SPAN;
44
- },
45
- startActiveSpan(_name, optionsOrFn, contextOrFn, fn) {
46
- const callback = typeof optionsOrFn === "function"
47
- ? optionsOrFn
48
- : typeof contextOrFn === "function"
49
- ? contextOrFn
50
- : fn;
51
- return callback?.(NOOP_SPAN);
52
- },
53
- };
54
- const NOOP_TRACER_PROVIDER = {
55
- getTracer() {
56
- return NOOP_TRACER;
57
- },
58
- };
59
- async function loadOpenTelemetryRuntime() {
60
- try {
61
- const [api, autoInstrumentations, core, contextAsyncHooks, sdkNode, metricsExporter, sdkMetrics, sdkTraceBase, traceExporter, resources, semanticConventions,] = await Promise.all([
62
- import("@opentelemetry/api"),
63
- import("@opentelemetry/auto-instrumentations-node"),
64
- import("@opentelemetry/core"),
65
- import("@opentelemetry/context-async-hooks"),
66
- import("@opentelemetry/sdk-node"),
67
- import("@opentelemetry/exporter-metrics-otlp-http"),
68
- import("@opentelemetry/sdk-metrics"),
69
- import("@opentelemetry/sdk-trace-base"),
70
- import("@opentelemetry/exporter-trace-otlp-http"),
71
- import("@opentelemetry/resources"),
72
- import("@opentelemetry/semantic-conventions"),
73
- ]);
74
- return {
75
- api,
76
- autoInstrumentations,
77
- core,
78
- contextAsyncHooks,
79
- sdkNode,
80
- metricsExporter,
81
- sdkMetrics,
82
- sdkTraceBase,
83
- traceExporter,
84
- resources,
85
- semanticConventions,
86
- };
87
- }
88
- catch (error) {
89
- const detail = error instanceof Error ? error.message : String(error);
90
- throw new Error(`OpenTelemetry observability requires the optional @opentelemetry packages to be installed. ${detail}`);
91
- }
92
- }
93
- function readEnv(name) {
94
- try {
95
- return dntShim.dntGlobalThis.Deno?.env
96
- .get(name);
97
- }
98
- catch {
99
- return undefined;
100
- }
101
- }
102
- function parseHeaders(headerInput) {
103
- if (!headerInput)
104
- return {};
105
- if (typeof headerInput !== "string")
106
- return headerInput;
107
- // "Basic xxx" or "Authorization=Basic xxx"
108
- if (headerInput.startsWith("Basic "))
109
- return { Authorization: headerInput };
110
- if (headerInput.startsWith("Authorization=")) {
111
- return { Authorization: headerInput.slice("Authorization=".length) };
112
- }
113
- const result = {};
114
- for (const part of headerInput.split(",")) {
115
- const [key, ...valueParts] = part.split("=");
116
- if (key && valueParts.length > 0)
117
- result[key.trim()] = valueParts.join("=").trim();
118
- }
119
- return result;
120
- }
121
- export function resolveOtlpSignalUrl(endpoint, signal) {
122
- if (!endpoint)
123
- return undefined;
124
- const trimmed = endpoint.replace(/\/$/, "");
125
- const suffix = `/v1/${signal}`;
126
- return trimmed.endsWith(suffix) ? trimmed : `${trimmed}${suffix}`;
127
- }
128
- export function resolveOtlpExtensionConfig(read = readEnv) {
129
- const endpoint = read("OTEL_EXPORTER_OTLP_ENDPOINT");
130
- const tracesEndpoint = read("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") ?? endpoint;
131
- const metricsEndpoint = read("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT") ?? endpoint;
132
- const metricsExportIntervalMillis = Number.parseInt(read("OTEL_METRIC_EXPORT_INTERVAL") ?? "60000", 10);
133
- return {
134
- serviceName: read("OTEL_SERVICE_NAME") ?? "veryfront",
135
- serviceVersion: "0.1.0",
136
- headers: parseHeaders(read("OTEL_EXPORTER_OTLP_HEADERS")),
137
- tracesEnabled: read("OTEL_TRACES_ENABLED") === "true",
138
- metricsEnabled: read("OTEL_METRICS_ENABLED") === "true",
139
- tracesUrl: resolveOtlpSignalUrl(tracesEndpoint, "traces"),
140
- metricsUrl: resolveOtlpSignalUrl(metricsEndpoint, "metrics"),
141
- metricsExportIntervalMillis: Number.isFinite(metricsExportIntervalMillis)
142
- ? metricsExportIntervalMillis
143
- : 60_000,
144
- };
145
- }
146
- class OtlpTracingExporter {
147
- sdkProvider = null;
148
- meterProvider = null;
149
- metricsApi = null;
150
- traceApi = null;
151
- async start(_ctxConfig) {
152
- const cfg = resolveOtlpExtensionConfig(readEnv);
153
- // Honor OTEL_TRACES_ENABLED: when unset/false, skip exporter wiring so
154
- // deployments opting out never create OTLP traffic or set globals.
155
- if (!cfg.tracesEnabled && !cfg.metricsEnabled)
156
- return;
157
- const otel = await loadOpenTelemetryRuntime();
158
- const resource = otel.resources.resourceFromAttributes({
159
- [otel.semanticConventions.ATTR_SERVICE_NAME]: cfg.serviceName,
160
- [otel.semanticConventions.ATTR_SERVICE_VERSION]: cfg.serviceVersion,
161
- });
162
- if (cfg.tracesEnabled) {
163
- if (!cfg.tracesUrl) {
164
- throw new Error("OTEL_TRACES_ENABLED=true requires OTEL_EXPORTER_OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_TRACES_ENDPOINT");
165
- }
166
- const exporter = new otel.traceExporter.OTLPTraceExporter({
167
- url: cfg.tracesUrl,
168
- headers: cfg.headers,
169
- });
170
- const provider = new otel.sdkTraceBase.BasicTracerProvider({
171
- resource,
172
- spanProcessors: [new otel.sdkTraceBase.BatchSpanProcessor(exporter)],
173
- });
174
- // Wire OTel SDK globals so the real API delegates to this provider.
175
- // The shim also gets wired separately in bootstrap.ts via getProvider().
176
- otel.api.trace.setGlobalTracerProvider(provider);
177
- const contextManager = new otel.contextAsyncHooks.AsyncLocalStorageContextManager();
178
- contextManager.enable();
179
- const propagator = new otel.core.W3CTraceContextPropagator();
180
- otel.api.propagation.setGlobalPropagator(propagator);
181
- otel.api.context.setGlobalContextManager(contextManager);
182
- this.sdkProvider = provider;
183
- this.traceApi = {
184
- getActiveSpan: () => otel.api.trace.getActiveSpan(),
185
- getSpan: (ctx) => otel.api.trace.getSpan(ctx),
186
- };
187
- }
188
- if (cfg.metricsEnabled) {
189
- if (!cfg.metricsUrl) {
190
- throw new Error("OTEL_METRICS_ENABLED=true requires OTEL_EXPORTER_OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_METRICS_ENDPOINT");
191
- }
192
- const metricReader = new otel.sdkMetrics.PeriodicExportingMetricReader({
193
- exporter: new otel.metricsExporter.OTLPMetricExporter({
194
- url: cfg.metricsUrl,
195
- headers: cfg.headers,
196
- }),
197
- exportIntervalMillis: cfg.metricsExportIntervalMillis,
198
- });
199
- this.meterProvider = new otel.sdkMetrics.MeterProvider({
200
- resource,
201
- readers: [metricReader],
202
- });
203
- otel.api.metrics.setGlobalMeterProvider(this.meterProvider);
204
- this.metricsApi = otel.api.metrics;
205
- }
206
- }
207
- // eslint-disable-next-line require-await
208
- async export(_spans) {
209
- // BatchSpanProcessor handles export automatically; this method is a no-op.
210
- // Callers that want to push custom SpanData batches can extend this.
211
- }
212
- async shutdown() {
213
- if (this.meterProvider) {
214
- try {
215
- await this.meterProvider.shutdown();
216
- }
217
- finally {
218
- this.meterProvider = null;
219
- }
220
- }
221
- if (this.sdkProvider) {
222
- try {
223
- await this.sdkProvider.shutdown();
224
- }
225
- finally {
226
- this.sdkProvider = null;
227
- }
228
- }
229
- }
230
- getProvider() {
231
- if (this.sdkProvider)
232
- return this.sdkProvider;
233
- return NOOP_TRACER_PROVIDER;
234
- }
235
- getMetricsAPI() {
236
- return this.metricsApi;
237
- }
238
- getTraceAPI() {
239
- return this.traceApi;
240
- }
241
- }
242
- class OpenTelemetryNodeTelemetryProvider {
243
- sdk = null;
244
- async initialize(options) {
245
- const otel = await loadOpenTelemetryRuntime();
246
- const resource = otel.resources.resourceFromAttributes({
247
- "service.name": options.serviceName,
248
- "service.version": options.serviceVersion,
249
- "deployment.environment": options.deploymentEnvironment,
250
- });
251
- const traceExporter = new otel.traceExporter.OTLPTraceExporter({
252
- headers: options.exporterHeaders,
253
- });
254
- const sdk = new otel.sdkNode.NodeSDK({
255
- resource,
256
- sampler: new otel.sdkTraceBase.ParentBasedSampler({
257
- root: new otel.sdkTraceBase.TraceIdRatioBasedSampler(options.samplingRatio),
258
- }),
259
- spanProcessor: new otel.sdkTraceBase.BatchSpanProcessor(traceExporter, {
260
- maxExportBatchSize: 100,
261
- scheduledDelayMillis: 500,
262
- }),
263
- instrumentations: [
264
- otel.autoInstrumentations.getNodeAutoInstrumentations({
265
- "@opentelemetry/instrumentation-fs": { enabled: options.instrumentation.fs },
266
- "@opentelemetry/instrumentation-http": { enabled: options.instrumentation.http },
267
- "@opentelemetry/instrumentation-express": { enabled: options.instrumentation.express },
268
- }),
269
- ],
270
- });
271
- sdk.start();
272
- this.sdk = sdk;
273
- options.logger?.info("OpenTelemetry initialized", {
274
- serviceName: options.serviceName,
275
- samplingRatio: options.samplingRatio,
276
- });
277
- options.processTarget?.on("SIGTERM", async () => {
278
- await this.shutdown();
279
- options.logger?.info("OpenTelemetry shutdown complete");
280
- });
281
- return true;
282
- }
283
- async shutdown() {
284
- if (!this.sdk)
285
- return;
286
- try {
287
- await this.sdk.shutdown();
288
- }
289
- finally {
290
- this.sdk = null;
291
- }
292
- }
293
- }
294
- /**
295
- * Default export for the ext-observability-opentelemetry extension factory.
296
- *
297
- * Produces an extension that registers a `TracingExporter` contract
298
- * implementation backed by the OpenTelemetry JS SDK.
299
- */
300
- const extOpenTelemetry = () => {
301
- const exporterImpl = new OtlpTracingExporter();
302
- const nodeTelemetryProvider = new OpenTelemetryNodeTelemetryProvider();
303
- return {
304
- name: "ext-observability-opentelemetry",
305
- version: "0.1.0",
306
- contracts: {
307
- provides: ["TracingExporter", "NodeTelemetryProvider"],
308
- },
309
- capabilities: [
310
- { type: "net:outbound", hosts: ["*"] },
311
- {
312
- type: "env:read",
313
- keys: [
314
- "OTEL_EXPORTER_OTLP_ENDPOINT",
315
- "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT",
316
- "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT",
317
- "OTEL_EXPORTER_OTLP_HEADERS",
318
- "OTEL_SERVICE_NAME",
319
- "OTEL_TRACES_ENABLED",
320
- "OTEL_METRICS_ENABLED",
321
- "OTEL_METRIC_EXPORT_INTERVAL",
322
- ],
323
- },
324
- ],
325
- async setup(ctx) {
326
- await exporterImpl.start(ctx.config);
327
- ctx.provide("TracingExporter", exporterImpl);
328
- ctx.provide("NodeTelemetryProvider", nodeTelemetryProvider);
329
- ctx.logger.info("[ext-observability-opentelemetry] TracingExporter registered");
330
- },
331
- async teardown() {
332
- await nodeTelemetryProvider.shutdown();
333
- await exporterImpl.shutdown();
334
- },
335
- };
336
- };
337
- export default extOpenTelemetry;
338
- export { OpenTelemetryNodeTelemetryProvider, OtlpTracingExporter };
@@ -1,27 +0,0 @@
1
- /**
2
- * ext-parser-babel — CodeParser implementation backed by @babel/parser,
3
- * @babel/traverse, @babel/generator, @babel/types.
4
- *
5
- * Provides the `CodeParser` contract:
6
- * - `parse/traverse/generate` — generic AST pipeline for callers that
7
- * want to build custom transforms.
8
- * - `injectJsxNodePositions(source, options)` — the Studio Navigator
9
- * helper that stamps `data-node-*` attributes onto JSX elements.
10
- *
11
- * Core's `src/transforms/plugins/babel-node-positions.ts` is a shim that
12
- * resolves this contract at call time.
13
- *
14
- * @module extensions/ext-parser-babel
15
- */
16
- import type { ExtensionFactory } from "../../../src/extensions/index.js";
17
- import type { ASTNode, CodeParser, GenerateOptions, GenerateResult, InjectJsxNodePositionsOptions, ParseOptions, TraverseVisitor } from "../../../src/extensions/parser/index.js";
18
- declare class BabelCodeParser implements CodeParser {
19
- parse(options: ParseOptions): Promise<ASTNode>;
20
- traverse(ast: ASTNode, visitor: TraverseVisitor): void;
21
- generate(ast: ASTNode, options?: GenerateOptions): Promise<GenerateResult>;
22
- injectJsxNodePositions(source: string, options: InjectJsxNodePositionsOptions): string;
23
- }
24
- declare const extBabel: ExtensionFactory;
25
- export default extBabel;
26
- export { BabelCodeParser };
27
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-parser-babel/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,eAAe,EACf,cAAc,EACd,6BAA6B,EAC7B,YAAY,EACZ,eAAe,EAChB,MAAM,yCAAyC,CAAC;AAiCjD,cAAM,eAAgB,YAAW,UAAU;IACzC,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ9C,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAItD,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAW1E,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,6BAA6B,GAAG,MAAM;CAGvF;AAED,QAAA,MAAM,QAAQ,EAAE,gBAiBf,CAAC;AAEF,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -1,82 +0,0 @@
1
- /**
2
- * ext-parser-babel — CodeParser implementation backed by @babel/parser,
3
- * @babel/traverse, @babel/generator, @babel/types.
4
- *
5
- * Provides the `CodeParser` contract:
6
- * - `parse/traverse/generate` — generic AST pipeline for callers that
7
- * want to build custom transforms.
8
- * - `injectJsxNodePositions(source, options)` — the Studio Navigator
9
- * helper that stamps `data-node-*` attributes onto JSX elements.
10
- *
11
- * Core's `src/transforms/plugins/babel-node-positions.ts` is a shim that
12
- * resolves this contract at call time.
13
- *
14
- * @module extensions/ext-parser-babel
15
- */
16
- import * as parser from "@babel/parser";
17
- import * as traverseModule from "@babel/traverse";
18
- import * as generateModule from "@babel/generator";
19
- import { injectNodePositions } from "./inject-node-positions.js";
20
- function resolveDefaultExport(mod) {
21
- const m = mod;
22
- if (typeof m.default === "function")
23
- return m.default;
24
- const nested = m.default;
25
- if (typeof nested?.default === "function")
26
- return nested.default;
27
- return mod;
28
- }
29
- const traverse = resolveDefaultExport(traverseModule);
30
- const generate = resolveDefaultExport(generateModule);
31
- function pickPlugins(filePath) {
32
- const isTypeScript = filePath?.endsWith(".ts") || filePath?.endsWith(".tsx");
33
- const plugins = ["jsx"];
34
- if (isTypeScript || !filePath)
35
- plugins.push("typescript");
36
- return plugins;
37
- }
38
- class BabelCodeParser {
39
- parse(options) {
40
- const ast = parser.parse(options.code, {
41
- sourceType: "module",
42
- plugins: pickPlugins(options.filePath),
43
- });
44
- return Promise.resolve(ast);
45
- }
46
- traverse(ast, visitor) {
47
- traverse(ast, visitor);
48
- }
49
- generate(ast, options) {
50
- const result = generate(ast, {
51
- sourceMaps: options?.sourceMaps ?? false,
52
- minified: options?.minified ?? false,
53
- });
54
- return Promise.resolve({
55
- code: result.code,
56
- map: typeof result.map === "string" ? result.map : undefined,
57
- });
58
- }
59
- injectJsxNodePositions(source, options) {
60
- return injectNodePositions(source, options);
61
- }
62
- }
63
- const extBabel = () => {
64
- const impl = new BabelCodeParser();
65
- return {
66
- name: "ext-parser-babel",
67
- version: "0.1.0",
68
- contracts: {
69
- provides: ["CodeParser"],
70
- },
71
- capabilities: [],
72
- setup(ctx) {
73
- ctx.provide("CodeParser", impl);
74
- ctx.logger.info("[ext-parser-babel] CodeParser registered");
75
- },
76
- teardown() {
77
- // No resources to release.
78
- },
79
- };
80
- };
81
- export default extBabel;
82
- export { BabelCodeParser };
@@ -1,16 +0,0 @@
1
- /**
2
- * Babel Transform for TSX Source Position Injection
3
- *
4
- * Injects data-node-* attributes into JSX elements for Studio Navigator integration.
5
- * This mirrors the position tracking done by remarkAddNodeId for MDX files.
6
- */
7
- interface TransformOptions {
8
- filePath: string;
9
- }
10
- /**
11
- * Transform TSX source to inject position data attributes into JSX elements.
12
- * This enables Studio Navigator to map rendered elements back to source positions.
13
- */
14
- export declare function injectNodePositions(source: string, options: TransformOptions): string;
15
- export {};
16
- //# sourceMappingURL=inject-node-positions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inject-node-positions.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-parser-babel/src/inject-node-positions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0EH,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA4CD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAsDrF"}
@@ -1,129 +0,0 @@
1
- /**
2
- * Babel Transform for TSX Source Position Injection
3
- *
4
- * Injects data-node-* attributes into JSX elements for Studio Navigator integration.
5
- * This mirrors the position tracking done by remarkAddNodeId for MDX files.
6
- */
7
- import * as parser from "@babel/parser";
8
- import * as traverseModule from "@babel/traverse";
9
- import * as generateModule from "@babel/generator";
10
- import * as t from "@babel/types";
11
- function resolveDefaultExport(mod) {
12
- const m = mod;
13
- if (typeof m.default === "function")
14
- return m.default;
15
- const nested = m.default;
16
- if (typeof nested?.default === "function")
17
- return nested.default;
18
- return mod;
19
- }
20
- const traverse = resolveDefaultExport(traverseModule);
21
- const generate = resolveDefaultExport(generateModule);
22
- const SKIPPED_ELEMENTS = new Set([
23
- "html",
24
- "head",
25
- "title",
26
- "body",
27
- "link",
28
- "base",
29
- "meta",
30
- "script",
31
- "style",
32
- "noscript",
33
- "template",
34
- "svg",
35
- "path",
36
- "circle",
37
- "ellipse",
38
- "line",
39
- "polygon",
40
- "polyline",
41
- "rect",
42
- "g",
43
- "defs",
44
- "linearGradient",
45
- "radialGradient",
46
- "stop",
47
- "text",
48
- "tspan",
49
- "use",
50
- "filter",
51
- ]);
52
- function getElementName(openingElement) {
53
- const { name } = openingElement;
54
- if (t.isJSXIdentifier(name))
55
- return name.name;
56
- if (!t.isJSXMemberExpression(name))
57
- return "DynamicComponent";
58
- const parts = [];
59
- let current = name;
60
- while (t.isJSXMemberExpression(current)) {
61
- if (t.isJSXIdentifier(current.property))
62
- parts.unshift(current.property.name);
63
- current = current.object;
64
- }
65
- if (t.isJSXIdentifier(current))
66
- parts.unshift(current.name);
67
- return parts.length ? parts.join(".") : "MemberExpression";
68
- }
69
- function isFragment(openingElement) {
70
- const { name } = openingElement;
71
- if (t.isJSXMemberExpression(name)) {
72
- return (t.isJSXIdentifier(name.object) &&
73
- name.object.name === "React" &&
74
- t.isJSXIdentifier(name.property) &&
75
- name.property.name === "Fragment");
76
- }
77
- return t.isJSXIdentifier(name) && name.name === "Fragment";
78
- }
79
- function hasPositionAttribute(attributes) {
80
- return attributes.some((attr) => {
81
- if (!t.isJSXAttribute(attr) || !t.isJSXIdentifier(attr.name))
82
- return false;
83
- return attr.name.name === "data-node-line" || attr.name.name === "data-vf-id";
84
- });
85
- }
86
- /**
87
- * Transform TSX source to inject position data attributes into JSX elements.
88
- * This enables Studio Navigator to map rendered elements back to source positions.
89
- */
90
- export function injectNodePositions(source, options) {
91
- if (!source.trim())
92
- return source;
93
- if (!options.filePath)
94
- return source;
95
- try {
96
- const ast = parser.parse(source, {
97
- sourceType: "module",
98
- plugins: ["typescript", "jsx"],
99
- });
100
- let nodeCounter = 0;
101
- traverse(ast, {
102
- JSXElement: {
103
- enter(path) {
104
- const openingElement = path.node.openingElement;
105
- const elementName = getElementName(openingElement);
106
- if (SKIPPED_ELEMENTS.has(elementName.toLowerCase()))
107
- return;
108
- if (isFragment(openingElement))
109
- return;
110
- if (hasPositionAttribute(openingElement.attributes))
111
- return;
112
- const loc = openingElement.loc;
113
- if (!loc)
114
- return;
115
- const nodeId = `node-${nodeCounter++}`;
116
- openingElement.attributes.push(t.jsxAttribute(t.jsxIdentifier("data-node-id"), t.stringLiteral(nodeId)), t.jsxAttribute(t.jsxIdentifier("data-node-file"), t.stringLiteral(options.filePath)), t.jsxAttribute(t.jsxIdentifier("data-node-name"), t.stringLiteral(elementName)), t.jsxAttribute(t.jsxIdentifier("data-node-line"), t.stringLiteral(String(loc.start.line))), t.jsxAttribute(t.jsxIdentifier("data-node-column"), t.stringLiteral(String(loc.start.column))));
117
- },
118
- },
119
- });
120
- return generate(ast, {
121
- retainLines: true,
122
- compact: false,
123
- }).code;
124
- }
125
- catch (_) {
126
- /* expected: source may not be parseable TSX/JSX */
127
- return source;
128
- }
129
- }
@@ -1,16 +0,0 @@
1
- /**
2
- * ext-sandbox-shell-tools, SandboxShellToolsProvider backed by bash-tool.
3
- *
4
- * @module extensions/ext-sandbox-shell-tools
5
- */
6
- import type { ExtensionFactory } from "../../../src/extensions/index.js";
7
- import { type CreateSandboxShellToolsInput, type SandboxShellToolsProvider } from "../../../src/extensions/sandbox/index.js";
8
- type BashToolFactory = (input: CreateSandboxShellToolsInput) => Promise<{
9
- tools: Record<string, unknown>;
10
- }>;
11
- export declare function createSandboxShellToolsProvider(createBashToolImpl: BashToolFactory): SandboxShellToolsProvider;
12
- declare const provider: SandboxShellToolsProvider;
13
- declare const extSandboxShellTools: ExtensionFactory;
14
- export default extSandboxShellTools;
15
- export { provider as createBashSandboxShellToolsProvider };
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/ext-sandbox-shell-tools/src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAE/B,MAAM,0CAA0C,CAAC;AAElD,KAAK,eAAe,GAAG,CACrB,KAAK,EAAE,4BAA4B,KAChC,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;AAEjD,wBAAgB,+BAA+B,CAC7C,kBAAkB,EAAE,eAAe,GAClC,yBAAyB,CAE3B;AAED,QAAA,MAAM,QAAQ,2BAGZ,CAAC;AAEH,QAAA,MAAM,oBAAoB,EAAE,gBAa1B,CAAC;AAEH,eAAe,oBAAoB,CAAC;AACpC,OAAO,EAAE,QAAQ,IAAI,mCAAmC,EAAE,CAAC"}