lorenz 0.1.5 → 0.1.7
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 +83 -20
- package/RELEASE-MANIFEST.json +6 -1
- package/node_modules/@lorenz/agent-sdk/dist/index.d.ts +1 -0
- package/node_modules/@lorenz/agent-sdk/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/agent-sdk/dist/index.js +1 -0
- package/node_modules/@lorenz/agent-sdk/dist/index.js.map +1 -1
- package/node_modules/@lorenz/agent-sdk/dist/module.d.ts +38 -0
- package/node_modules/@lorenz/agent-sdk/dist/module.d.ts.map +1 -0
- package/node_modules/@lorenz/agent-sdk/dist/module.js +41 -0
- package/node_modules/@lorenz/agent-sdk/dist/module.js.map +1 -0
- package/node_modules/@lorenz/cli/dist/agentExecutorLoader.d.ts +30 -0
- package/node_modules/@lorenz/cli/dist/agentExecutorLoader.d.ts.map +1 -0
- package/node_modules/@lorenz/cli/dist/agentExecutorLoader.js +63 -0
- package/node_modules/@lorenz/cli/dist/agentExecutorLoader.js.map +1 -0
- package/node_modules/@lorenz/cli/dist/daemon.d.ts +42 -19
- package/node_modules/@lorenz/cli/dist/daemon.d.ts.map +1 -1
- package/node_modules/@lorenz/cli/dist/daemon.js +74 -28
- package/node_modules/@lorenz/cli/dist/daemon.js.map +1 -1
- package/node_modules/@lorenz/cli/dist/daemonLock.d.ts +59 -0
- package/node_modules/@lorenz/cli/dist/daemonLock.d.ts.map +1 -0
- package/node_modules/@lorenz/cli/dist/daemonLock.js +304 -0
- package/node_modules/@lorenz/cli/dist/daemonLock.js.map +1 -0
- package/node_modules/@lorenz/cli/dist/daemonStatus.d.ts +16 -0
- package/node_modules/@lorenz/cli/dist/daemonStatus.d.ts.map +1 -0
- package/node_modules/@lorenz/cli/dist/daemonStatus.js +21 -0
- package/node_modules/@lorenz/cli/dist/daemonStatus.js.map +1 -0
- package/node_modules/@lorenz/cli/dist/doctor.d.ts +6 -0
- package/node_modules/@lorenz/cli/dist/doctor.d.ts.map +1 -1
- package/node_modules/@lorenz/cli/dist/doctor.js +38 -1
- package/node_modules/@lorenz/cli/dist/doctor.js.map +1 -1
- package/node_modules/@lorenz/cli/dist/extensionLoader.d.ts +126 -0
- package/node_modules/@lorenz/cli/dist/extensionLoader.d.ts.map +1 -0
- package/node_modules/@lorenz/cli/dist/extensionLoader.js +187 -0
- package/node_modules/@lorenz/cli/dist/extensionLoader.js.map +1 -0
- package/node_modules/@lorenz/cli/dist/flags-manifest.d.ts +42 -0
- package/node_modules/@lorenz/cli/dist/flags-manifest.d.ts.map +1 -0
- package/node_modules/@lorenz/cli/dist/flags-manifest.js +67 -0
- package/node_modules/@lorenz/cli/dist/flags-manifest.js.map +1 -0
- package/node_modules/@lorenz/cli/dist/index.d.ts +6 -0
- package/node_modules/@lorenz/cli/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/cli/dist/index.js +4 -0
- package/node_modules/@lorenz/cli/dist/index.js.map +1 -1
- package/node_modules/@lorenz/cli/dist/leadershipStore.d.ts +42 -0
- package/node_modules/@lorenz/cli/dist/leadershipStore.d.ts.map +1 -0
- package/node_modules/@lorenz/cli/dist/leadershipStore.js +2 -0
- package/node_modules/@lorenz/cli/dist/leadershipStore.js.map +1 -0
- package/node_modules/@lorenz/cli/dist/main.d.ts +11 -7
- package/node_modules/@lorenz/cli/dist/main.d.ts.map +1 -1
- package/node_modules/@lorenz/cli/dist/main.js +58 -8
- package/node_modules/@lorenz/cli/dist/main.js.map +1 -1
- package/node_modules/@lorenz/cli/dist/toolLoader.d.ts +28 -0
- package/node_modules/@lorenz/cli/dist/toolLoader.d.ts.map +1 -0
- package/node_modules/@lorenz/cli/dist/toolLoader.js +62 -0
- package/node_modules/@lorenz/cli/dist/toolLoader.js.map +1 -0
- package/node_modules/@lorenz/cli/dist/trackerLoader.d.ts +24 -0
- package/node_modules/@lorenz/cli/dist/trackerLoader.d.ts.map +1 -0
- package/node_modules/@lorenz/cli/dist/trackerLoader.js +34 -0
- package/node_modules/@lorenz/cli/dist/trackerLoader.js.map +1 -0
- package/node_modules/@lorenz/cli/dist/workerDriverLoader.d.ts +15 -55
- package/node_modules/@lorenz/cli/dist/workerDriverLoader.d.ts.map +1 -1
- package/node_modules/@lorenz/cli/dist/workerDriverLoader.js +26 -203
- package/node_modules/@lorenz/cli/dist/workerDriverLoader.js.map +1 -1
- package/node_modules/@lorenz/cli/package.json +1 -0
- package/node_modules/@lorenz/config/dist/index.d.ts +1 -1
- package/node_modules/@lorenz/config/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/config/dist/index.js +1 -1
- package/node_modules/@lorenz/config/dist/index.js.map +1 -1
- package/node_modules/@lorenz/config/dist/parse.d.ts +17 -0
- package/node_modules/@lorenz/config/dist/parse.d.ts.map +1 -1
- package/node_modules/@lorenz/config/dist/parse.js +107 -11
- package/node_modules/@lorenz/config/dist/parse.js.map +1 -1
- package/node_modules/@lorenz/config/dist/schemas.d.ts +0 -2
- package/node_modules/@lorenz/config/dist/schemas.d.ts.map +1 -1
- package/node_modules/@lorenz/config/dist/schemas.js +5 -1
- package/node_modules/@lorenz/config/dist/schemas.js.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/coordinator.d.ts +55 -21
- package/node_modules/@lorenz/dispatch-coordinator/dist/coordinator.d.ts.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/coordinator.js +187 -82
- package/node_modules/@lorenz/dispatch-coordinator/dist/coordinator.js.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/gate.d.ts +6 -4
- package/node_modules/@lorenz/dispatch-coordinator/dist/gate.d.ts.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/gate.js +9 -6
- package/node_modules/@lorenz/dispatch-coordinator/dist/gate.js.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/index.d.ts +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/index.js +5 -6
- package/node_modules/@lorenz/dispatch-coordinator/dist/index.js.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/mcpEndpointManager.d.ts +7 -5
- package/node_modules/@lorenz/dispatch-coordinator/dist/mcpEndpointManager.d.ts.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/mcpEndpointManager.js +12 -10
- package/node_modules/@lorenz/dispatch-coordinator/dist/mcpEndpointManager.js.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/nullEndpointManager.d.ts +11 -10
- package/node_modules/@lorenz/dispatch-coordinator/dist/nullEndpointManager.d.ts.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/nullEndpointManager.js +15 -22
- package/node_modules/@lorenz/dispatch-coordinator/dist/nullEndpointManager.js.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/types.d.ts +16 -15
- package/node_modules/@lorenz/dispatch-coordinator/dist/types.d.ts.map +1 -1
- package/node_modules/@lorenz/dispatch-coordinator/dist/types.js +6 -7
- package/node_modules/@lorenz/dispatch-coordinator/dist/types.js.map +1 -1
- package/node_modules/@lorenz/domain/dist/index.d.ts +75 -9
- package/node_modules/@lorenz/domain/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/domain/dist/index.js +40 -0
- package/node_modules/@lorenz/domain/dist/index.js.map +1 -1
- package/node_modules/@lorenz/flags/dist/coerce.d.ts +12 -0
- package/node_modules/@lorenz/flags/dist/coerce.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/coerce.js +44 -0
- package/node_modules/@lorenz/flags/dist/coerce.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/default.d.ts +6 -0
- package/node_modules/@lorenz/flags/dist/default.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/default.js +22 -0
- package/node_modules/@lorenz/flags/dist/default.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/deprecations.d.ts +20 -0
- package/node_modules/@lorenz/flags/dist/deprecations.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/deprecations.js +42 -0
- package/node_modules/@lorenz/flags/dist/deprecations.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/env.d.ts +17 -0
- package/node_modules/@lorenz/flags/dist/env.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/env.js +90 -0
- package/node_modules/@lorenz/flags/dist/env.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/errors.d.ts +22 -0
- package/node_modules/@lorenz/flags/dist/errors.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/errors.js +61 -0
- package/node_modules/@lorenz/flags/dist/errors.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/index.d.ts +8 -0
- package/node_modules/@lorenz/flags/dist/index.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/index.js +11 -0
- package/node_modules/@lorenz/flags/dist/index.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/keys.d.ts +6 -0
- package/node_modules/@lorenz/flags/dist/keys.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/keys.js +15 -0
- package/node_modules/@lorenz/flags/dist/keys.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/layers.d.ts +14 -0
- package/node_modules/@lorenz/flags/dist/layers.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/layers.js +107 -0
- package/node_modules/@lorenz/flags/dist/layers.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/manifest.d.ts +71 -0
- package/node_modules/@lorenz/flags/dist/manifest.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/manifest.js +137 -0
- package/node_modules/@lorenz/flags/dist/manifest.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/resolve.d.ts +8 -0
- package/node_modules/@lorenz/flags/dist/resolve.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/resolve.js +178 -0
- package/node_modules/@lorenz/flags/dist/resolve.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/testing.d.ts +19 -0
- package/node_modules/@lorenz/flags/dist/testing.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/testing.js +68 -0
- package/node_modules/@lorenz/flags/dist/testing.js.map +1 -0
- package/node_modules/@lorenz/flags/dist/types.d.ts +93 -0
- package/node_modules/@lorenz/flags/dist/types.d.ts.map +1 -0
- package/node_modules/@lorenz/flags/dist/types.js +2 -0
- package/node_modules/@lorenz/flags/dist/types.js.map +1 -0
- package/node_modules/@lorenz/flags/package.json +16 -0
- package/node_modules/@lorenz/jira-tracker/dist/index.d.ts +1 -0
- package/node_modules/@lorenz/jira-tracker/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/jira-tracker/dist/index.js +1 -0
- package/node_modules/@lorenz/jira-tracker/dist/index.js.map +1 -1
- package/node_modules/@lorenz/jira-tracker/dist/provider.d.ts.map +1 -1
- package/node_modules/@lorenz/jira-tracker/dist/provider.js +3 -36
- package/node_modules/@lorenz/jira-tracker/dist/provider.js.map +1 -1
- package/node_modules/@lorenz/jira-tracker/dist/register.d.ts +5 -3
- package/node_modules/@lorenz/jira-tracker/dist/register.d.ts.map +1 -1
- package/node_modules/@lorenz/jira-tracker/dist/register.js +9 -3
- package/node_modules/@lorenz/jira-tracker/dist/register.js.map +1 -1
- package/node_modules/@lorenz/jira-tracker/dist/tools.d.ts +18 -0
- package/node_modules/@lorenz/jira-tracker/dist/tools.d.ts.map +1 -0
- package/node_modules/@lorenz/{tracker-sdk/dist/toolPack.js → jira-tracker/dist/tools.js} +76 -78
- package/node_modules/@lorenz/jira-tracker/dist/tools.js.map +1 -0
- package/node_modules/@lorenz/jira-tracker/package.json +1 -0
- package/node_modules/@lorenz/linear-tracker/dist/provider.d.ts.map +1 -1
- package/node_modules/@lorenz/linear-tracker/dist/provider.js +0 -2
- package/node_modules/@lorenz/linear-tracker/dist/provider.js.map +1 -1
- package/node_modules/@lorenz/local-tracker/dist/provider.d.ts.map +1 -1
- package/node_modules/@lorenz/local-tracker/dist/provider.js +0 -2
- package/node_modules/@lorenz/local-tracker/dist/provider.js.map +1 -1
- package/node_modules/@lorenz/mcp/dist/agentEndpoint.d.ts +16 -3
- package/node_modules/@lorenz/mcp/dist/agentEndpoint.d.ts.map +1 -1
- package/node_modules/@lorenz/mcp/dist/agentEndpoint.js +105 -17
- package/node_modules/@lorenz/mcp/dist/agentEndpoint.js.map +1 -1
- package/node_modules/@lorenz/mcp/dist/auth.d.ts +88 -0
- package/node_modules/@lorenz/mcp/dist/auth.d.ts.map +1 -1
- package/node_modules/@lorenz/mcp/dist/auth.js +53 -0
- package/node_modules/@lorenz/mcp/dist/auth.js.map +1 -1
- package/node_modules/@lorenz/mcp/dist/index.d.ts +3 -2
- package/node_modules/@lorenz/mcp/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/mcp/dist/index.js +1 -1
- package/node_modules/@lorenz/mcp/dist/index.js.map +1 -1
- package/node_modules/@lorenz/mcp/dist/server.d.ts +22 -0
- package/node_modules/@lorenz/mcp/dist/server.d.ts.map +1 -1
- package/node_modules/@lorenz/mcp/dist/server.js +85 -12
- package/node_modules/@lorenz/mcp/dist/server.js.map +1 -1
- package/node_modules/@lorenz/mcp/dist/tools.d.ts.map +1 -1
- package/node_modules/@lorenz/mcp/dist/tools.js +5 -8
- package/node_modules/@lorenz/mcp/dist/tools.js.map +1 -1
- package/node_modules/@lorenz/orchestrator/dist/claimStore.d.ts +157 -0
- package/node_modules/@lorenz/orchestrator/dist/claimStore.d.ts.map +1 -0
- package/node_modules/@lorenz/orchestrator/dist/claimStore.js +621 -0
- package/node_modules/@lorenz/orchestrator/dist/claimStore.js.map +1 -0
- package/node_modules/@lorenz/orchestrator/dist/codec.d.ts +38 -0
- package/node_modules/@lorenz/orchestrator/dist/codec.d.ts.map +1 -0
- package/node_modules/@lorenz/orchestrator/dist/codec.js +176 -0
- package/node_modules/@lorenz/orchestrator/dist/codec.js.map +1 -0
- package/node_modules/@lorenz/orchestrator/dist/index.d.ts +55 -51
- package/node_modules/@lorenz/orchestrator/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/orchestrator/dist/index.js +285 -45
- package/node_modules/@lorenz/orchestrator/dist/index.js.map +1 -1
- package/node_modules/@lorenz/orchestrator/dist/sqlite.d.ts +34 -0
- package/node_modules/@lorenz/orchestrator/dist/sqlite.d.ts.map +1 -0
- package/node_modules/@lorenz/orchestrator/dist/sqlite.js +142 -0
- package/node_modules/@lorenz/orchestrator/dist/sqlite.js.map +1 -0
- package/node_modules/@lorenz/orchestrator/dist/state.d.ts +47 -0
- package/node_modules/@lorenz/orchestrator/dist/state.d.ts.map +1 -0
- package/node_modules/@lorenz/orchestrator/dist/state.js +15 -0
- package/node_modules/@lorenz/orchestrator/dist/state.js.map +1 -0
- package/node_modules/@lorenz/orchestrator/dist/turso.d.ts +28 -0
- package/node_modules/@lorenz/orchestrator/dist/turso.d.ts.map +1 -0
- package/node_modules/@lorenz/orchestrator/dist/turso.js +125 -0
- package/node_modules/@lorenz/orchestrator/dist/turso.js.map +1 -0
- package/node_modules/@lorenz/orchestrator/package.json +6 -2
- package/node_modules/@lorenz/presenter/dist/index.d.ts +14 -0
- package/node_modules/@lorenz/presenter/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/presenter/dist/index.js +18 -0
- package/node_modules/@lorenz/presenter/dist/index.js.map +1 -1
- package/node_modules/@lorenz/projections/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/projections/dist/index.js +1 -0
- package/node_modules/@lorenz/projections/dist/index.js.map +1 -1
- package/node_modules/@lorenz/runtime/dist/index.d.ts +27 -8
- package/node_modules/@lorenz/runtime/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/runtime/dist/index.js +422 -98
- package/node_modules/@lorenz/runtime/dist/index.js.map +1 -1
- package/node_modules/@lorenz/runtime-events/dist/index.d.ts +14 -0
- package/node_modules/@lorenz/runtime-events/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/slack-tracker/dist/client.d.ts +0 -7
- package/node_modules/@lorenz/slack-tracker/dist/client.d.ts.map +1 -1
- package/node_modules/@lorenz/slack-tracker/dist/client.js +4 -5
- package/node_modules/@lorenz/slack-tracker/dist/client.js.map +1 -1
- package/node_modules/@lorenz/slack-tracker/dist/index.d.ts +0 -1
- package/node_modules/@lorenz/slack-tracker/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/slack-tracker/dist/index.js +0 -1
- package/node_modules/@lorenz/slack-tracker/dist/index.js.map +1 -1
- package/node_modules/@lorenz/slack-tracker/dist/provider.d.ts.map +1 -1
- package/node_modules/@lorenz/slack-tracker/dist/provider.js +0 -2
- package/node_modules/@lorenz/slack-tracker/dist/provider.js.map +1 -1
- package/node_modules/@lorenz/ssh/dist/index.d.ts +2 -0
- package/node_modules/@lorenz/ssh/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/ssh/dist/index.js +2 -1
- package/node_modules/@lorenz/ssh/dist/index.js.map +1 -1
- package/node_modules/@lorenz/tool-sdk/dist/index.d.ts +1 -0
- package/node_modules/@lorenz/tool-sdk/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/tool-sdk/dist/index.js +1 -0
- package/node_modules/@lorenz/tool-sdk/dist/index.js.map +1 -1
- package/node_modules/@lorenz/tool-sdk/dist/module.d.ts +38 -0
- package/node_modules/@lorenz/tool-sdk/dist/module.d.ts.map +1 -0
- package/node_modules/@lorenz/tool-sdk/dist/module.js +42 -0
- package/node_modules/@lorenz/tool-sdk/dist/module.js.map +1 -0
- package/node_modules/@lorenz/tracker-sdk/dist/index.d.ts +2 -2
- package/node_modules/@lorenz/tracker-sdk/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/tracker-sdk/dist/index.js +1 -1
- package/node_modules/@lorenz/tracker-sdk/dist/index.js.map +1 -1
- package/node_modules/@lorenz/tracker-sdk/dist/module.d.ts +37 -0
- package/node_modules/@lorenz/tracker-sdk/dist/module.d.ts.map +1 -0
- package/node_modules/@lorenz/tracker-sdk/dist/module.js +38 -0
- package/node_modules/@lorenz/tracker-sdk/dist/module.js.map +1 -0
- package/node_modules/@lorenz/tracker-sdk/dist/provider.d.ts +11 -55
- package/node_modules/@lorenz/tracker-sdk/dist/provider.d.ts.map +1 -1
- package/node_modules/@lorenz/tracker-sdk/package.json +1 -2
- package/node_modules/@lorenz/worker-host-pool/dist/index.d.ts +34 -6
- package/node_modules/@lorenz/worker-host-pool/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/worker-host-pool/dist/index.js +110 -143
- package/node_modules/@lorenz/worker-host-pool/dist/index.js.map +1 -1
- package/node_modules/@lorenz/worker-sdk/dist/index.d.ts +1 -0
- package/node_modules/@lorenz/worker-sdk/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/worker-sdk/dist/index.js +1 -0
- package/node_modules/@lorenz/worker-sdk/dist/index.js.map +1 -1
- package/node_modules/@lorenz/worker-sdk/dist/local.d.ts +74 -0
- package/node_modules/@lorenz/worker-sdk/dist/local.d.ts.map +1 -0
- package/node_modules/@lorenz/worker-sdk/dist/local.js +112 -0
- package/node_modules/@lorenz/worker-sdk/dist/local.js.map +1 -0
- package/node_modules/@lorenz/worker-sdk/dist/module.d.ts +8 -16
- package/node_modules/@lorenz/worker-sdk/dist/module.d.ts.map +1 -1
- package/node_modules/@lorenz/worker-sdk/dist/module.js +15 -35
- package/node_modules/@lorenz/worker-sdk/dist/module.js.map +1 -1
- package/node_modules/@lorenz/workflow/dist/index.d.ts +11 -0
- package/node_modules/@lorenz/workflow/dist/index.d.ts.map +1 -1
- package/node_modules/@lorenz/workflow/dist/index.js +3 -0
- package/node_modules/@lorenz/workflow/dist/index.js.map +1 -1
- package/package.json +4 -1
- package/node_modules/@lorenz/linear-tracker/dist/toolOps.d.ts +0 -8
- package/node_modules/@lorenz/linear-tracker/dist/toolOps.d.ts.map +0 -1
- package/node_modules/@lorenz/linear-tracker/dist/toolOps.js +0 -251
- package/node_modules/@lorenz/linear-tracker/dist/toolOps.js.map +0 -1
- package/node_modules/@lorenz/local-tracker/dist/toolOps.d.ts +0 -9
- package/node_modules/@lorenz/local-tracker/dist/toolOps.d.ts.map +0 -1
- package/node_modules/@lorenz/local-tracker/dist/toolOps.js +0 -86
- package/node_modules/@lorenz/local-tracker/dist/toolOps.js.map +0 -1
- package/node_modules/@lorenz/slack-tracker/dist/toolOps.d.ts +0 -13
- package/node_modules/@lorenz/slack-tracker/dist/toolOps.d.ts.map +0 -1
- package/node_modules/@lorenz/slack-tracker/dist/toolOps.js +0 -76
- package/node_modules/@lorenz/slack-tracker/dist/toolOps.js.map +0 -1
- package/node_modules/@lorenz/tracker-sdk/dist/toolPack.d.ts +0 -10
- package/node_modules/@lorenz/tracker-sdk/dist/toolPack.d.ts.map +0 -1
- package/node_modules/@lorenz/tracker-sdk/dist/toolPack.js.map +0 -1
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { coercedBoolean, coercedFloat, coercedInt } from "./coerce.js";
|
|
3
|
+
import { getDefaultFlags } from "./default.js";
|
|
4
|
+
import { flagValueErrorMessage } from "./errors.js";
|
|
5
|
+
function refinedNumber(base, config) {
|
|
6
|
+
if (!config.refine)
|
|
7
|
+
return base;
|
|
8
|
+
const refine = config.refine;
|
|
9
|
+
return base.refine(refine, { message: config.refineMessage ?? "is invalid" });
|
|
10
|
+
}
|
|
11
|
+
/** Builders for the five flag kinds. Each returns a {@link FlagDef} whose schema output is the
|
|
12
|
+
* flag's value type; numeric and boolean schemas coerce string inputs from env/CLI/file. */
|
|
13
|
+
export const flag = {
|
|
14
|
+
string(config) {
|
|
15
|
+
return {
|
|
16
|
+
kind: "string",
|
|
17
|
+
schema: z.string(),
|
|
18
|
+
default: config.default,
|
|
19
|
+
description: config.description,
|
|
20
|
+
deprecation: config.deprecation,
|
|
21
|
+
envName: config.envName,
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
int(config) {
|
|
25
|
+
return {
|
|
26
|
+
kind: "int",
|
|
27
|
+
schema: refinedNumber(coercedInt, config),
|
|
28
|
+
default: config.default,
|
|
29
|
+
description: config.description,
|
|
30
|
+
deprecation: config.deprecation,
|
|
31
|
+
envName: config.envName,
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
float(config) {
|
|
35
|
+
return {
|
|
36
|
+
kind: "float",
|
|
37
|
+
schema: refinedNumber(coercedFloat, config),
|
|
38
|
+
default: config.default,
|
|
39
|
+
description: config.description,
|
|
40
|
+
deprecation: config.deprecation,
|
|
41
|
+
envName: config.envName,
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
bool(config) {
|
|
45
|
+
return {
|
|
46
|
+
kind: "bool",
|
|
47
|
+
schema: coercedBoolean,
|
|
48
|
+
default: config.default,
|
|
49
|
+
description: config.description,
|
|
50
|
+
deprecation: config.deprecation,
|
|
51
|
+
envName: config.envName,
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
enum(config) {
|
|
55
|
+
// The return type is inferred from the actual `z.enum(values)` call, so `FlagValue<thisDef>`
|
|
56
|
+
// narrows to the exact literal union rather than a hand-asserted type.
|
|
57
|
+
const schema = z.enum(config.values);
|
|
58
|
+
return {
|
|
59
|
+
kind: "enum",
|
|
60
|
+
schema,
|
|
61
|
+
default: config.default,
|
|
62
|
+
description: config.description,
|
|
63
|
+
deprecation: config.deprecation,
|
|
64
|
+
values: config.values,
|
|
65
|
+
envName: config.envName,
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
export function feature(config) {
|
|
70
|
+
return config;
|
|
71
|
+
}
|
|
72
|
+
// Keys are lower_snake_case dotted segments only, which keeps the env-var transform lossless. The
|
|
73
|
+
// rule is enforced at module load so a stray camelCase key fails fast in CI, not at daemon start.
|
|
74
|
+
const SNAKE_KEY = /^[a-z0-9]+(?:_[a-z0-9]+)*(?:\.[a-z0-9]+(?:_[a-z0-9]+)*)*$/;
|
|
75
|
+
function assertSnakeKeys(keys, what) {
|
|
76
|
+
for (const key of keys) {
|
|
77
|
+
if (!SNAKE_KEY.test(key)) {
|
|
78
|
+
throw new Error(`@lorenz/flags: ${what} key \`${key}\` must be lower_snake_case dotted ` +
|
|
79
|
+
`(e.g. scheduler.batch_size); camelCase is not allowed.`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export function defineFlags(flags) {
|
|
84
|
+
assertSnakeKeys(Object.keys(flags), "flag");
|
|
85
|
+
return flags;
|
|
86
|
+
}
|
|
87
|
+
export function defineFeatures(_flags, features) {
|
|
88
|
+
assertSnakeKeys(Object.keys(features), "feature");
|
|
89
|
+
return features;
|
|
90
|
+
}
|
|
91
|
+
/** Scalar-only value set, so reference identity via `Object.is` is correct and obvious. */
|
|
92
|
+
export function presetValueEqual(a, b) {
|
|
93
|
+
return Object.is(a, b);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Validate a manifest once at module load: every flag default parses, and every preset references a
|
|
97
|
+
* known flag with a valid value. Two features presetting the same flag to differing values is
|
|
98
|
+
* intentionally allowed (legal for mutually-exclusive features); that conflict is authoritative only
|
|
99
|
+
* over the actually-enabled set at resolve time.
|
|
100
|
+
*/
|
|
101
|
+
export function validateManifest(manifest) {
|
|
102
|
+
const errors = [];
|
|
103
|
+
for (const [key, def] of Object.entries(manifest.flags)) {
|
|
104
|
+
const result = def.schema.safeParse(def.default);
|
|
105
|
+
if (!result.success) {
|
|
106
|
+
errors.push(`flag \`${key}\` default is invalid: ${flagValueErrorMessage(result.error, def)}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
for (const [featureName, featureDef] of Object.entries(manifest.features)) {
|
|
110
|
+
for (const [flagKey, value] of Object.entries(featureDef.preset)) {
|
|
111
|
+
const flagDef = manifest.flags[flagKey];
|
|
112
|
+
if (!flagDef) {
|
|
113
|
+
errors.push(`feature \`${featureName}\` presets unknown flag \`${flagKey}\``);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const result = flagDef.schema.safeParse(value);
|
|
117
|
+
if (!result.success) {
|
|
118
|
+
errors.push(`feature \`${featureName}\` presets \`${flagKey}\` to an invalid value: ${flagValueErrorMessage(result.error, flagDef)}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (errors.length > 0) {
|
|
123
|
+
throw new Error(`@lorenz/flags manifest is invalid:\n - ${errors.join("\n - ")}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Bind a manifest to typed ambient accessors. Called once by the manifest-owning module; the rest
|
|
128
|
+
* of the engine imports the returned `getFlags`/`flag`, so ambient reads are as well-typed as the
|
|
129
|
+
* manifest. The cast is sound because the composition root installs a snapshot built from the same
|
|
130
|
+
* manifest, and it is contained to this one factory.
|
|
131
|
+
*/
|
|
132
|
+
export function bindFlags(_manifest) {
|
|
133
|
+
return {
|
|
134
|
+
getFlags: () => getDefaultFlags(),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FeatureDef, FlagManifest, FlagMap, FlagsSnapshot, RawLayers, ResolveOptions } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Fold the CLI, file, and env layers, plus enabled-feature presets and manifest defaults, into one
|
|
4
|
+
* frozen snapshot. All problems aggregate into a single thrown error (collect-all). Deprecation
|
|
5
|
+
* warnings are staged during resolution and committed only on success.
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolveFlags<F extends FlagMap, Features extends Record<string, FeatureDef>>(manifest: FlagManifest<F, Features>, layers: RawLayers, options?: ResolveOptions): FlagsSnapshot<F, Features>;
|
|
8
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EAIV,YAAY,EACZ,OAAO,EACP,aAAa,EAEb,SAAS,EACT,cAAc,EACf,MAAM,YAAY,CAAC;AAWpB;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACzF,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,EACnC,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAoG5B"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { parseBoolToken } from "./coerce.js";
|
|
2
|
+
import { collectFlagDeprecations, commitFlagDeprecations, stderrFlagWarn } from "./deprecations.js";
|
|
3
|
+
import { FlagIssueCollector, flagValueErrorMessage } from "./errors.js";
|
|
4
|
+
import { presetValueEqual } from "./manifest.js";
|
|
5
|
+
/**
|
|
6
|
+
* Fold the CLI, file, and env layers, plus enabled-feature presets and manifest defaults, into one
|
|
7
|
+
* frozen snapshot. All problems aggregate into a single thrown error (collect-all). Deprecation
|
|
8
|
+
* warnings are staged during resolution and committed only on success.
|
|
9
|
+
*/
|
|
10
|
+
export function resolveFlags(manifest, layers, options = {}) {
|
|
11
|
+
const issues = new FlagIssueCollector();
|
|
12
|
+
for (const layer of [layers.cli, layers.file, layers.env]) {
|
|
13
|
+
if (layer.issues)
|
|
14
|
+
issues.addAll(layer.issues);
|
|
15
|
+
}
|
|
16
|
+
// Per-layer last-wins maps of explicit flag inputs (parsers guarantee known keys).
|
|
17
|
+
const cliFlags = lastWins(layers.cli.flags);
|
|
18
|
+
const fileFlags = lastWins(layers.file.flags);
|
|
19
|
+
const envFlags = lastWins(layers.env.flags);
|
|
20
|
+
const explicitFlagKeys = new Set([
|
|
21
|
+
...cliFlags.keys(),
|
|
22
|
+
...fileFlags.keys(),
|
|
23
|
+
...envFlags.keys(),
|
|
24
|
+
]);
|
|
25
|
+
// Feature enablement: the highest layer that mentions the feature wins; otherwise its default.
|
|
26
|
+
const enabled = new Map();
|
|
27
|
+
for (const [name, def] of Object.entries(manifest.features)) {
|
|
28
|
+
const chosen = featureInLayer(layers.cli.features, name) ??
|
|
29
|
+
featureInLayer(layers.file.features, name) ??
|
|
30
|
+
featureInLayer(layers.env.features, name);
|
|
31
|
+
enabled.set(name, chosen ? chosen.enabled : def.default);
|
|
32
|
+
}
|
|
33
|
+
// Preset composition over enabled features only, skipping any explicitly-set flag (an explicit
|
|
34
|
+
// setting both overrides and defuses a would-be conflict). Differing values from two enabled
|
|
35
|
+
// features that both reach this point is a hard, deterministic error.
|
|
36
|
+
const presetValue = new Map();
|
|
37
|
+
const presetOwner = new Map();
|
|
38
|
+
const conflicts = new Set();
|
|
39
|
+
for (const [featureName, featureDef] of Object.entries(manifest.features)) {
|
|
40
|
+
if (!enabled.get(featureName))
|
|
41
|
+
continue;
|
|
42
|
+
for (const [flagKey, value] of Object.entries(featureDef.preset)) {
|
|
43
|
+
if (explicitFlagKeys.has(flagKey))
|
|
44
|
+
continue;
|
|
45
|
+
if (presetValue.has(flagKey)) {
|
|
46
|
+
const existing = presetValue.get(flagKey);
|
|
47
|
+
if (!presetValueEqual(existing, value) && !conflicts.has(flagKey)) {
|
|
48
|
+
conflicts.add(flagKey);
|
|
49
|
+
issues.add({
|
|
50
|
+
kind: "preset_conflict",
|
|
51
|
+
message: `feature preset conflict on flag \`${flagKey}\`: feature \`${presetOwner.get(flagKey) ?? "?"}\` ` +
|
|
52
|
+
`sets it to ${display(existing)} but feature \`${featureName}\` sets it to ${display(value)}. ` +
|
|
53
|
+
`Enable only one, or set \`${flagKey}\` explicitly to override both.`,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
presetValue.set(flagKey, value);
|
|
59
|
+
presetOwner.set(flagKey, featureName);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Flag value resolution: highest explicit layer -> enabled-feature preset -> manifest default.
|
|
63
|
+
const resolved = new Map();
|
|
64
|
+
for (const [key, def] of Object.entries(manifest.flags)) {
|
|
65
|
+
const explicit = cliFlags.get(key) ?? fileFlags.get(key) ?? envFlags.get(key);
|
|
66
|
+
if (explicit) {
|
|
67
|
+
const outcome = parseFlagValue(def, explicit.rawValue);
|
|
68
|
+
if (outcome.ok)
|
|
69
|
+
resolved.set(key, { value: outcome.value, source: explicit.source });
|
|
70
|
+
else
|
|
71
|
+
issues.add({
|
|
72
|
+
kind: "invalid_value",
|
|
73
|
+
message: `invalid value for ${explicit.origin}: ${outcome.message}`,
|
|
74
|
+
});
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (presetValue.has(key) && !conflicts.has(key)) {
|
|
78
|
+
// Preset values were validated at manifest load; re-validate defensively against the schema.
|
|
79
|
+
const outcome = parseFlagValue(def, presetValue.get(key));
|
|
80
|
+
if (outcome.ok)
|
|
81
|
+
resolved.set(key, { value: outcome.value, source: "feature" });
|
|
82
|
+
else
|
|
83
|
+
issues.add({
|
|
84
|
+
kind: "invalid_value",
|
|
85
|
+
message: `feature preset for flag \`${key}\` is invalid: ${outcome.message}`,
|
|
86
|
+
});
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
resolved.set(key, { value: def.default, source: "default" });
|
|
90
|
+
}
|
|
91
|
+
// Stage deprecation warnings for explicitly-set keys that resolved successfully. A deprecated flag
|
|
92
|
+
// set to an invalid value is absent from `resolved`, so it neither warns nor consumes a slot.
|
|
93
|
+
const explicitDeprecationKeys = [];
|
|
94
|
+
for (const key of explicitFlagKeys) {
|
|
95
|
+
if (resolved.get(key)?.source !== "default" && resolved.has(key)) {
|
|
96
|
+
explicitDeprecationKeys.push({ key, isFeature: false });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
for (const name of explicitlyMentionedFeatures(layers)) {
|
|
100
|
+
explicitDeprecationKeys.push({ key: name, isFeature: true });
|
|
101
|
+
}
|
|
102
|
+
const staged = collectFlagDeprecations(explicitDeprecationKeys, manifest);
|
|
103
|
+
issues.throwIfAny();
|
|
104
|
+
commitFlagDeprecations(staged, options.warn ?? stderrFlagWarn);
|
|
105
|
+
return buildSnapshot(resolved, enabled);
|
|
106
|
+
}
|
|
107
|
+
function parseFlagValue(def, raw) {
|
|
108
|
+
// Boolean tokens are normalized (case-insensitive) before the schema sees them, so env/CLI/file
|
|
109
|
+
// booleans behave identically.
|
|
110
|
+
let input = raw;
|
|
111
|
+
if (def.kind === "bool") {
|
|
112
|
+
const parsed = parseBoolToken(raw);
|
|
113
|
+
if (parsed === undefined)
|
|
114
|
+
return { ok: false, message: "must be true or false" };
|
|
115
|
+
input = parsed;
|
|
116
|
+
}
|
|
117
|
+
const result = def.schema.safeParse(input);
|
|
118
|
+
if (result.success)
|
|
119
|
+
return { ok: true, value: result.data };
|
|
120
|
+
return { ok: false, message: flagValueErrorMessage(result.error, def) };
|
|
121
|
+
}
|
|
122
|
+
function buildSnapshot(resolved, enabled) {
|
|
123
|
+
const values = {};
|
|
124
|
+
const sources = new Map();
|
|
125
|
+
for (const [key, entry] of resolved) {
|
|
126
|
+
values[key] = entry.value;
|
|
127
|
+
sources.set(key, entry.source);
|
|
128
|
+
}
|
|
129
|
+
Object.freeze(values);
|
|
130
|
+
const snapshot = {
|
|
131
|
+
get: (key) => {
|
|
132
|
+
const name = key;
|
|
133
|
+
if (!Object.prototype.hasOwnProperty.call(values, name)) {
|
|
134
|
+
throw new Error(`unknown flag \`${name}\``);
|
|
135
|
+
}
|
|
136
|
+
return values[name];
|
|
137
|
+
},
|
|
138
|
+
feature: (key) => {
|
|
139
|
+
const value = enabled.get(key);
|
|
140
|
+
if (value === undefined)
|
|
141
|
+
throw new Error(`unknown feature \`${String(key)}\``);
|
|
142
|
+
return value;
|
|
143
|
+
},
|
|
144
|
+
values: values,
|
|
145
|
+
source: (key) => {
|
|
146
|
+
const value = sources.get(key);
|
|
147
|
+
if (value === undefined)
|
|
148
|
+
throw new Error(`unknown flag \`${String(key)}\``);
|
|
149
|
+
return value;
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
return Object.freeze(snapshot);
|
|
153
|
+
}
|
|
154
|
+
function lastWins(inputs) {
|
|
155
|
+
const map = new Map();
|
|
156
|
+
for (const input of inputs)
|
|
157
|
+
map.set(input.key, input);
|
|
158
|
+
return map;
|
|
159
|
+
}
|
|
160
|
+
function featureInLayer(inputs, name) {
|
|
161
|
+
let found;
|
|
162
|
+
for (const input of inputs)
|
|
163
|
+
if (input.name === name)
|
|
164
|
+
found = input;
|
|
165
|
+
return found;
|
|
166
|
+
}
|
|
167
|
+
function explicitlyMentionedFeatures(layers) {
|
|
168
|
+
const names = new Set();
|
|
169
|
+
for (const layer of [layers.cli, layers.file, layers.env]) {
|
|
170
|
+
for (const input of layer.features)
|
|
171
|
+
names.add(input.name);
|
|
172
|
+
}
|
|
173
|
+
return names;
|
|
174
|
+
}
|
|
175
|
+
function display(value) {
|
|
176
|
+
return typeof value === "string" ? JSON.stringify(value) : String(value);
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { FeatureDef, FlagManifest, FlagMap, FlagOverrides, FlagsSnapshot } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Build a frozen snapshot from manifest defaults + feature presets + typed overrides, with no
|
|
4
|
+
* env/CLI/file scanning. Overrides enter at the explicit (CLI) band, so an explicit override beats
|
|
5
|
+
* an enabled feature preset exactly as in production. Routing through the real {@link resolveFlags}
|
|
6
|
+
* keeps a single precedence implementation. Deprecation warnings are suppressed (no-op `warn`).
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildTestFlags<F extends FlagMap, Features extends Record<string, FeatureDef>>(manifest: FlagManifest<F, Features>, overrides?: FlagOverrides<F, Features>): FlagsSnapshot<F, Features>;
|
|
9
|
+
/** Build a snapshot from overrides and install it as the default. Returns the snapshot. */
|
|
10
|
+
export declare function setFlagsForTesting<F extends FlagMap, Features extends Record<string, FeatureDef>>(manifest: FlagManifest<F, Features>, overrides?: FlagOverrides<F, Features>): FlagsSnapshot<F, Features>;
|
|
11
|
+
/**
|
|
12
|
+
* Run `fn` with a fresh snapshot installed as the default, restoring the prior install afterward
|
|
13
|
+
* (even on throw). Synchronous only: a module-level save/restore is not safe across `await` points
|
|
14
|
+
* if two scopes interleave.
|
|
15
|
+
*/
|
|
16
|
+
export declare function withFlags<F extends FlagMap, Features extends Record<string, FeatureDef>, T>(manifest: FlagManifest<F, Features>, overrides: FlagOverrides<F, Features>, fn: () => T): T;
|
|
17
|
+
/** Clear the installed snapshot and re-arm once-per-process deprecation warnings. */
|
|
18
|
+
export declare function resetFlags(): void;
|
|
19
|
+
//# sourceMappingURL=testing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EAGV,YAAY,EACZ,OAAO,EACP,aAAa,EACb,aAAa,EAEd,MAAM,YAAY,CAAC;AAQpB;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAC3F,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,EACnC,SAAS,GAAE,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAM,GACzC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAe5B;AAED,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAC/F,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,EACnC,SAAS,GAAE,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAM,GACzC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAI5B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,EACzF,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,EACnC,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,EACrC,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAkBH;AAUD,qFAAqF;AACrF,wBAAgB,UAAU,IAAI,IAAI,CAGjC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { clearDefaultFlags, getDefaultFlags, hasDefaultFlags, setDefaultFlags } from "./default.js";
|
|
2
|
+
import { resetFlagDeprecationWarnings } from "./deprecations.js";
|
|
3
|
+
import { resolveFlags } from "./resolve.js";
|
|
4
|
+
// Test seams (subpath export `@lorenz/flags/testing`), kept out of the production entry point.
|
|
5
|
+
function emptyLayer() {
|
|
6
|
+
return { flags: [], features: [] };
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Build a frozen snapshot from manifest defaults + feature presets + typed overrides, with no
|
|
10
|
+
* env/CLI/file scanning. Overrides enter at the explicit (CLI) band, so an explicit override beats
|
|
11
|
+
* an enabled feature preset exactly as in production. Routing through the real {@link resolveFlags}
|
|
12
|
+
* keeps a single precedence implementation. Deprecation warnings are suppressed (no-op `warn`).
|
|
13
|
+
*/
|
|
14
|
+
export function buildTestFlags(manifest, overrides = {}) {
|
|
15
|
+
const flags = [];
|
|
16
|
+
const features = [];
|
|
17
|
+
for (const [key, value] of Object.entries(overrides.flags ?? {})) {
|
|
18
|
+
flags.push({ source: "cli", key, rawValue: value, origin: `test override flags.${key}` });
|
|
19
|
+
}
|
|
20
|
+
for (const [name, enabled] of Object.entries(overrides.features ?? {})) {
|
|
21
|
+
if (enabled === undefined)
|
|
22
|
+
continue;
|
|
23
|
+
features.push({ source: "cli", name, enabled, origin: `test override features.${name}` });
|
|
24
|
+
}
|
|
25
|
+
return resolveFlags(manifest, { cli: { flags, features }, file: emptyLayer(), env: emptyLayer() }, { warn: () => { } });
|
|
26
|
+
}
|
|
27
|
+
/** Build a snapshot from overrides and install it as the default. Returns the snapshot. */
|
|
28
|
+
export function setFlagsForTesting(manifest, overrides = {}) {
|
|
29
|
+
const snapshot = buildTestFlags(manifest, overrides);
|
|
30
|
+
setDefaultFlags(snapshot);
|
|
31
|
+
return snapshot;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Run `fn` with a fresh snapshot installed as the default, restoring the prior install afterward
|
|
35
|
+
* (even on throw). Synchronous only: a module-level save/restore is not safe across `await` points
|
|
36
|
+
* if two scopes interleave.
|
|
37
|
+
*/
|
|
38
|
+
export function withFlags(manifest, overrides, fn) {
|
|
39
|
+
const previous = hasDefaultFlags() ? getDefaultFlags() : undefined;
|
|
40
|
+
setDefaultFlags(buildTestFlags(manifest, overrides));
|
|
41
|
+
try {
|
|
42
|
+
const result = fn();
|
|
43
|
+
if (isThenable(result)) {
|
|
44
|
+
// An async body would read flags after `finally` has already restored the prior snapshot, so
|
|
45
|
+
// its post-await reads would silently see the wrong flags. Fail loudly instead.
|
|
46
|
+
throw new Error("withFlags requires a synchronous callback; it returned a thenable. Use " +
|
|
47
|
+
"setFlagsForTesting()/resetFlags() to scope flags across awaits.");
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
if (previous)
|
|
53
|
+
setDefaultFlags(previous);
|
|
54
|
+
else
|
|
55
|
+
clearDefaultFlags();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function isThenable(value) {
|
|
59
|
+
return ((typeof value === "object" || typeof value === "function") &&
|
|
60
|
+
value !== null &&
|
|
61
|
+
typeof value.then === "function");
|
|
62
|
+
}
|
|
63
|
+
/** Clear the installed snapshot and re-arm once-per-process deprecation warnings. */
|
|
64
|
+
export function resetFlags() {
|
|
65
|
+
clearDefaultFlags();
|
|
66
|
+
resetFlagDeprecationWarnings();
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=testing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
/** Per-key deprecation marker. `detail` adds optional guidance to the warning. */
|
|
3
|
+
export interface FlagDeprecation {
|
|
4
|
+
readonly detail?: string | undefined;
|
|
5
|
+
}
|
|
6
|
+
export type FlagKind = "string" | "int" | "float" | "bool" | "enum";
|
|
7
|
+
/** A single flag declaration. `schema`'s output is the flag's value type; `default` is that type. */
|
|
8
|
+
export interface FlagDef<Schema extends z.ZodType = z.ZodType> {
|
|
9
|
+
readonly kind: FlagKind;
|
|
10
|
+
readonly schema: Schema;
|
|
11
|
+
readonly default: z.output<Schema>;
|
|
12
|
+
readonly description: string;
|
|
13
|
+
readonly deprecation?: FlagDeprecation | undefined;
|
|
14
|
+
/** enum only: the allowed values, surfaced in error/help text. */
|
|
15
|
+
readonly values?: readonly string[] | undefined;
|
|
16
|
+
/** Optional explicit env var name (including the `LORENZ_FLAG_`/`LORENZ_FEATURE_` prefix). */
|
|
17
|
+
readonly envName?: string | undefined;
|
|
18
|
+
}
|
|
19
|
+
/** A feature: a named boolean whose enablement applies a preset of flag default-overrides. */
|
|
20
|
+
export interface FeatureDef<Preset extends Record<string, unknown> = Record<string, unknown>> {
|
|
21
|
+
readonly default: boolean;
|
|
22
|
+
readonly description: string;
|
|
23
|
+
readonly preset: Preset;
|
|
24
|
+
readonly deprecation?: FlagDeprecation | undefined;
|
|
25
|
+
readonly envName?: string | undefined;
|
|
26
|
+
}
|
|
27
|
+
export type FlagMap = Record<string, FlagDef>;
|
|
28
|
+
export type FlagValue<D extends FlagDef> = D extends FlagDef<infer S> ? z.output<S> : never;
|
|
29
|
+
export type FlagKeyOf<F extends FlagMap> = keyof F & string;
|
|
30
|
+
export type FlagValuesOf<F extends FlagMap> = {
|
|
31
|
+
[K in keyof F]: FlagValue<F[K]>;
|
|
32
|
+
};
|
|
33
|
+
export type PresetFor<F extends FlagMap> = Partial<FlagValuesOf<F>>;
|
|
34
|
+
export type FeatureMapFor<F extends FlagMap> = Record<string, FeatureDef<PresetFor<F>>>;
|
|
35
|
+
export type FeatureKeyOf<Features extends Record<string, FeatureDef>> = keyof Features & string;
|
|
36
|
+
export interface FlagManifest<F extends FlagMap = FlagMap, Features extends Record<string, FeatureDef> = Record<string, FeatureDef>> {
|
|
37
|
+
readonly flags: F;
|
|
38
|
+
readonly features: Features;
|
|
39
|
+
}
|
|
40
|
+
/** Where a resolved value came from. `feature` means an enabled feature's preset supplied it. */
|
|
41
|
+
export type LayerSource = "cli" | "file" | "env" | "feature" | "default";
|
|
42
|
+
export interface FlagInput {
|
|
43
|
+
readonly source: LayerSource;
|
|
44
|
+
readonly key: string;
|
|
45
|
+
readonly rawValue: unknown;
|
|
46
|
+
/** Human-facing label of where this came from, e.g. `--flag x=1` or `LORENZ_FLAG_X`. */
|
|
47
|
+
readonly origin: string;
|
|
48
|
+
}
|
|
49
|
+
export interface FeatureInput {
|
|
50
|
+
readonly source: LayerSource;
|
|
51
|
+
readonly name: string;
|
|
52
|
+
readonly enabled: boolean;
|
|
53
|
+
readonly origin: string;
|
|
54
|
+
}
|
|
55
|
+
export type FlagIssueKind = "unknown_flag" | "unknown_feature" | "invalid_value" | "preset_conflict";
|
|
56
|
+
export interface FlagIssue {
|
|
57
|
+
readonly kind: FlagIssueKind;
|
|
58
|
+
readonly message: string;
|
|
59
|
+
}
|
|
60
|
+
export interface RawLayer {
|
|
61
|
+
readonly flags: readonly FlagInput[];
|
|
62
|
+
readonly features: readonly FeatureInput[];
|
|
63
|
+
/** Problems a parser detected but deferred to the resolver's collect-all aggregation. */
|
|
64
|
+
readonly issues?: readonly FlagIssue[] | undefined;
|
|
65
|
+
}
|
|
66
|
+
/** The three explicit layers, in HIGH-to-LOW precedence order. */
|
|
67
|
+
export interface RawLayers {
|
|
68
|
+
readonly cli: RawLayer;
|
|
69
|
+
readonly file: RawLayer;
|
|
70
|
+
readonly env: RawLayer;
|
|
71
|
+
}
|
|
72
|
+
export interface ResolveOptions {
|
|
73
|
+
/** Sink for once-per-process deprecation warnings. Defaults to a stderr `warning:` writer. */
|
|
74
|
+
readonly warn?: ((message: string) => void) | undefined;
|
|
75
|
+
}
|
|
76
|
+
/** A fully-resolved, immutable view. Values are already coerced and validated. */
|
|
77
|
+
export interface FlagsSnapshot<F extends FlagMap = FlagMap, Features extends Record<string, FeatureDef> = Record<string, FeatureDef>> {
|
|
78
|
+
/** Typed flag read; the return type is exactly this key's value type. */
|
|
79
|
+
get<K extends FlagKeyOf<F>>(key: K): FlagValue<F[K]>;
|
|
80
|
+
/** Effective feature state after all layers. */
|
|
81
|
+
feature(key: FeatureKeyOf<Features>): boolean;
|
|
82
|
+
/** Frozen value map, for snapshotting into logs/traces. */
|
|
83
|
+
readonly values: Readonly<{
|
|
84
|
+
[K in keyof F]: FlagValue<F[K]>;
|
|
85
|
+
}>;
|
|
86
|
+
/** Per-flag provenance, for diagnostics (e.g. "timeout_ms came from cli"). */
|
|
87
|
+
source(key: FlagKeyOf<F>): LayerSource;
|
|
88
|
+
}
|
|
89
|
+
export interface FlagOverrides<F extends FlagMap, Features extends Record<string, FeatureDef>> {
|
|
90
|
+
flags?: Partial<FlagValuesOf<F>> | undefined;
|
|
91
|
+
features?: Partial<Record<FeatureKeyOf<Features>, boolean>> | undefined;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lorenz/flags",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./dist/index.js",
|
|
10
|
+
"./testing": "./dist/testing.js"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@lorenz/domain": "0.1.1",
|
|
14
|
+
"zod": "^4.4.3"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -2,4 +2,5 @@ export { JiraClient, JiraMcpClient, normalizeJiraIssue, type JiraClientDeps } fr
|
|
|
2
2
|
export { jiraTrackerOptions, type JiraMcpOptions, type JiraMcpToolMap, type JiraTrackerOptions, } from "./options.js";
|
|
3
3
|
export { jiraMcpTrackerProvider, jiraTrackerProvider } from "./provider.js";
|
|
4
4
|
export { registerJiraTrackers } from "./register.js";
|
|
5
|
+
export { JIRA_TOOL_PACK_NAME, executeJiraTool, jiraToolProvider, trackerToolSpecs, } from "./tools.js";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -2,4 +2,5 @@ export { JiraClient, JiraMcpClient, normalizeJiraIssue } from "./client.js";
|
|
|
2
2
|
export { jiraTrackerOptions, } from "./options.js";
|
|
3
3
|
export { jiraMcpTrackerProvider, jiraTrackerProvider } from "./provider.js";
|
|
4
4
|
export { registerJiraTrackers } from "./register.js";
|
|
5
|
+
export { JIRA_TOOL_PACK_NAME, executeJiraTool, jiraToolProvider, trackerToolSpecs, } from "./tools.js";
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAuB,MAAM,aAAa,CAAC;AACjG,OAAO,EACL,kBAAkB,GAInB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAuB,MAAM,aAAa,CAAC;AACjG,OAAO,EACL,kBAAkB,GAInB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkB,eAAe,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAiC3E,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,EAAE,eAejC,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,EAAE,eAYpC,CAAC"}
|