@lumenflow/packs-software-delivery 4.24.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/manifest-schema.d.ts +12 -0
- package/dist/manifest-schema.d.ts.map +1 -1
- package/dist/manifest-schema.js +10 -0
- package/dist/manifest-schema.js.map +1 -1
- package/dist/manifest.d.ts +21 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +92 -1
- package/dist/manifest.js.map +1 -1
- package/dist/src/commands/index.d.ts +2 -0
- package/dist/src/commands/index.d.ts.map +1 -0
- package/dist/src/commands/index.js +5 -0
- package/dist/src/commands/index.js.map +1 -0
- package/dist/src/config/delivery-review-contract.d.ts +17 -0
- package/dist/src/config/delivery-review-contract.d.ts.map +1 -0
- package/dist/src/config/delivery-review-contract.js +19 -0
- package/dist/src/config/delivery-review-contract.js.map +1 -0
- package/dist/src/config/env-accessors.d.ts +16 -0
- package/dist/src/config/env-accessors.d.ts.map +1 -0
- package/dist/src/config/env-accessors.js +18 -0
- package/dist/src/config/env-accessors.js.map +1 -0
- package/dist/src/config/index.d.ts +3 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +8 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/normalize-config-keys.d.ts +16 -0
- package/dist/src/config/normalize-config-keys.d.ts.map +1 -0
- package/dist/src/config/normalize-config-keys.js +18 -0
- package/dist/src/config/normalize-config-keys.js.map +1 -0
- package/dist/src/config/schemas/lumenflow-config-schema-types.d.ts +190 -0
- package/dist/src/config/schemas/lumenflow-config-schema-types.d.ts.map +1 -0
- package/dist/src/config/schemas/lumenflow-config-schema-types.js +182 -0
- package/dist/src/config/schemas/lumenflow-config-schema-types.js.map +1 -0
- package/dist/src/config/schemas/lumenflow-config-schema.d.ts +190 -0
- package/dist/src/config/schemas/lumenflow-config-schema.d.ts.map +1 -0
- package/dist/src/config/schemas/lumenflow-config-schema.js +182 -0
- package/dist/src/config/schemas/lumenflow-config-schema.js.map +1 -0
- package/dist/src/config/workspace-reader.d.ts +56 -0
- package/dist/src/config/workspace-reader.d.ts.map +1 -0
- package/dist/src/config/workspace-reader.js +209 -0
- package/dist/src/config/workspace-reader.js.map +1 -0
- package/dist/src/constants/backlog-patterns.d.ts +21 -0
- package/dist/src/constants/backlog-patterns.d.ts.map +1 -0
- package/dist/src/constants/backlog-patterns.js +26 -0
- package/dist/src/constants/backlog-patterns.js.map +1 -0
- package/dist/src/constants/client-ids.d.ts +16 -0
- package/dist/src/constants/client-ids.d.ts.map +1 -0
- package/dist/src/constants/client-ids.js +16 -0
- package/dist/src/constants/client-ids.js.map +1 -0
- package/dist/src/constants/config-contract.d.ts +2 -0
- package/dist/src/constants/config-contract.d.ts.map +1 -0
- package/dist/src/constants/config-contract.js +7 -0
- package/dist/src/constants/config-contract.js.map +1 -0
- package/dist/src/constants/docs-layout-presets.d.ts +31 -0
- package/dist/src/constants/docs-layout-presets.d.ts.map +1 -0
- package/dist/src/constants/docs-layout-presets.js +41 -0
- package/dist/src/constants/docs-layout-presets.js.map +1 -0
- package/dist/src/constants/duration-constants.d.ts +11 -0
- package/dist/src/constants/duration-constants.d.ts.map +1 -0
- package/dist/src/constants/duration-constants.js +13 -0
- package/dist/src/constants/duration-constants.js.map +1 -0
- package/dist/src/constants/gate-constants.d.ts +24 -0
- package/dist/src/constants/gate-constants.d.ts.map +1 -0
- package/dist/src/constants/gate-constants.js +26 -0
- package/dist/src/constants/gate-constants.js.map +1 -0
- package/dist/src/constants/index.d.ts +18 -0
- package/dist/src/constants/index.d.ts.map +1 -0
- package/dist/src/constants/index.js +29 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/src/constants/lock-constants.d.ts +29 -0
- package/dist/src/constants/lock-constants.d.ts.map +1 -0
- package/dist/src/constants/lock-constants.js +31 -0
- package/dist/src/constants/lock-constants.js.map +1 -0
- package/dist/src/constants/object-guards.d.ts +9 -0
- package/dist/src/constants/object-guards.d.ts.map +1 -0
- package/dist/src/constants/object-guards.js +11 -0
- package/dist/src/constants/object-guards.js.map +1 -0
- package/dist/src/constants/section-headings.d.ts +35 -0
- package/dist/src/constants/section-headings.d.ts.map +1 -0
- package/dist/src/constants/section-headings.js +82 -0
- package/dist/src/constants/section-headings.js.map +1 -0
- package/dist/src/constants/wu-cli-constants.d.ts +434 -0
- package/dist/src/constants/wu-cli-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-cli-constants.js +439 -0
- package/dist/src/constants/wu-cli-constants.js.map +1 -0
- package/dist/src/constants/wu-domain-constants.d.ts +296 -0
- package/dist/src/constants/wu-domain-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-domain-constants.js +400 -0
- package/dist/src/constants/wu-domain-constants.js.map +1 -0
- package/dist/src/constants/wu-git-constants.d.ts +2 -0
- package/dist/src/constants/wu-git-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-git-constants.js +7 -0
- package/dist/src/constants/wu-git-constants.js.map +1 -0
- package/dist/src/constants/wu-id-format.d.ts +138 -0
- package/dist/src/constants/wu-id-format.d.ts.map +1 -0
- package/dist/src/constants/wu-id-format.js +265 -0
- package/dist/src/constants/wu-id-format.js.map +1 -0
- package/dist/src/constants/wu-paths-constants.d.ts +254 -0
- package/dist/src/constants/wu-paths-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-paths-constants.js +276 -0
- package/dist/src/constants/wu-paths-constants.js.map +1 -0
- package/dist/src/constants/wu-statuses.d.ts +209 -0
- package/dist/src/constants/wu-statuses.d.ts.map +1 -0
- package/dist/src/constants/wu-statuses.js +245 -0
- package/dist/src/constants/wu-statuses.js.map +1 -0
- package/dist/src/constants/wu-type-helpers.d.ts +28 -0
- package/dist/src/constants/wu-type-helpers.d.ts.map +1 -0
- package/dist/src/constants/wu-type-helpers.js +49 -0
- package/dist/src/constants/wu-type-helpers.js.map +1 -0
- package/dist/src/constants/wu-ui-constants.d.ts +236 -0
- package/dist/src/constants/wu-ui-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-ui-constants.js +238 -0
- package/dist/src/constants/wu-ui-constants.js.map +1 -0
- package/dist/src/constants/wu-validation-constants.d.ts +61 -0
- package/dist/src/constants/wu-validation-constants.d.ts.map +1 -0
- package/dist/src/constants/wu-validation-constants.js +69 -0
- package/dist/src/constants/wu-validation-constants.js.map +1 -0
- package/dist/src/domain/index.d.ts +4 -0
- package/dist/src/domain/index.d.ts.map +1 -0
- package/dist/src/domain/index.js +6 -0
- package/dist/src/domain/index.js.map +1 -0
- package/dist/src/domain/orchestration.constants.d.ts +111 -0
- package/dist/src/domain/orchestration.constants.d.ts.map +1 -0
- package/dist/src/domain/orchestration.constants.js +130 -0
- package/dist/src/domain/orchestration.constants.js.map +1 -0
- package/dist/src/domain/orchestration.schemas.d.ts +307 -0
- package/dist/src/domain/orchestration.schemas.d.ts.map +1 -0
- package/dist/src/domain/orchestration.schemas.js +214 -0
- package/dist/src/domain/orchestration.schemas.js.map +1 -0
- package/dist/src/domain/orchestration.types.d.ts +134 -0
- package/dist/src/domain/orchestration.types.d.ts.map +1 -0
- package/dist/src/domain/orchestration.types.js +5 -0
- package/dist/src/domain/orchestration.types.js.map +1 -0
- package/dist/src/methodology/incremental-test.d.ts +33 -0
- package/dist/src/methodology/incremental-test.d.ts.map +1 -0
- package/dist/src/methodology/incremental-test.js +73 -0
- package/dist/src/methodology/incremental-test.js.map +1 -0
- package/dist/src/methodology/index.d.ts +3 -0
- package/dist/src/methodology/index.d.ts.map +1 -0
- package/dist/src/methodology/index.js +6 -0
- package/dist/src/methodology/index.js.map +1 -0
- package/dist/src/methodology/manual-test-validator.d.ts +97 -0
- package/dist/src/methodology/manual-test-validator.d.ts.map +1 -0
- package/dist/src/methodology/manual-test-validator.js +248 -0
- package/dist/src/methodology/manual-test-validator.js.map +1 -0
- package/dist/src/policy/coverage-gate.d.ts +127 -0
- package/dist/src/policy/coverage-gate.d.ts.map +1 -0
- package/dist/src/policy/coverage-gate.js +211 -0
- package/dist/src/policy/coverage-gate.js.map +1 -0
- package/dist/src/policy/gates-agent-mode.d.ts +107 -0
- package/dist/src/policy/gates-agent-mode.d.ts.map +1 -0
- package/dist/src/policy/gates-agent-mode.js +138 -0
- package/dist/src/policy/gates-agent-mode.js.map +1 -0
- package/dist/src/policy/gates-config-internal.d.ts +54 -0
- package/dist/src/policy/gates-config-internal.d.ts.map +1 -0
- package/dist/src/policy/gates-config-internal.js +108 -0
- package/dist/src/policy/gates-config-internal.js.map +1 -0
- package/dist/src/policy/gates-config.d.ts +67 -0
- package/dist/src/policy/gates-config.d.ts.map +1 -0
- package/dist/src/policy/gates-config.js +193 -0
- package/dist/src/policy/gates-config.js.map +1 -0
- package/dist/src/policy/gates-coverage.d.ts +48 -0
- package/dist/src/policy/gates-coverage.d.ts.map +1 -0
- package/dist/src/policy/gates-coverage.js +182 -0
- package/dist/src/policy/gates-coverage.js.map +1 -0
- package/dist/src/policy/gates-presets.d.ts +51 -0
- package/dist/src/policy/gates-presets.d.ts.map +1 -0
- package/dist/src/policy/gates-presets.js +117 -0
- package/dist/src/policy/gates-presets.js.map +1 -0
- package/dist/src/policy/gates-schemas.d.ts +142 -0
- package/dist/src/policy/gates-schemas.d.ts.map +1 -0
- package/dist/src/policy/gates-schemas.js +67 -0
- package/dist/src/policy/gates-schemas.js.map +1 -0
- package/dist/src/policy/index.d.ts +19 -0
- package/dist/src/policy/index.d.ts.map +1 -0
- package/dist/src/policy/index.js +21 -0
- package/dist/src/policy/index.js.map +1 -0
- package/dist/src/policy/package-manager-resolver.d.ts +79 -0
- package/dist/src/policy/package-manager-resolver.d.ts.map +1 -0
- package/dist/src/policy/package-manager-resolver.js +245 -0
- package/dist/src/policy/package-manager-resolver.js.map +1 -0
- package/dist/src/policy/resolve-policy.d.ts +337 -0
- package/dist/src/policy/resolve-policy.d.ts.map +1 -0
- package/dist/src/policy/resolve-policy.js +353 -0
- package/dist/src/policy/resolve-policy.js.map +1 -0
- package/dist/src/ports/config.ports.d.ts +83 -0
- package/dist/src/ports/config.ports.d.ts.map +1 -0
- package/dist/src/ports/config.ports.js +4 -0
- package/dist/src/ports/config.ports.js.map +1 -0
- package/dist/src/ports/dashboard-renderer.port.d.ts +113 -0
- package/dist/src/ports/dashboard-renderer.port.d.ts.map +1 -0
- package/dist/src/ports/dashboard-renderer.port.js +4 -0
- package/dist/src/ports/dashboard-renderer.port.js.map +1 -0
- package/dist/src/ports/index.d.ts +5 -0
- package/dist/src/ports/index.d.ts.map +1 -0
- package/dist/src/ports/index.js +10 -0
- package/dist/src/ports/index.js.map +1 -0
- package/dist/src/ports/sync-validator.ports.d.ts +52 -0
- package/dist/src/ports/sync-validator.ports.d.ts.map +1 -0
- package/dist/src/ports/sync-validator.ports.js +4 -0
- package/dist/src/ports/sync-validator.ports.js.map +1 -0
- package/dist/src/ports/wu-helpers.ports.d.ts +157 -0
- package/dist/src/ports/wu-helpers.ports.d.ts.map +1 -0
- package/dist/src/ports/wu-helpers.ports.js +4 -0
- package/dist/src/ports/wu-helpers.ports.js.map +1 -0
- package/dist/src/ports/wu-state.ports.d.ts +209 -0
- package/dist/src/ports/wu-state.ports.d.ts.map +1 -0
- package/dist/src/ports/wu-state.ports.js +4 -0
- package/dist/src/ports/wu-state.ports.js.map +1 -0
- package/dist/src/primitives/index.d.ts +2 -0
- package/dist/src/primitives/index.d.ts.map +1 -0
- package/dist/src/primitives/index.js +5 -0
- package/dist/src/primitives/index.js.map +1 -0
- package/dist/src/runtime/index.d.ts +2 -0
- package/dist/src/runtime/index.d.ts.map +1 -0
- package/dist/src/runtime/index.js +6 -0
- package/dist/src/runtime/index.js.map +1 -0
- package/dist/src/runtime/work-classifier.d.ts +103 -0
- package/dist/src/runtime/work-classifier.d.ts.map +1 -0
- package/dist/src/runtime/work-classifier.js +427 -0
- package/dist/src/runtime/work-classifier.js.map +1 -0
- package/dist/src/sandbox/index.d.ts +6 -0
- package/dist/src/sandbox/index.d.ts.map +1 -0
- package/dist/src/sandbox/index.js +10 -0
- package/dist/src/sandbox/index.js.map +1 -0
- package/dist/src/sandbox/sandbox-allowlist.d.ts +16 -0
- package/dist/src/sandbox/sandbox-allowlist.d.ts.map +1 -0
- package/dist/src/sandbox/sandbox-allowlist.js +77 -0
- package/dist/src/sandbox/sandbox-allowlist.js.map +1 -0
- package/dist/src/sandbox/sandbox-backend-linux.d.ts +6 -0
- package/dist/src/sandbox/sandbox-backend-linux.d.ts.map +1 -0
- package/dist/src/sandbox/sandbox-backend-linux.js +67 -0
- package/dist/src/sandbox/sandbox-backend-linux.js.map +1 -0
- package/dist/src/sandbox/sandbox-backend-macos.d.ts +6 -0
- package/dist/src/sandbox/sandbox-backend-macos.d.ts.map +1 -0
- package/dist/src/sandbox/sandbox-backend-macos.js +112 -0
- package/dist/src/sandbox/sandbox-backend-macos.js.map +1 -0
- package/dist/src/sandbox/sandbox-backend-windows.d.ts +6 -0
- package/dist/src/sandbox/sandbox-backend-windows.d.ts.map +1 -0
- package/dist/src/sandbox/sandbox-backend-windows.js +30 -0
- package/dist/src/sandbox/sandbox-backend-windows.js.map +1 -0
- package/dist/src/sandbox/sandbox-profile.d.ts +58 -0
- package/dist/src/sandbox/sandbox-profile.d.ts.map +1 -0
- package/dist/src/sandbox/sandbox-profile.js +69 -0
- package/dist/src/sandbox/sandbox-profile.js.map +1 -0
- package/dist/src/schemas/index.d.ts +2 -0
- package/dist/src/schemas/index.d.ts.map +1 -0
- package/dist/src/schemas/index.js +5 -0
- package/dist/src/schemas/index.js.map +1 -0
- package/dist/src/state/date-utils.d.ts +66 -0
- package/dist/src/state/date-utils.d.ts.map +1 -0
- package/dist/src/state/date-utils.js +143 -0
- package/dist/src/state/date-utils.js.map +1 -0
- package/dist/src/state/index.d.ts +8 -0
- package/dist/src/state/index.d.ts.map +1 -0
- package/dist/src/state/index.js +15 -0
- package/dist/src/state/index.js.map +1 -0
- package/dist/src/state/state-machine.d.ts +14 -0
- package/dist/src/state/state-machine.d.ts.map +1 -0
- package/dist/src/state/state-machine.js +92 -0
- package/dist/src/state/state-machine.js.map +1 -0
- package/dist/src/state/wu-doc-types.d.ts +48 -0
- package/dist/src/state/wu-doc-types.d.ts.map +1 -0
- package/dist/src/state/wu-doc-types.js +4 -0
- package/dist/src/state/wu-doc-types.js.map +1 -0
- package/dist/src/state/wu-paths.d.ts +275 -0
- package/dist/src/state/wu-paths.d.ts.map +1 -0
- package/dist/src/state/wu-paths.js +335 -0
- package/dist/src/state/wu-paths.js.map +1 -0
- package/dist/src/state/wu-schema.d.ts +831 -0
- package/dist/src/state/wu-schema.d.ts.map +1 -0
- package/dist/src/state/wu-schema.js +934 -0
- package/dist/src/state/wu-schema.js.map +1 -0
- package/dist/src/state/wu-state-schema.d.ts +292 -0
- package/dist/src/state/wu-state-schema.d.ts.map +1 -0
- package/dist/src/state/wu-state-schema.js +215 -0
- package/dist/src/state/wu-state-schema.js.map +1 -0
- package/dist/src/state/wu-yaml.d.ts +113 -0
- package/dist/src/state/wu-yaml.d.ts.map +1 -0
- package/dist/src/state/wu-yaml.js +307 -0
- package/dist/src/state/wu-yaml.js.map +1 -0
- package/dist/tool-impl/wu-lifecycle-tools.d.ts +11 -0
- package/dist/tool-impl/wu-lifecycle-tools.d.ts.map +1 -1
- package/dist/tool-impl/wu-lifecycle-tools.js +17 -0
- package/dist/tool-impl/wu-lifecycle-tools.js.map +1 -1
- package/manifest.yaml +210 -230
- package/package.json +88 -3
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Pack-local LumenFlow configuration schema (WU-2694).
|
|
5
|
+
*
|
|
6
|
+
* Mirrors the shape of `@lumenflow/core/lumenflow-config-schema` using
|
|
7
|
+
* hand-maintained TypeScript interfaces plus default-value constants. The pack
|
|
8
|
+
* side deliberately avoids a full Zod composition to keep the invariant
|
|
9
|
+
* "pack src/ MUST stay core-free": the authoritative Zod composition in core
|
|
10
|
+
* transitively depends on `delivery-review-contract`, per-section schemas, and
|
|
11
|
+
* other core-only modules that have not yet been migrated (INIT-058 Layer 4).
|
|
12
|
+
*
|
|
13
|
+
* Consumers that need a typed view of `workspace.yaml`'s `software_delivery`
|
|
14
|
+
* block can import from this file without crossing the package boundary.
|
|
15
|
+
* Drift against core's composition is enforced by
|
|
16
|
+
* `integration-tests/tests/config-parity.test.ts` — any field added to core's
|
|
17
|
+
* `LumenFlowConfig` must either be added here or explicitly waived in the
|
|
18
|
+
* drift-guard.
|
|
19
|
+
*
|
|
20
|
+
* @module config/schemas/lumenflow-config-schema
|
|
21
|
+
*/
|
|
22
|
+
import { DURATION_MS } from '@lumenflow/kernel/primitives/duration-utils';
|
|
23
|
+
import { LUMENFLOW_CLIENT_IDS } from '../../constants/client-ids.js';
|
|
24
|
+
import { DOCS_LAYOUT_PRESETS } from '../../constants/docs-layout-presets.js';
|
|
25
|
+
import { DEFAULT_MAX_ESLINT_WARNINGS, DEFAULT_MIN_COVERAGE, } from '../../constants/gate-constants.js';
|
|
26
|
+
const DEFAULT_LAYOUT = DOCS_LAYOUT_PRESETS.simple;
|
|
27
|
+
export const DIRECTORIES_DEFAULTS = {
|
|
28
|
+
appsWeb: '',
|
|
29
|
+
worktrees: 'worktrees/',
|
|
30
|
+
ai: 'ai/',
|
|
31
|
+
claude: '.claude/',
|
|
32
|
+
docs: 'docs/',
|
|
33
|
+
packages: 'packages/',
|
|
34
|
+
tools: 'tools/',
|
|
35
|
+
memoryBank: 'memory-bank/',
|
|
36
|
+
wuDir: `${DEFAULT_LAYOUT.tasks}/wu`,
|
|
37
|
+
initiativesDir: `${DEFAULT_LAYOUT.tasks}/initiatives`,
|
|
38
|
+
backlogPath: `${DEFAULT_LAYOUT.tasks}/backlog.md`,
|
|
39
|
+
statusPath: `${DEFAULT_LAYOUT.tasks}/status.md`,
|
|
40
|
+
skillsDir: '.claude/skills',
|
|
41
|
+
agentsDir: '.claude/agents',
|
|
42
|
+
adrDir: DEFAULT_LAYOUT.adrDir,
|
|
43
|
+
plansDir: `${DEFAULT_LAYOUT.operations}/plans`,
|
|
44
|
+
templatesDir: '.lumenflow/templates',
|
|
45
|
+
onboardingDir: DEFAULT_LAYOUT.onboarding,
|
|
46
|
+
completeGuidePath: DEFAULT_LAYOUT.completeGuidePath,
|
|
47
|
+
quickRefPath: DEFAULT_LAYOUT.quickRefPath,
|
|
48
|
+
startingPromptPath: DEFAULT_LAYOUT.startingPromptPath,
|
|
49
|
+
sizingGuidePath: DEFAULT_LAYOUT.sizingGuidePath,
|
|
50
|
+
governancePath: DEFAULT_LAYOUT.governancePath,
|
|
51
|
+
safeGitPath: 'scripts/safe-git',
|
|
52
|
+
};
|
|
53
|
+
export const STATE_PATHS_DEFAULTS = {
|
|
54
|
+
base: '.lumenflow',
|
|
55
|
+
stateDir: '.lumenflow/state',
|
|
56
|
+
archiveDir: '.lumenflow/archive',
|
|
57
|
+
stampsDir: '.lumenflow/stamps',
|
|
58
|
+
mergeLock: '.lumenflow/merge.lock',
|
|
59
|
+
telemetry: '.lumenflow/telemetry',
|
|
60
|
+
flowLog: '.lumenflow/flow.log',
|
|
61
|
+
sessions: '.lumenflow/sessions',
|
|
62
|
+
incidents: '.lumenflow/incidents',
|
|
63
|
+
commandsLog: '.lumenflow/commands.log',
|
|
64
|
+
eventArchival: {
|
|
65
|
+
archiveAfter: DURATION_MS.NINETY_DAYS,
|
|
66
|
+
keepArchives: true,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
export const GIT_DEFAULTS = {
|
|
70
|
+
mainBranch: 'main',
|
|
71
|
+
defaultRemote: 'origin',
|
|
72
|
+
laneBranchPrefix: 'lane/',
|
|
73
|
+
tempBranchPrefix: 'tmp/',
|
|
74
|
+
realGitPath: '/usr/bin/git',
|
|
75
|
+
maxBranchDrift: 20,
|
|
76
|
+
branchDriftWarning: 15,
|
|
77
|
+
branchDriftInfo: 10,
|
|
78
|
+
requireRemote: true,
|
|
79
|
+
agentBranchPatterns: [],
|
|
80
|
+
disableAgentPatternRegistry: false,
|
|
81
|
+
push_retry: {
|
|
82
|
+
enabled: true,
|
|
83
|
+
retries: 3,
|
|
84
|
+
min_delay_ms: 100,
|
|
85
|
+
max_delay_ms: 1000,
|
|
86
|
+
jitter: true,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
export const WU_DEFAULTS = {
|
|
90
|
+
idPattern: '^WU-\\d+$',
|
|
91
|
+
minDescriptionLength: 50,
|
|
92
|
+
maxCommitSubject: 100,
|
|
93
|
+
defaultPriority: 'P2',
|
|
94
|
+
defaultStatus: 'ready',
|
|
95
|
+
defaultType: 'feature',
|
|
96
|
+
brief: {
|
|
97
|
+
policyMode: 'auto',
|
|
98
|
+
freshnessMinutes: 1440,
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
export const WU_ID_DEFAULTS = {
|
|
102
|
+
width: 4,
|
|
103
|
+
strict: true,
|
|
104
|
+
prefix: 'WU-',
|
|
105
|
+
};
|
|
106
|
+
export const INITIATIVE_ID_DEFAULTS = {
|
|
107
|
+
width: 3,
|
|
108
|
+
strict: true,
|
|
109
|
+
prefix: 'INIT-',
|
|
110
|
+
};
|
|
111
|
+
export const GATES_DEFAULTS = {
|
|
112
|
+
maxEslintWarnings: DEFAULT_MAX_ESLINT_WARNINGS,
|
|
113
|
+
enableCoverage: true,
|
|
114
|
+
minCoverage: DEFAULT_MIN_COVERAGE,
|
|
115
|
+
};
|
|
116
|
+
export const UI_DEFAULTS = {
|
|
117
|
+
errorBoxWidth: 70,
|
|
118
|
+
statusPreviewLines: 5,
|
|
119
|
+
readinessBoxWidth: 50,
|
|
120
|
+
};
|
|
121
|
+
export const YAML_DEFAULTS = {
|
|
122
|
+
lineWidth: 100,
|
|
123
|
+
};
|
|
124
|
+
export const EXPERIMENTAL_DEFAULTS = {
|
|
125
|
+
context_validation: true,
|
|
126
|
+
validation_mode: 'warn',
|
|
127
|
+
show_next_steps: true,
|
|
128
|
+
recovery_command: true,
|
|
129
|
+
};
|
|
130
|
+
export const CLEANUP_DEFAULTS = {
|
|
131
|
+
trigger: 'on_done',
|
|
132
|
+
commit_message: 'chore: lumenflow state cleanup [skip ci]',
|
|
133
|
+
};
|
|
134
|
+
export const TELEMETRY_DEFAULTS = {
|
|
135
|
+
methodology: { enabled: false },
|
|
136
|
+
};
|
|
137
|
+
export const ESCALATION_DEFAULTS = {
|
|
138
|
+
email: 'escalation@example.com',
|
|
139
|
+
};
|
|
140
|
+
export const MEMORY_DEFAULTS = {
|
|
141
|
+
directory: 'memory-bank/',
|
|
142
|
+
sessionTtl: DURATION_MS.SEVEN_DAYS,
|
|
143
|
+
checkpointTtl: DURATION_MS.THIRTY_DAYS,
|
|
144
|
+
enableAutoCleanup: true,
|
|
145
|
+
delegation_context_max_size: 4096,
|
|
146
|
+
};
|
|
147
|
+
export const AGENTS_DEFAULTS = {
|
|
148
|
+
defaultClient: LUMENFLOW_CLIENT_IDS.CLAUDE_CODE,
|
|
149
|
+
};
|
|
150
|
+
export const CLOUD_DEFAULTS = {
|
|
151
|
+
auto_detect: false,
|
|
152
|
+
env_signals: [],
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Top-level defaults for `LumenflowConfig`. Matches the `.parse({})` output of
|
|
156
|
+
* `core`'s `LumenFlowConfigSchema` for every field exposed here. The drift-guard
|
|
157
|
+
* in `integration-tests/tests/config-parity.test.ts` walks these keys and
|
|
158
|
+
* asserts field-for-field parity with core's output.
|
|
159
|
+
*/
|
|
160
|
+
export const LUMENFLOW_CONFIG_DEFAULTS = {
|
|
161
|
+
version: '1.0.0',
|
|
162
|
+
directories: DIRECTORIES_DEFAULTS,
|
|
163
|
+
state: STATE_PATHS_DEFAULTS,
|
|
164
|
+
git: GIT_DEFAULTS,
|
|
165
|
+
wu: WU_DEFAULTS,
|
|
166
|
+
wuId: WU_ID_DEFAULTS,
|
|
167
|
+
initiativeId: INITIATIVE_ID_DEFAULTS,
|
|
168
|
+
gates: GATES_DEFAULTS,
|
|
169
|
+
memory: MEMORY_DEFAULTS,
|
|
170
|
+
ui: UI_DEFAULTS,
|
|
171
|
+
yaml: YAML_DEFAULTS,
|
|
172
|
+
agents: AGENTS_DEFAULTS,
|
|
173
|
+
experimental: EXPERIMENTAL_DEFAULTS,
|
|
174
|
+
cleanup: CLEANUP_DEFAULTS,
|
|
175
|
+
telemetry: TELEMETRY_DEFAULTS,
|
|
176
|
+
cloud: CLOUD_DEFAULTS,
|
|
177
|
+
escalation: ESCALATION_DEFAULTS,
|
|
178
|
+
package_manager: 'pnpm',
|
|
179
|
+
test_runner: 'vitest',
|
|
180
|
+
build_command: 'pnpm build',
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=lumenflow-config-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lumenflow-config-schema.js","sourceRoot":"","sources":["../../../../src/config/schemas/lumenflow-config-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type DirectoriesConfig, type EventArchivalConfig, type LumenflowConfig, type StatePathsConfig } from './schemas/lumenflow-config-schema-types.js';
|
|
2
|
+
export type SoftwareDeliveryConfig = Record<string, unknown>;
|
|
3
|
+
/**
|
|
4
|
+
* Read `workspace.yaml` relative to the given `cwd`'s project root and return
|
|
5
|
+
* the `software_delivery` section (or an empty object if absent/empty).
|
|
6
|
+
*
|
|
7
|
+
* @throws If the project root cannot be located or the YAML is malformed.
|
|
8
|
+
*/
|
|
9
|
+
export declare function readSoftwareDeliveryConfig(cwd: string): SoftwareDeliveryConfig;
|
|
10
|
+
/**
|
|
11
|
+
* Re-export pack-local directory/state-path type aliases. These mirror
|
|
12
|
+
* `@lumenflow/core/schemas/directories-config`; drift is enforced by the
|
|
13
|
+
* integration-tests parity tests.
|
|
14
|
+
*/
|
|
15
|
+
export type WorkspaceDirectories = DirectoriesConfig;
|
|
16
|
+
export type WorkspaceStatePaths = StatePathsConfig;
|
|
17
|
+
export type WorkspaceEventArchivalConfig = EventArchivalConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Return the typed directory map for the workspace rooted at `cwd`.
|
|
20
|
+
*
|
|
21
|
+
* User-provided values in `software_delivery.directories` are merged over the
|
|
22
|
+
* built-in defaults. Unknown keys in the user's YAML are ignored by the return
|
|
23
|
+
* type but pass through the spread — the authoritative schema validation still
|
|
24
|
+
* lives in core's `getConfig()` pathway.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getDirectories(cwd: string): WorkspaceDirectories;
|
|
27
|
+
/**
|
|
28
|
+
* Return the typed state-paths map for the workspace rooted at `cwd`.
|
|
29
|
+
*
|
|
30
|
+
* User-provided values in `software_delivery.state` are merged over the
|
|
31
|
+
* built-in defaults. `eventArchival` is merged as a nested object so a partial
|
|
32
|
+
* override (e.g. only `archiveAfter`) preserves the remaining defaults.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getStatePaths(cwd: string): WorkspaceStatePaths;
|
|
35
|
+
/**
|
|
36
|
+
* Return the fully-typed pack-local `LumenflowConfig` for the workspace rooted
|
|
37
|
+
* at `cwd`.
|
|
38
|
+
*
|
|
39
|
+
* Mirrors the shape produced by `@lumenflow/core`'s
|
|
40
|
+
* `getConfig({ projectRoot: cwd }).parse({})` for every field exposed on
|
|
41
|
+
* `LumenflowConfig`. Drift from core is enforced by
|
|
42
|
+
* `integration-tests/tests/config-parity.test.ts`.
|
|
43
|
+
*
|
|
44
|
+
* Behaviour parity with core:
|
|
45
|
+
* - Reads `workspace.yaml` relative to `cwd`'s project root via the kernel
|
|
46
|
+
* `findProjectRoot` primitive.
|
|
47
|
+
* - Returns defaults when `workspace.yaml` is absent or lacks a
|
|
48
|
+
* `software_delivery` block (graceful fallback, matches core's
|
|
49
|
+
* non-`strictWorkspace` mode).
|
|
50
|
+
* - User-provided values are spread over defaults at the section level, with
|
|
51
|
+
* nested merges for sections that have nested objects (state.eventArchival,
|
|
52
|
+
* git.push_retry, wu.brief, telemetry.methodology).
|
|
53
|
+
*/
|
|
54
|
+
export declare function getConfig(cwd: string): LumenflowConfig;
|
|
55
|
+
export type { AgentsConfig, CleanupConfig, CloudConfig, DirectoriesConfig, EscalationConfig, EventArchivalConfig, ExperimentalConfig, GatesConfig, GitConfig, IdFormatConfig, LumenflowConfig, MemoryConfig, PackageManager, PushRetryConfig, StatePathsConfig, TelemetryConfig, TestRunner, UiConfig, WuConfig, YamlConfig, } from './schemas/lumenflow-config-schema-types.js';
|
|
56
|
+
//# sourceMappingURL=workspace-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-reader.d.ts","sourceRoot":"","sources":["../../../src/config/workspace-reader.ts"],"names":[],"mappings":"AAmBA,OAAO,EAqBL,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EAKxB,KAAK,eAAe,EAIpB,KAAK,gBAAgB,EAMtB,MAAM,4CAA4C,CAAC;AAEpD,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7D;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAS9E;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AACrD,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACnD,MAAM,MAAM,4BAA4B,GAAG,mBAAmB,CAAC;AAW/D;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAGhE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAe9D;AA4DD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAiDtD;AA6BD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,MAAM,4CAA4C,CAAC"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Pack-side workspace.yaml reader.
|
|
5
|
+
*
|
|
6
|
+
* Locates the project root (via kernel primitive) and returns the
|
|
7
|
+
* `software_delivery` section of `workspace.yaml`. Loose typing on purpose —
|
|
8
|
+
* the authoritative schema lives in `@lumenflow/core`; this helper exists to
|
|
9
|
+
* keep the pack core-free for Option 1b prep work (INIT-058).
|
|
10
|
+
*/
|
|
11
|
+
import { readFileSync } from 'node:fs';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { findProjectRoot } from '@lumenflow/kernel/primitives/project-root';
|
|
14
|
+
import { WORKSPACE_CONFIG_FILE_NAME } from '@lumenflow/kernel/primitives/workspace-constants';
|
|
15
|
+
import { parse as parseYaml } from 'yaml';
|
|
16
|
+
import { AGENTS_DEFAULTS, CLEANUP_DEFAULTS, CLOUD_DEFAULTS, DIRECTORIES_DEFAULTS, ESCALATION_DEFAULTS, EXPERIMENTAL_DEFAULTS, GATES_DEFAULTS, GIT_DEFAULTS, INITIATIVE_ID_DEFAULTS, LUMENFLOW_CONFIG_DEFAULTS, MEMORY_DEFAULTS, STATE_PATHS_DEFAULTS, TELEMETRY_DEFAULTS, UI_DEFAULTS, WU_DEFAULTS, WU_ID_DEFAULTS, YAML_DEFAULTS, } from './schemas/lumenflow-config-schema-types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Read `workspace.yaml` relative to the given `cwd`'s project root and return
|
|
19
|
+
* the `software_delivery` section (or an empty object if absent/empty).
|
|
20
|
+
*
|
|
21
|
+
* @throws If the project root cannot be located or the YAML is malformed.
|
|
22
|
+
*/
|
|
23
|
+
export function readSoftwareDeliveryConfig(cwd) {
|
|
24
|
+
const root = findProjectRoot(cwd);
|
|
25
|
+
const raw = readFileSync(join(root, WORKSPACE_CONFIG_FILE_NAME), 'utf8');
|
|
26
|
+
const doc = parseYaml(raw);
|
|
27
|
+
const section = doc?.['software_delivery'];
|
|
28
|
+
if (section && typeof section === 'object' && !Array.isArray(section)) {
|
|
29
|
+
return section;
|
|
30
|
+
}
|
|
31
|
+
return {};
|
|
32
|
+
}
|
|
33
|
+
function readObjectRecord(cwd, key) {
|
|
34
|
+
const section = readSoftwareDeliveryConfig(cwd);
|
|
35
|
+
const value = section[key];
|
|
36
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Return the typed directory map for the workspace rooted at `cwd`.
|
|
43
|
+
*
|
|
44
|
+
* User-provided values in `software_delivery.directories` are merged over the
|
|
45
|
+
* built-in defaults. Unknown keys in the user's YAML are ignored by the return
|
|
46
|
+
* type but pass through the spread — the authoritative schema validation still
|
|
47
|
+
* lives in core's `getConfig()` pathway.
|
|
48
|
+
*/
|
|
49
|
+
export function getDirectories(cwd) {
|
|
50
|
+
const overrides = readObjectRecord(cwd, 'directories');
|
|
51
|
+
return { ...DIRECTORIES_DEFAULTS, ...overrides };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Return the typed state-paths map for the workspace rooted at `cwd`.
|
|
55
|
+
*
|
|
56
|
+
* User-provided values in `software_delivery.state` are merged over the
|
|
57
|
+
* built-in defaults. `eventArchival` is merged as a nested object so a partial
|
|
58
|
+
* override (e.g. only `archiveAfter`) preserves the remaining defaults.
|
|
59
|
+
*/
|
|
60
|
+
export function getStatePaths(cwd) {
|
|
61
|
+
const overrides = readObjectRecord(cwd, 'state');
|
|
62
|
+
const { eventArchival: overrideArchival, ...flatOverrides } = overrides;
|
|
63
|
+
const eventArchivalOverrides = overrideArchival && typeof overrideArchival === 'object' && !Array.isArray(overrideArchival)
|
|
64
|
+
? overrideArchival
|
|
65
|
+
: {};
|
|
66
|
+
return {
|
|
67
|
+
...STATE_PATHS_DEFAULTS,
|
|
68
|
+
...flatOverrides,
|
|
69
|
+
eventArchival: {
|
|
70
|
+
...STATE_PATHS_DEFAULTS.eventArchival,
|
|
71
|
+
...eventArchivalOverrides,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function mergeGit(overrides) {
|
|
76
|
+
if (!overrides)
|
|
77
|
+
return { ...GIT_DEFAULTS, push_retry: { ...GIT_DEFAULTS.push_retry } };
|
|
78
|
+
const { push_retry: overridePushRetry, ...flatOverrides } = overrides;
|
|
79
|
+
const pushRetryOverrides = overridePushRetry && typeof overridePushRetry === 'object' && !Array.isArray(overridePushRetry)
|
|
80
|
+
? overridePushRetry
|
|
81
|
+
: {};
|
|
82
|
+
return {
|
|
83
|
+
...GIT_DEFAULTS,
|
|
84
|
+
...flatOverrides,
|
|
85
|
+
push_retry: {
|
|
86
|
+
...GIT_DEFAULTS.push_retry,
|
|
87
|
+
...pushRetryOverrides,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function mergeWu(overrides) {
|
|
92
|
+
if (!overrides)
|
|
93
|
+
return { ...WU_DEFAULTS, brief: { ...WU_DEFAULTS.brief } };
|
|
94
|
+
const { brief: overrideBrief, ...flatOverrides } = overrides;
|
|
95
|
+
const briefOverrides = overrideBrief && typeof overrideBrief === 'object' && !Array.isArray(overrideBrief)
|
|
96
|
+
? overrideBrief
|
|
97
|
+
: {};
|
|
98
|
+
return {
|
|
99
|
+
...WU_DEFAULTS,
|
|
100
|
+
...flatOverrides,
|
|
101
|
+
brief: {
|
|
102
|
+
...WU_DEFAULTS.brief,
|
|
103
|
+
...briefOverrides,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function mergeSimple(defaults, overrides) {
|
|
108
|
+
if (overrides && typeof overrides === 'object' && !Array.isArray(overrides)) {
|
|
109
|
+
return { ...defaults, ...overrides };
|
|
110
|
+
}
|
|
111
|
+
return { ...defaults };
|
|
112
|
+
}
|
|
113
|
+
function mergeTelemetry(overrides) {
|
|
114
|
+
if (!overrides) {
|
|
115
|
+
return { methodology: { ...TELEMETRY_DEFAULTS.methodology } };
|
|
116
|
+
}
|
|
117
|
+
const methodology = overrides.methodology && typeof overrides.methodology === 'object'
|
|
118
|
+
? { ...TELEMETRY_DEFAULTS.methodology, ...overrides.methodology }
|
|
119
|
+
: { ...TELEMETRY_DEFAULTS.methodology };
|
|
120
|
+
return { methodology };
|
|
121
|
+
}
|
|
122
|
+
function pickEnum(value, allowed, fallback) {
|
|
123
|
+
return typeof value === 'string' && allowed.includes(value)
|
|
124
|
+
? value
|
|
125
|
+
: fallback;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Return the fully-typed pack-local `LumenflowConfig` for the workspace rooted
|
|
129
|
+
* at `cwd`.
|
|
130
|
+
*
|
|
131
|
+
* Mirrors the shape produced by `@lumenflow/core`'s
|
|
132
|
+
* `getConfig({ projectRoot: cwd }).parse({})` for every field exposed on
|
|
133
|
+
* `LumenflowConfig`. Drift from core is enforced by
|
|
134
|
+
* `integration-tests/tests/config-parity.test.ts`.
|
|
135
|
+
*
|
|
136
|
+
* Behaviour parity with core:
|
|
137
|
+
* - Reads `workspace.yaml` relative to `cwd`'s project root via the kernel
|
|
138
|
+
* `findProjectRoot` primitive.
|
|
139
|
+
* - Returns defaults when `workspace.yaml` is absent or lacks a
|
|
140
|
+
* `software_delivery` block (graceful fallback, matches core's
|
|
141
|
+
* non-`strictWorkspace` mode).
|
|
142
|
+
* - User-provided values are spread over defaults at the section level, with
|
|
143
|
+
* nested merges for sections that have nested objects (state.eventArchival,
|
|
144
|
+
* git.push_retry, wu.brief, telemetry.methodology).
|
|
145
|
+
*/
|
|
146
|
+
export function getConfig(cwd) {
|
|
147
|
+
let section;
|
|
148
|
+
try {
|
|
149
|
+
section = readSoftwareDeliveryConfig(cwd);
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
// Graceful fallback — matches core's non-strictWorkspace behaviour when
|
|
153
|
+
// workspace.yaml is absent or unreadable.
|
|
154
|
+
return cloneDefaults();
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
version: typeof section['version'] === 'string' ? section['version'] : '1.0.0',
|
|
158
|
+
directories: getDirectories(cwd),
|
|
159
|
+
state: getStatePaths(cwd),
|
|
160
|
+
git: mergeGit(section['git']),
|
|
161
|
+
wu: mergeWu(section['wu']),
|
|
162
|
+
wuId: mergeSimple(WU_ID_DEFAULTS, section['wuId']),
|
|
163
|
+
initiativeId: mergeSimple(INITIATIVE_ID_DEFAULTS, section['initiativeId']),
|
|
164
|
+
gates: mergeSimple(GATES_DEFAULTS, section['gates']),
|
|
165
|
+
memory: mergeSimple(MEMORY_DEFAULTS, section['memory']),
|
|
166
|
+
ui: mergeSimple(UI_DEFAULTS, section['ui']),
|
|
167
|
+
yaml: mergeSimple(YAML_DEFAULTS, section['yaml']),
|
|
168
|
+
agents: mergeSimple(AGENTS_DEFAULTS, section['agents']),
|
|
169
|
+
experimental: mergeSimple(EXPERIMENTAL_DEFAULTS, section['experimental']),
|
|
170
|
+
cleanup: mergeSimple(CLEANUP_DEFAULTS, section['cleanup']),
|
|
171
|
+
telemetry: mergeTelemetry(section['telemetry']),
|
|
172
|
+
methodology: section['methodology'] && typeof section['methodology'] === 'object'
|
|
173
|
+
? section['methodology']
|
|
174
|
+
: undefined,
|
|
175
|
+
cloud: mergeSimple(CLOUD_DEFAULTS, section['cloud']),
|
|
176
|
+
lanes: section['lanes'] && typeof section['lanes'] === 'object'
|
|
177
|
+
? section['lanes']
|
|
178
|
+
: undefined,
|
|
179
|
+
escalation: mergeSimple(ESCALATION_DEFAULTS, section['escalation']),
|
|
180
|
+
package_manager: pickEnum(section['package_manager'], ['pnpm', 'npm', 'yarn', 'bun'], 'pnpm'),
|
|
181
|
+
test_runner: pickEnum(section['test_runner'], ['vitest', 'jest', 'mocha'], 'vitest'),
|
|
182
|
+
build_command: typeof section['build_command'] === 'string' ? section['build_command'] : 'pnpm build',
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
function cloneDefaults() {
|
|
186
|
+
return {
|
|
187
|
+
...LUMENFLOW_CONFIG_DEFAULTS,
|
|
188
|
+
directories: { ...DIRECTORIES_DEFAULTS },
|
|
189
|
+
state: {
|
|
190
|
+
...STATE_PATHS_DEFAULTS,
|
|
191
|
+
eventArchival: { ...STATE_PATHS_DEFAULTS.eventArchival },
|
|
192
|
+
},
|
|
193
|
+
git: { ...GIT_DEFAULTS, push_retry: { ...GIT_DEFAULTS.push_retry } },
|
|
194
|
+
wu: { ...WU_DEFAULTS, brief: { ...WU_DEFAULTS.brief } },
|
|
195
|
+
wuId: { ...WU_ID_DEFAULTS },
|
|
196
|
+
initiativeId: { ...INITIATIVE_ID_DEFAULTS },
|
|
197
|
+
gates: { ...GATES_DEFAULTS },
|
|
198
|
+
memory: { ...MEMORY_DEFAULTS },
|
|
199
|
+
ui: { ...UI_DEFAULTS },
|
|
200
|
+
yaml: { ...YAML_DEFAULTS },
|
|
201
|
+
agents: { ...AGENTS_DEFAULTS },
|
|
202
|
+
experimental: { ...EXPERIMENTAL_DEFAULTS },
|
|
203
|
+
cleanup: { ...CLEANUP_DEFAULTS },
|
|
204
|
+
telemetry: { methodology: { ...TELEMETRY_DEFAULTS.methodology } },
|
|
205
|
+
cloud: { ...CLOUD_DEFAULTS, env_signals: [...CLOUD_DEFAULTS.env_signals] },
|
|
206
|
+
escalation: { ...ESCALATION_DEFAULTS },
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=workspace-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-reader.js","sourceRoot":"","sources":["../../../src/config/workspace-reader.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AAC9F,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,GAqBd,MAAM,4CAA4C,CAAC;AAIpD;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,0BAA0B,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAA+C,CAAC;IACzE,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC3C,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,OAAiC,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAWD,SAAS,gBAAgB,CAAC,GAAW,EAAE,GAAW;IAChD,MAAM,OAAO,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,KAAgC,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAkC,CAAC;IACxF,OAAO,EAAE,GAAG,oBAAoB,EAAE,GAAG,SAAS,EAAE,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAiC,CAAC;IACjF,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,aAAa,EAAE,GAAG,SAAS,CAAC;IACxE,MAAM,sBAAsB,GAC1B,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC1F,CAAC,CAAE,gBAA0D;QAC7D,CAAC,CAAC,EAAE,CAAC;IACT,OAAO;QACL,GAAG,oBAAoB;QACvB,GAAG,aAAa;QAChB,aAAa,EAAE;YACb,GAAG,oBAAoB,CAAC,aAAa;YACrC,GAAG,sBAAsB;SAC1B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,SAAyC;IACzD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,YAAY,EAAE,UAAU,EAAE,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;IACvF,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE,GAAG,SAAS,CAAC;IACtE,MAAM,kBAAkB,GACtB,iBAAiB,IAAI,OAAO,iBAAiB,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC7F,CAAC,CAAE,iBAA8C;QACjD,CAAC,CAAC,EAAE,CAAC;IACT,OAAO;QACL,GAAG,YAAY;QACf,GAAG,aAAa;QAChB,UAAU,EAAE;YACV,GAAG,YAAY,CAAC,UAAU;YAC1B,GAAG,kBAAkB;SACtB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,SAAwC;IACvD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC;IAC3E,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,GAAG,SAAS,CAAC;IAC7D,MAAM,cAAc,GAClB,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QACjF,CAAC,CAAE,aAA4C;QAC/C,CAAC,CAAC,EAAE,CAAC;IACT,OAAO;QACL,GAAG,WAAW;QACd,GAAG,aAAa;QAChB,KAAK,EAAE;YACL,GAAG,WAAW,CAAC,KAAK;YACpB,GAAG,cAAc;SAClB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAI,QAAW,EAAE,SAAkB;IACrD,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5E,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAI,SAAoB,EAAO,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,cAAc,CAAC,SAA+C;IACrE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,WAAW,EAAE,EAAE,GAAG,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC;IAChE,CAAC;IACD,MAAM,WAAW,GACf,SAAS,CAAC,WAAW,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK,QAAQ;QAChE,CAAC,CAAC,EAAE,GAAG,kBAAkB,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE;QACjE,CAAC,CAAC,EAAE,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,QAAQ,CAAmB,KAAc,EAAE,OAAqB,EAAE,QAAW;IACpF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChF,CAAC,CAAE,KAAW;QACd,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,OAA+B,CAAC;IACpC,IAAI,CAAC;QACH,OAAO,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,0CAA0C;QAC1C,OAAO,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO;QAC9E,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC;QAChC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC;QACzB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAmC,CAAC;QAC/D,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAkC,CAAC;QAC3D,IAAI,EAAE,WAAW,CAAiB,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAClE,YAAY,EAAE,WAAW,CAAiB,sBAAsB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1F,KAAK,EAAE,WAAW,CAAc,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,EAAE,WAAW,CAAe,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,EAAE,EAAE,WAAW,CAAW,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,EAAE,WAAW,CAAa,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,EAAE,WAAW,CAAe,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,YAAY,EAAE,WAAW,CAAqB,qBAAqB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAC7F,OAAO,EAAE,WAAW,CAAgB,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACzE,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW,CAAyC,CAAC;QACvF,WAAW,EACT,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,QAAQ;YAClE,CAAC,CAAE,OAAO,CAAC,aAAa,CAA6B;YACrD,CAAC,CAAC,SAAS;QACf,KAAK,EAAE,WAAW,CAAc,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACjE,KAAK,EACH,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ;YACtD,CAAC,CAAE,OAAO,CAAC,OAAO,CAA6B;YAC/C,CAAC,CAAC,SAAS;QACf,UAAU,EAAE,WAAW,CAAmB,mBAAmB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QACrF,eAAe,EAAE,QAAQ,CACvB,OAAO,CAAC,iBAAiB,CAAC,EAC1B,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAU,EACvC,MAAM,CACP;QACD,WAAW,EAAE,QAAQ,CACnB,OAAO,CAAC,aAAa,CAAC,EACtB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAU,EACpC,QAAQ,CACT;QACD,aAAa,EACX,OAAO,OAAO,CAAC,eAAe,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,YAAY;KACzF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,OAAO;QACL,GAAG,yBAAyB;QAC5B,WAAW,EAAE,EAAE,GAAG,oBAAoB,EAAE;QACxC,KAAK,EAAE;YACL,GAAG,oBAAoB;YACvB,aAAa,EAAE,EAAE,GAAG,oBAAoB,CAAC,aAAa,EAAE;SACzD;QACD,GAAG,EAAE,EAAE,GAAG,YAAY,EAAE,UAAU,EAAE,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE;QACpE,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,EAAE;QACvD,IAAI,EAAE,EAAE,GAAG,cAAc,EAAE;QAC3B,YAAY,EAAE,EAAE,GAAG,sBAAsB,EAAE;QAC3C,KAAK,EAAE,EAAE,GAAG,cAAc,EAAE;QAC5B,MAAM,EAAE,EAAE,GAAG,eAAe,EAAE;QAC9B,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE;QACtB,IAAI,EAAE,EAAE,GAAG,aAAa,EAAE;QAC1B,MAAM,EAAE,EAAE,GAAG,eAAe,EAAE;QAC9B,YAAY,EAAE,EAAE,GAAG,qBAAqB,EAAE;QAC1C,OAAO,EAAE,EAAE,GAAG,gBAAgB,EAAE;QAChC,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,GAAG,kBAAkB,CAAC,WAAW,EAAE,EAAE;QACjE,KAAK,EAAE,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,EAAE;QAC1E,UAAU,EAAE,EAAE,GAAG,mBAAmB,EAAE;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backlog Parsing Patterns
|
|
3
|
+
*
|
|
4
|
+
* Centralizes patterns for parsing status.md and backlog.md files.
|
|
5
|
+
* Used by lane-checker.ts and related backlog utilities.
|
|
6
|
+
*/
|
|
7
|
+
/** Markdown section header patterns for In Progress section */
|
|
8
|
+
export declare const IN_PROGRESS_HEADERS: string[];
|
|
9
|
+
/**
|
|
10
|
+
* Pattern for extracting WU ID from backlog links.
|
|
11
|
+
* Matches: [WU-123 — Title text](path/to/file.yaml)
|
|
12
|
+
* Captures: WU ID (e.g., "WU-123")
|
|
13
|
+
*/
|
|
14
|
+
export declare const WU_LINK_PATTERN: RegExp;
|
|
15
|
+
/**
|
|
16
|
+
* Check if a line matches an In Progress section header.
|
|
17
|
+
* @param {string} line - Line to check (will be trimmed and lowercased)
|
|
18
|
+
* @returns {boolean} True if line is an In Progress header
|
|
19
|
+
*/
|
|
20
|
+
export declare function isInProgressHeader(line: string): boolean;
|
|
21
|
+
//# sourceMappingURL=backlog-patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog-patterns.d.ts","sourceRoot":"","sources":["../../../src/constants/backlog-patterns.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,UAA0C,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAA6C,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,WAK9C"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Backlog Parsing Patterns
|
|
5
|
+
*
|
|
6
|
+
* Centralizes patterns for parsing status.md and backlog.md files.
|
|
7
|
+
* Used by lane-checker.ts and related backlog utilities.
|
|
8
|
+
*/
|
|
9
|
+
/** Markdown section header patterns for In Progress section */
|
|
10
|
+
export const IN_PROGRESS_HEADERS = ['## in progress', '## 🔧 in progress'];
|
|
11
|
+
/**
|
|
12
|
+
* Pattern for extracting WU ID from backlog links.
|
|
13
|
+
* Matches: [WU-123 — Title text](path/to/file.yaml)
|
|
14
|
+
* Captures: WU ID (e.g., "WU-123")
|
|
15
|
+
*/
|
|
16
|
+
export const WU_LINK_PATTERN = /\[([A-Z]+-\d+)\s*—\s*[^\]]+\]\([^)]+\)/gi;
|
|
17
|
+
/**
|
|
18
|
+
* Check if a line matches an In Progress section header.
|
|
19
|
+
* @param {string} line - Line to check (will be trimmed and lowercased)
|
|
20
|
+
* @returns {boolean} True if line is an In Progress header
|
|
21
|
+
*/
|
|
22
|
+
export function isInProgressHeader(line) {
|
|
23
|
+
const normalized = line.trim().toLowerCase();
|
|
24
|
+
return IN_PROGRESS_HEADERS.some((header) => normalized === header || normalized.startsWith(header));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=backlog-patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog-patterns.js","sourceRoot":"","sources":["../../../src/constants/backlog-patterns.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;GAKG;AAEH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,0CAA0C,CAAC;AAE1E;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,mBAAmB,CAAC,IAAI,CAC7B,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CACnE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical client IDs for client-specific integrations and config keys.
|
|
3
|
+
*
|
|
4
|
+
* Kept in a standalone module so config schema can depend on these
|
|
5
|
+
* constants without importing context/hook modules.
|
|
6
|
+
*/
|
|
7
|
+
export declare const LUMENFLOW_CLIENT_IDS: {
|
|
8
|
+
readonly CLAUDE_CODE: "claude-code";
|
|
9
|
+
readonly CODEX_CLI: "codex-cli";
|
|
10
|
+
readonly CURSOR: "cursor";
|
|
11
|
+
readonly GEMINI_CLI: "gemini-cli";
|
|
12
|
+
readonly WINDSURF: "windsurf";
|
|
13
|
+
};
|
|
14
|
+
/** Type for supported client IDs with integration support */
|
|
15
|
+
export type LumenflowClientId = (typeof LUMENFLOW_CLIENT_IDS)[keyof typeof LUMENFLOW_CLIENT_IDS];
|
|
16
|
+
//# sourceMappingURL=client-ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-ids.d.ts","sourceRoot":"","sources":["../../../src/constants/client-ids.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;CAMvB,CAAC;AAEX,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Canonical client IDs for client-specific integrations and config keys.
|
|
5
|
+
*
|
|
6
|
+
* Kept in a standalone module so config schema can depend on these
|
|
7
|
+
* constants without importing context/hook modules.
|
|
8
|
+
*/
|
|
9
|
+
export const LUMENFLOW_CLIENT_IDS = {
|
|
10
|
+
CLAUDE_CODE: 'claude-code',
|
|
11
|
+
CODEX_CLI: 'codex-cli',
|
|
12
|
+
CURSOR: 'cursor',
|
|
13
|
+
GEMINI_CLI: 'gemini-cli',
|
|
14
|
+
WINDSURF: 'windsurf',
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=client-ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-ids.js","sourceRoot":"","sources":["../../../src/constants/client-ids.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;CACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-contract.d.ts","sourceRoot":"","sources":["../../../src/constants/config-contract.ts"],"names":[],"mappings":"AAMA,cAAc,kDAAkD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
// WU-2681 (INIT-058 L2e): Shim — real module lives in @lumenflow/kernel/primitives/workspace-constants.
|
|
4
|
+
// Re-export preserves the `@lumenflow/packs-software-delivery/constants/config-contract` subpath
|
|
5
|
+
// for existing consumers (including core shims) until Layer 7 removes the shim.
|
|
6
|
+
export * from '@lumenflow/kernel/primitives/workspace-constants';
|
|
7
|
+
//# sourceMappingURL=config-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-contract.js","sourceRoot":"","sources":["../../../src/constants/config-contract.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC,wGAAwG;AACxG,iGAAiG;AACjG,gFAAgF;AAChF,cAAc,kDAAkD,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare const DOCS_LAYOUT_PRESETS: {
|
|
2
|
+
readonly simple: {
|
|
3
|
+
readonly operations: string;
|
|
4
|
+
readonly tasks: string;
|
|
5
|
+
readonly adrDir: string;
|
|
6
|
+
readonly onboarding: string;
|
|
7
|
+
readonly quickRefLink: `${string}/quick-ref-commands.md`;
|
|
8
|
+
readonly completeGuidePath: `${string}/lumenflow-complete.md`;
|
|
9
|
+
readonly quickRefPath: `${string}/quick-ref-commands.md`;
|
|
10
|
+
readonly startingPromptPath: `${string}/starting-prompt.md`;
|
|
11
|
+
readonly sizingGuidePath: `${string}/wu-sizing-guide.md`;
|
|
12
|
+
readonly governancePath: `${string}/governance/project-governance.md`;
|
|
13
|
+
};
|
|
14
|
+
readonly arc42: {
|
|
15
|
+
readonly operations: string;
|
|
16
|
+
readonly tasks: string;
|
|
17
|
+
readonly adrDir: string;
|
|
18
|
+
readonly onboarding: string;
|
|
19
|
+
readonly quickRefLink: `${string}/quick-ref-commands.md`;
|
|
20
|
+
readonly completeGuidePath: `${string}/lumenflow-complete.md`;
|
|
21
|
+
readonly quickRefPath: `${string}/quick-ref-commands.md`;
|
|
22
|
+
readonly startingPromptPath: `${string}/starting-prompt.md`;
|
|
23
|
+
readonly sizingGuidePath: `${string}/wu-sizing-guide.md`;
|
|
24
|
+
readonly governancePath: `${string}/governance/project-governance.md`;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export type DocsLayoutType = keyof typeof DOCS_LAYOUT_PRESETS;
|
|
28
|
+
export type DocsLayoutPreset = (typeof DOCS_LAYOUT_PRESETS)[DocsLayoutType];
|
|
29
|
+
export declare const DEFAULT_DOCS_LAYOUT: DocsLayoutType;
|
|
30
|
+
export declare function getDocsLayoutPreset(layout: DocsLayoutType): DocsLayoutPreset;
|
|
31
|
+
//# sourceMappingURL=docs-layout-presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-layout-presets.d.ts","sourceRoot":"","sources":["../../../src/constants/docs-layout-presets.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;CAGtB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,mBAAmB,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,cAAc,CAAC,CAAC;AAE5E,eAAO,MAAM,mBAAmB,EAAE,cAAyB,CAAC;AAE5D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAE5E"}
|