brass-runtime 1.16.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +287 -23
- package/dist/agent/cli/main.cjs +38 -38
- package/dist/agent/cli/main.js +6 -6
- package/dist/agent/cli/main.mjs +6 -6
- package/dist/agent/index.cjs +7 -7
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.js +6 -6
- package/dist/agent/index.mjs +6 -6
- package/dist/chunk-2HQTDLHF.mjs +683 -0
- package/dist/chunk-36I3M4UC.mjs +370 -0
- package/dist/{chunk-QY5FKYEQ.js → chunk-3AYM6WPJ.js} +570 -51
- package/dist/chunk-3LOYJFRR.cjs +300 -0
- package/dist/chunk-3Y2RIUMM.js +300 -0
- package/dist/{chunk-7XOPAB5Q.js → chunk-4P2HHGAX.mjs} +83 -5
- package/dist/{chunk-N6VHMOWB.cjs → chunk-4ROBZFL6.cjs} +128 -128
- package/dist/{chunk-NC5SDRYE.js → chunk-52OB2ROS.js} +4 -4
- package/dist/{chunk-JX3LZQJH.cjs → chunk-52PPNNI4.cjs} +82 -20
- package/dist/{chunk-5YOQOXEQ.cjs → chunk-5EC274J5.cjs} +676 -293
- package/dist/chunk-5QC7LRZ3.js +229 -0
- package/dist/{chunk-7TL2LHQJ.js → chunk-5VRJNBLZ.mjs} +524 -141
- package/dist/chunk-62AZW6UT.cjs +313 -0
- package/dist/chunk-6IXXWIUM.js +683 -0
- package/dist/chunk-6RY2FFN4.mjs +2024 -0
- package/dist/chunk-74ZTY6CP.js +2871 -0
- package/dist/chunk-7CMJS3QE.mjs +2871 -0
- package/dist/{chunk-2WC63LJK.mjs → chunk-7JIJOVCT.js} +20 -10
- package/dist/chunk-7X3K5RMS.js +2024 -0
- package/dist/chunk-7ZPEZ57L.cjs +2024 -0
- package/dist/{chunk-FM4W4QPL.js → chunk-A2OM6NEH.mjs} +5 -4
- package/dist/chunk-AGR5B2BC.cjs +683 -0
- package/dist/chunk-B33ICAKP.js +313 -0
- package/dist/{chunk-J3H54ZRV.mjs → chunk-B5JD23U7.mjs} +1 -1
- package/dist/{chunk-F5EUMJL7.mjs → chunk-BKK77SBA.js} +83 -5
- package/dist/{chunk-U5KWK3PX.mjs → chunk-C3MDXTRZ.js} +11 -0
- package/dist/{chunk-SPUEME2B.cjs → chunk-CZIVE6NT.cjs} +12 -1
- package/dist/{chunk-TDVMADDN.js → chunk-DNFJLJMW.mjs} +11 -0
- package/dist/{chunk-XDZOO4L5.js → chunk-EJ6BPYVR.mjs} +79 -17
- package/dist/chunk-EOC4UHBS.mjs +229 -0
- package/dist/chunk-F6XWZQY4.cjs +777 -0
- package/dist/{chunk-7LVI2GIN.js → chunk-FH2X7BVP.js} +507 -72
- package/dist/{chunk-OOGJ73B6.js → chunk-FHQGHPMO.mjs} +20 -10
- package/dist/{chunk-WQ5QNU5R.cjs → chunk-GLE2WY7Z.cjs} +652 -217
- package/dist/{chunk-G6IQOE4P.mjs → chunk-GYM3LLGS.mjs} +507 -72
- package/dist/{chunk-TVN5I4U6.cjs → chunk-JF5WGYJJ.cjs} +25 -24
- package/dist/{chunk-CY33PGEX.mjs → chunk-KH4SYAOS.mjs} +570 -51
- package/dist/chunk-KN32XNTH.mjs +313 -0
- package/dist/chunk-KQLYONSE.cjs +2871 -0
- package/dist/{chunk-7HUOJA4W.cjs → chunk-KZJQ723N.cjs} +90 -80
- package/dist/{chunk-CCKHV5BT.mjs → chunk-L2SYFEBS.js} +5 -4
- package/dist/{chunk-IJT6RRQ5.cjs → chunk-L6VB5N7Q.cjs} +20 -9
- package/dist/{chunk-ZGLD4TVZ.mjs → chunk-MBEJI5HF.mjs} +4 -4
- package/dist/{chunk-PRWCB3QL.mjs → chunk-MIIYDLGM.js} +524 -141
- package/dist/{chunk-H55LI6WY.js → chunk-MOO4L7F4.mjs} +15 -4
- package/dist/chunk-MVGUEJ5Z.cjs +370 -0
- package/dist/chunk-PD4EJTQC.cjs +229 -0
- package/dist/chunk-PWC3RBQE.mjs +300 -0
- package/dist/{chunk-MWXMNYJS.cjs → chunk-Q2I37RP3.cjs} +643 -124
- package/dist/{chunk-VFIUZG7J.mjs → chunk-RKGKFN2A.js} +79 -17
- package/dist/{chunk-NYL4D7SK.cjs → chunk-SA6HUJVI.cjs} +5 -5
- package/dist/chunk-SK7UZRNI.mjs +777 -0
- package/dist/{chunk-K2T3DV26.mjs → chunk-TRM4JUZQ.js} +15 -4
- package/dist/chunk-UB4B6OFY.js +370 -0
- package/dist/{chunk-G3XGCZDQ.js → chunk-UCUBNWM2.js} +1 -1
- package/dist/chunk-VWIPB6I5.js +777 -0
- package/dist/{chunk-JNFRRJYH.cjs → chunk-WBGRHGBP.cjs} +270 -192
- package/dist/{client-CtFmoDvM.d.ts → client-CZHU674n.d.ts} +211 -36
- package/dist/core/index.cjs +135 -9
- package/dist/core/index.d.ts +238 -33
- package/dist/core/index.js +155 -29
- package/dist/core/index.mjs +155 -29
- package/dist/{effect-CGNl5Rqp.d.ts → effect-DIUHZ9IN.d.ts} +89 -1
- package/dist/effectRunner-CFLC32IK.cjs +8 -0
- package/dist/{effectRunner-A4CHJXJI.js → effectRunner-L4S7IPT3.js} +2 -2
- package/dist/{effectRunner-OPUF6QRN.mjs → effectRunner-NNGG75QA.mjs} +2 -2
- package/dist/http/index.cjs +324 -2986
- package/dist/http/index.d.ts +54 -68
- package/dist/http/index.js +238 -2900
- package/dist/http/index.mjs +238 -2900
- package/dist/http/testing.cjs +14 -12
- package/dist/http/testing.d.ts +5 -4
- package/dist/http/testing.js +10 -8
- package/dist/http/testing.mjs +10 -8
- package/dist/index.cjs +423 -255
- package/dist/index.d.ts +87 -69
- package/dist/index.js +301 -133
- package/dist/index.mjs +301 -133
- package/dist/observability/index.cjs +18 -531
- package/dist/observability/index.d.ts +81 -8
- package/dist/observability/index.js +25 -538
- package/dist/observability/index.mjs +25 -538
- package/dist/perf/cli.cjs +401 -0
- package/dist/perf/cli.d.ts +1 -0
- package/dist/perf/cli.js +401 -0
- package/dist/perf/cli.mjs +401 -0
- package/dist/perf/index.cjs +141 -0
- package/dist/perf/index.d.ts +483 -0
- package/dist/perf/index.js +141 -0
- package/dist/perf/index.mjs +141 -0
- package/dist/schedule-CK3Ml_7p.d.ts +259 -0
- package/dist/schema/index.cjs +6 -2
- package/dist/schema/index.d.ts +3 -1
- package/dist/schema/index.js +5 -1
- package/dist/schema/index.mjs +5 -1
- package/dist/{server-C8hDXA74.d.ts → server-D6JZ15_e.d.ts} +16 -4
- package/dist/{stream-dvSs0QS5.d.ts → stream-B4oK9JFP.d.ts} +1 -1
- package/dist/{tracer-B5tRH9H7.d.ts → tracer-Hwt1cl7h.d.ts} +13 -54
- package/dist/{tracing-Dt9S_6V8.d.ts → tracing-DqbTKGcf.d.ts} +1 -1
- package/docs/ARCHITECTURE.md +292 -0
- package/docs/README.md +65 -0
- package/docs/adr/0001-ai-context-pack.md +32 -0
- package/docs/agent-apply-mode.md +104 -0
- package/docs/agent-approvals.md +110 -0
- package/docs/agent-batch.md +185 -0
- package/docs/agent-boundaries.md +112 -0
- package/docs/agent-chat-sessions.md +160 -0
- package/docs/agent-ci.md +17 -0
- package/docs/agent-cli.md +405 -0
- package/docs/agent-config.md +480 -0
- package/docs/agent-context-discovery.md +159 -0
- package/docs/agent-copilot-like-dx.md +126 -0
- package/docs/agent-declarative-optimized-planning.md +138 -0
- package/docs/agent-dx.md +224 -0
- package/docs/agent-env-files.md +126 -0
- package/docs/agent-follow-up-context.md +43 -0
- package/docs/agent-global-usage.md +180 -0
- package/docs/agent-init.md +109 -0
- package/docs/agent-install-and-configure.md +516 -0
- package/docs/agent-language-workspace-ux.md +99 -0
- package/docs/agent-llm-adapters.md +123 -0
- package/docs/agent-local-install.md +190 -0
- package/docs/agent-local-tests.md +51 -0
- package/docs/agent-observability.md +155 -0
- package/docs/agent-patch-quality-loop.md +162 -0
- package/docs/agent-presets.md +22 -0
- package/docs/agent-project-commands.md +237 -0
- package/docs/agent-project-intelligence.md +156 -0
- package/docs/agent-redaction.md +18 -0
- package/docs/agent-release-readiness.md +76 -0
- package/docs/agent-rollback-safety.md +162 -0
- package/docs/agent-rollback.md +23 -0
- package/docs/agent-run-artifacts.md +16 -0
- package/docs/agent-vscode-auto-discovery.md +137 -0
- package/docs/agent-vscode-batch-runner.md +100 -0
- package/docs/agent-vscode-chat-layout.md +90 -0
- package/docs/agent-vscode-clean-install.md +147 -0
- package/docs/agent-vscode-code-actions.md +70 -0
- package/docs/agent-vscode-diff-preview.md +45 -0
- package/docs/agent-vscode-inline-assist.md +56 -0
- package/docs/agent-vscode-install.md +186 -0
- package/docs/agent-vscode-model-setup.md +97 -0
- package/docs/agent-vscode-patch-preview.md +92 -0
- package/docs/agent-vscode-problems.md +79 -0
- package/docs/agent-vscode-project-dashboard.md +106 -0
- package/docs/agent-vscode-run-history.md +92 -0
- package/docs/agent-vscode-ux.md +73 -0
- package/docs/ai/INVARIANTS.md +84 -0
- package/docs/ai/PROJECT_MAP.md +338 -0
- package/docs/ai/PUBLIC_API.md +339 -0
- package/docs/ai/VALIDATION_MATRIX.md +67 -0
- package/docs/api-polish.md +37 -0
- package/docs/cancellation.md +162 -0
- package/docs/coverage.md +46 -0
- package/docs/framework-integrations.md +38 -0
- package/docs/frameworks/angular.md +153 -0
- package/docs/frameworks/express.md +125 -0
- package/docs/frameworks/fastify.md +124 -0
- package/docs/frameworks/nestjs.md +282 -0
- package/docs/frameworks/nextjs.md +147 -0
- package/docs/frameworks/react.md +139 -0
- package/docs/frameworks/vanilla.md +224 -0
- package/docs/getting-started.md +159 -0
- package/docs/guides/README.md +40 -0
- package/docs/guides/circuit-breaker.md +89 -0
- package/docs/guides/error-handling.md +91 -0
- package/docs/guides/getting-started.md +107 -0
- package/docs/guides/layers.md +189 -0
- package/docs/guides/metrics.md +101 -0
- package/docs/guides/resource-management.md +141 -0
- package/docs/guides/retry.md +215 -0
- package/docs/guides/semaphore.md +66 -0
- package/docs/guides/streams.md +117 -0
- package/docs/guides/supervisors.md +98 -0
- package/docs/guides/testing.md +162 -0
- package/docs/guides/tracing.md +71 -0
- package/docs/http-recipes.md +399 -0
- package/docs/http.md +749 -0
- package/docs/modules.md +285 -0
- package/docs/nestjs.md +6 -0
- package/docs/observability-collector-smoke.md +31 -0
- package/docs/observability-framework-examples.md +110 -0
- package/docs/observability.md +649 -0
- package/docs/otel-collector-smoke.yaml +27 -0
- package/docs/performance-profiler.md +199 -0
- package/docs/production-readiness.md +73 -0
- package/docs/recipes/README.md +12 -0
- package/docs/recipes/http-server.md +45 -0
- package/docs/recipes/layers.md +44 -0
- package/docs/recipes/performance.md +47 -0
- package/docs/recipes/runtime.md +41 -0
- package/docs/recipes/testing.md +41 -0
- package/docs/release.md +53 -0
- package/docs/wasm-bounded-queues.md +44 -0
- package/docs/wasm-engine-observability-benchmarks.md +85 -0
- package/docs/wasm-fiber-engine.md +117 -0
- package/docs/wasm-scheduler-state-machine.md +122 -0
- package/docs/wasm-stream-chunks.md +54 -0
- package/package.json +22 -2
- package/dist/chunk-45F7OKGT.cjs +0 -104
- package/dist/chunk-7V4KY4RL.mjs +0 -104
- package/dist/chunk-DJQ7OMMB.cjs +0 -144
- package/dist/chunk-GOV47PPB.mjs +0 -552
- package/dist/chunk-JF4XXPZ5.cjs +0 -552
- package/dist/chunk-KCPT2D6G.js +0 -552
- package/dist/chunk-NOYZIMUJ.mjs +0 -144
- package/dist/chunk-PNVFW245.js +0 -144
- package/dist/chunk-ROJC3NBJ.js +0 -104
- package/dist/effectRunner-3ZHAD3LE.cjs +0 -8
- package/dist/schedule-Fque9Abz.d.ts +0 -70
|
@@ -2,25 +2,25 @@ import {
|
|
|
2
2
|
EventBus,
|
|
3
3
|
InMemoryTracer,
|
|
4
4
|
makeMetrics
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-EJ6BPYVR.mjs";
|
|
6
6
|
import {
|
|
7
7
|
Runtime,
|
|
8
8
|
ctxExtend,
|
|
9
9
|
ctxToObject,
|
|
10
10
|
emptyContext,
|
|
11
11
|
getCurrentFiber
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GYM3LLGS.mjs";
|
|
13
13
|
import {
|
|
14
14
|
asyncFail,
|
|
15
15
|
asyncFlatMap,
|
|
16
16
|
asyncFold,
|
|
17
17
|
asyncSucceed,
|
|
18
18
|
asyncSync
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-36I3M4UC.mjs";
|
|
20
20
|
import {
|
|
21
21
|
Schema,
|
|
22
22
|
parseConfig
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-DNFJLJMW.mjs";
|
|
24
24
|
|
|
25
25
|
// src/observability/health.ts
|
|
26
26
|
function snapshotRuntimeHealth(options = {}) {
|
|
@@ -1462,6 +1462,7 @@ var object = Schema.custom(
|
|
|
1462
1462
|
);
|
|
1463
1463
|
var falseOrObject = Schema.union([Schema.literal(false), object]);
|
|
1464
1464
|
var ratio = Schema.number({ min: 0, max: 1 });
|
|
1465
|
+
var logLevel = Schema.enum(["debug", "info", "warn", "error"]);
|
|
1465
1466
|
var retryOptions = Schema.object({
|
|
1466
1467
|
attempts: Schema.number({ min: 0, int: true }).optional(),
|
|
1467
1468
|
initialDelayMs: Schema.number({ min: 0, int: true }).optional(),
|
|
@@ -1523,11 +1524,78 @@ var observabilityOptions = Schema.object({
|
|
|
1523
1524
|
childName: fn.optional(),
|
|
1524
1525
|
onFlushError: fn.optional()
|
|
1525
1526
|
}, { unknownKeys: "passthrough" });
|
|
1527
|
+
var httpObservabilityOptions = Schema.object({
|
|
1528
|
+
metrics: falseOrObject.optional(),
|
|
1529
|
+
logs: Schema.union([
|
|
1530
|
+
Schema.literal(false),
|
|
1531
|
+
Schema.object({
|
|
1532
|
+
requestLevel: Schema.union([logLevel, Schema.literal(false)]).optional(),
|
|
1533
|
+
responseLevel: Schema.union([logLevel, Schema.literal(false)]).optional(),
|
|
1534
|
+
errorLevel: Schema.union([logLevel, Schema.literal(false)]).optional()
|
|
1535
|
+
}, { unknownKeys: "passthrough" })
|
|
1536
|
+
]).optional(),
|
|
1537
|
+
spans: Schema.union([
|
|
1538
|
+
Schema.literal(false),
|
|
1539
|
+
Schema.object({
|
|
1540
|
+
name: Schema.union([Schema.string({ minLength: 1 }), fn]).optional(),
|
|
1541
|
+
attributes: Schema.union([object, fn]).optional()
|
|
1542
|
+
}, { unknownKeys: "passthrough" })
|
|
1543
|
+
]).optional(),
|
|
1544
|
+
adaptiveLimiter: Schema.union([
|
|
1545
|
+
Schema.boolean(),
|
|
1546
|
+
Schema.object({
|
|
1547
|
+
enabled: Schema.boolean().optional(),
|
|
1548
|
+
includeKeyLabel: Schema.boolean().optional()
|
|
1549
|
+
}, { unknownKeys: "passthrough" })
|
|
1550
|
+
]).optional(),
|
|
1551
|
+
policy: Schema.union([
|
|
1552
|
+
Schema.boolean(),
|
|
1553
|
+
Schema.object({
|
|
1554
|
+
enabled: Schema.boolean().optional(),
|
|
1555
|
+
labelKeys: Schema.array(Schema.enum(["preset", "lane", "poolKey", "dedupKey", "priority", "retry"])).optional()
|
|
1556
|
+
}, { unknownKeys: "passthrough" })
|
|
1557
|
+
]).optional(),
|
|
1558
|
+
injectTraceHeaders: Schema.boolean().optional(),
|
|
1559
|
+
includeHostLabel: Schema.boolean().optional(),
|
|
1560
|
+
route: Schema.union([Schema.string({ minLength: 1 }), fn]).optional(),
|
|
1561
|
+
clock: fn.optional(),
|
|
1562
|
+
durationBuckets: Schema.array(Schema.number({ min: 0 }).refine((n) => n > 0, "duration bucket must be > 0")).optional()
|
|
1563
|
+
}, { unknownKeys: "passthrough" });
|
|
1526
1564
|
function validateObservabilityOptions(options) {
|
|
1527
1565
|
parseConfig("ObservabilityOptions", observabilityOptions, options);
|
|
1528
1566
|
}
|
|
1567
|
+
function validateHttpObservabilityOptions(options) {
|
|
1568
|
+
parseConfig("HttpObservabilityOptions", httpObservabilityOptions, options);
|
|
1569
|
+
}
|
|
1529
1570
|
|
|
1530
1571
|
// src/observability/setup.ts
|
|
1572
|
+
var DEFAULT_OTLP_SIGNALS = ["metrics", "traces", "logs"];
|
|
1573
|
+
function makeOtlpOptions(input) {
|
|
1574
|
+
const endpoint = normalizeOtlpEndpoint(input.endpoint);
|
|
1575
|
+
const signals = input.signals ?? DEFAULT_OTLP_SIGNALS;
|
|
1576
|
+
return {
|
|
1577
|
+
...signals.includes("metrics") ? { metricsUrl: `${endpoint}/v1/metrics` } : {},
|
|
1578
|
+
...signals.includes("traces") ? { tracesUrl: `${endpoint}/v1/traces` } : {},
|
|
1579
|
+
...signals.includes("logs") ? { logsUrl: `${endpoint}/v1/logs` } : {},
|
|
1580
|
+
...input.headers ? { headers: input.headers } : {},
|
|
1581
|
+
...input.fetch ? { fetch: input.fetch } : {},
|
|
1582
|
+
...input.timeoutMs !== void 0 ? { timeoutMs: input.timeoutMs } : {},
|
|
1583
|
+
...input.retry ? { retry: input.retry } : {},
|
|
1584
|
+
...input.pipeline ? { pipeline: input.pipeline } : {}
|
|
1585
|
+
};
|
|
1586
|
+
}
|
|
1587
|
+
function normalizeOtlpEndpoint(endpoint) {
|
|
1588
|
+
const trimmed = endpoint.trim();
|
|
1589
|
+
let end = trimmed.length;
|
|
1590
|
+
while (end > 0 && trimmed.charCodeAt(end - 1) === 47) {
|
|
1591
|
+
end -= 1;
|
|
1592
|
+
}
|
|
1593
|
+
const normalized = trimmed.slice(0, end);
|
|
1594
|
+
if (!normalized) {
|
|
1595
|
+
throw new Error("makeOtlpOptions endpoint must not be empty");
|
|
1596
|
+
}
|
|
1597
|
+
return normalized;
|
|
1598
|
+
}
|
|
1531
1599
|
function makeObservability(options = {}) {
|
|
1532
1600
|
validateObservabilityOptions(options);
|
|
1533
1601
|
const serviceName = options.serviceName ?? "brass-runtime";
|
|
@@ -1861,12 +1929,13 @@ function makeRuntimeTraceIdGenerator() {
|
|
|
1861
1929
|
newSpanId: () => randomHexId(16)
|
|
1862
1930
|
};
|
|
1863
1931
|
}
|
|
1932
|
+
var HEX_BYTE = Array.from({ length: 256 }, (_, byte) => byte.toString(16).padStart(2, "0"));
|
|
1864
1933
|
function randomHexId(length) {
|
|
1865
1934
|
const cryptoLike = globalThis.crypto;
|
|
1866
1935
|
if (typeof cryptoLike?.getRandomValues === "function") {
|
|
1867
1936
|
const bytes = new Uint8Array(Math.ceil(length / 2));
|
|
1868
1937
|
cryptoLike.getRandomValues(bytes);
|
|
1869
|
-
return
|
|
1938
|
+
return bytesToHex(bytes, length);
|
|
1870
1939
|
}
|
|
1871
1940
|
if (typeof cryptoLike?.randomUUID === "function") {
|
|
1872
1941
|
const hex = cryptoLike.randomUUID().replace(/-/g, "");
|
|
@@ -1878,6 +1947,13 @@ function randomHexId(length) {
|
|
|
1878
1947
|
}
|
|
1879
1948
|
return out.slice(0, length);
|
|
1880
1949
|
}
|
|
1950
|
+
function bytesToHex(bytes, length) {
|
|
1951
|
+
let out = "";
|
|
1952
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
1953
|
+
out += HEX_BYTE[bytes[i]];
|
|
1954
|
+
}
|
|
1955
|
+
return out.length === length ? out : out.slice(0, length);
|
|
1956
|
+
}
|
|
1881
1957
|
|
|
1882
1958
|
// src/observability/request.ts
|
|
1883
1959
|
function makeRequestObservabilityContext(observability, input = {}) {
|
|
@@ -2134,6 +2210,8 @@ export {
|
|
|
2134
2210
|
makeCardinalityLimitedMetrics,
|
|
2135
2211
|
normalizeHttpRoute,
|
|
2136
2212
|
sanitizeHttpTarget,
|
|
2213
|
+
validateHttpObservabilityOptions,
|
|
2214
|
+
makeOtlpOptions,
|
|
2137
2215
|
makeObservability,
|
|
2138
2216
|
resolveRequestTraceSeed,
|
|
2139
2217
|
resolveRequestBaggage,
|