@lumenflow/cli 3.5.1 → 3.6.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/config-get.js +61 -20
- package/dist/config-get.js.map +1 -1
- package/dist/config-set.js +469 -70
- package/dist/config-set.js.map +1 -1
- package/dist/release.js +193 -223
- package/dist/release.js.map +1 -1
- package/dist/workspace-init.js +35 -3
- package/dist/workspace-init.js.map +1 -1
- package/dist/wu-brief.js +1 -1
- package/dist/wu-brief.js.map +1 -1
- package/dist/wu-claim.js +3 -2
- package/dist/wu-claim.js.map +1 -1
- package/dist/wu-create.js +74 -10
- package/dist/wu-create.js.map +1 -1
- package/dist/wu-delete.js +3 -3
- package/dist/wu-delete.js.map +1 -1
- package/dist/wu-done-already-merged.js +154 -0
- package/dist/wu-done-already-merged.js.map +1 -0
- package/dist/wu-done-git-ops.js +288 -0
- package/dist/wu-done-git-ops.js.map +1 -0
- package/dist/wu-done-policies.js +268 -0
- package/dist/wu-done-policies.js.map +1 -0
- package/dist/wu-done.js +64 -645
- package/dist/wu-done.js.map +1 -1
- package/dist/wu-edit.js +2 -2
- package/dist/wu-edit.js.map +1 -1
- package/dist/wu-repair.js +26 -8
- package/dist/wu-repair.js.map +1 -1
- package/dist/wu-spawn-prompt-builders.js.map +1 -1
- package/dist/wu-spawn-strategy-resolver.js +66 -24
- package/dist/wu-spawn-strategy-resolver.js.map +1 -1
- package/package.json +7 -7
- package/packs/software-delivery/manifest-schema.ts +2 -0
- package/packs/software-delivery/manifest.ts +1 -0
- package/packs/software-delivery/manifest.yaml +1 -0
- package/templates/core/ai/onboarding/agent-invocation-guide.md.template +16 -2
- package/templates/core/ai/onboarding/quick-ref-commands.md.template +2 -1
- package/templates/core/ai/onboarding/starting-prompt.md.template +13 -2
- package/templates/vendors/claude/.claude/skills/initiative-management/SKILL.md.template +9 -6
- package/templates/vendors/claude/.claude/skills/multi-agent-coordination/SKILL.md.template +6 -0
- package/templates/vendors/claude/.claude/skills/orchestration/SKILL.md.template +11 -5
package/dist/config-get.js
CHANGED
|
@@ -3,29 +3,73 @@
|
|
|
3
3
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
4
4
|
/**
|
|
5
5
|
* @file config-get.ts
|
|
6
|
-
* WU-
|
|
6
|
+
* WU-2186: Safe config:get CLI command for reading workspace.yaml values
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Uses routeConfigKey for consistent routing with config:set.
|
|
9
|
+
* All keys must be fully qualified from workspace root.
|
|
10
|
+
* No implicit software_delivery prefixing or fallback behavior.
|
|
10
11
|
*
|
|
11
12
|
* Usage:
|
|
12
13
|
* pnpm config:get --key software_delivery.methodology.testing
|
|
13
14
|
* pnpm config:get --key software_delivery.gates.minCoverage
|
|
15
|
+
* pnpm config:get --key control_plane.sync_interval
|
|
14
16
|
*/
|
|
15
17
|
import path from 'node:path';
|
|
16
18
|
import { existsSync, readFileSync } from 'node:fs';
|
|
17
19
|
import YAML from 'yaml';
|
|
18
|
-
import { findProjectRoot } from '@lumenflow/core/config';
|
|
20
|
+
import { findProjectRoot, WRITABLE_ROOT_KEYS } from '@lumenflow/core/config';
|
|
19
21
|
import { die } from '@lumenflow/core/error-handler';
|
|
20
22
|
import { FILE_SYSTEM } from '@lumenflow/core/wu-constants';
|
|
21
23
|
import { runCLI } from './cli-entry-point.js';
|
|
22
|
-
import { parseConfigGetArgs, getConfigValue,
|
|
24
|
+
import { parseConfigGetArgs, getConfigValue, routeConfigKey, loadPackConfigKeys, WORKSPACE_FILE_NAME, } from './config-set.js';
|
|
23
25
|
// ---------------------------------------------------------------------------
|
|
24
26
|
// Constants
|
|
25
27
|
// ---------------------------------------------------------------------------
|
|
26
28
|
const LOG_PREFIX = '[config:get]';
|
|
27
29
|
const WORKSPACE_INIT_COMMAND = 'pnpm workspace-init --yes';
|
|
28
30
|
// ---------------------------------------------------------------------------
|
|
31
|
+
// Core logic: applyConfigGet (pure, no side effects)
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
/**
|
|
34
|
+
* Apply a config:get operation to a full workspace object.
|
|
35
|
+
*
|
|
36
|
+
* Routes the key using routeConfigKey (same as config:set) to determine
|
|
37
|
+
* the correct read scope. No fallback to software_delivery for unqualified keys.
|
|
38
|
+
*
|
|
39
|
+
* @param workspace - Full workspace object (raw YAML parse)
|
|
40
|
+
* @param key - Fully qualified dotpath key (e.g., "software_delivery.gates.minCoverage")
|
|
41
|
+
* @param packConfigKeys - Map of config_key -> pack_id from loaded pack manifests
|
|
42
|
+
* @returns Result with value or error
|
|
43
|
+
*/
|
|
44
|
+
export function applyConfigGet(workspace, key, packConfigKeys) {
|
|
45
|
+
const route = routeConfigKey(key, packConfigKeys);
|
|
46
|
+
switch (route.type) {
|
|
47
|
+
case 'managed-error':
|
|
48
|
+
return {
|
|
49
|
+
ok: false,
|
|
50
|
+
error: `Key "${route.rootKey}" is managed by a dedicated command. Use \`pnpm ${route.command}\` instead.`,
|
|
51
|
+
};
|
|
52
|
+
case 'unknown-error': {
|
|
53
|
+
const hint = route.suggestion ? ` ${route.suggestion}` : '';
|
|
54
|
+
return {
|
|
55
|
+
ok: false,
|
|
56
|
+
error: `Unknown root key "${route.rootKey}".${hint} Valid root keys: ${[...WRITABLE_ROOT_KEYS].join(', ')}, or a pack config_key (${[...packConfigKeys.keys()].join(', ')}).`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
case 'workspace-root': {
|
|
60
|
+
// Read from workspace root (e.g., control_plane.endpoint, memory_namespace)
|
|
61
|
+
const value = getConfigValue(workspace, key);
|
|
62
|
+
return { ok: true, value };
|
|
63
|
+
}
|
|
64
|
+
case 'pack-config': {
|
|
65
|
+
// Read from workspace root using the fully-qualified key
|
|
66
|
+
// (pack config is stored at workspace root under the config_key)
|
|
67
|
+
const value = getConfigValue(workspace, key);
|
|
68
|
+
return { ok: true, value };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
29
73
|
// Main: config:get
|
|
30
74
|
// ---------------------------------------------------------------------------
|
|
31
75
|
export async function main() {
|
|
@@ -39,29 +83,26 @@ export async function main() {
|
|
|
39
83
|
// Read raw workspace (preserving YAML structure, not Zod-parsed defaults)
|
|
40
84
|
const content = readFileSync(workspacePath, FILE_SYSTEM.UTF8);
|
|
41
85
|
const workspace = YAML.parse(content) ?? {};
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
else {
|
|
51
|
-
value = getConfigValue(workspace, `${WORKSPACE_CONFIG_PREFIX}${options.key}`);
|
|
52
|
-
}
|
|
86
|
+
// Load pack config_keys from workspace for routing
|
|
87
|
+
const packConfigKeys = loadPackConfigKeys(projectRoot, workspace);
|
|
88
|
+
// Route and read using workspace-aware routing (no fallback)
|
|
89
|
+
const result = applyConfigGet(workspace, options.key, packConfigKeys);
|
|
90
|
+
if (!result.ok) {
|
|
91
|
+
console.log(`${LOG_PREFIX} ${result.error}`);
|
|
92
|
+
process.exitCode = 1;
|
|
93
|
+
return;
|
|
53
94
|
}
|
|
54
|
-
if (value === undefined) {
|
|
95
|
+
if (result.value === undefined) {
|
|
55
96
|
console.log(`${LOG_PREFIX} Key "${options.key}" is not set (undefined)`);
|
|
56
97
|
process.exitCode = 0;
|
|
57
98
|
return;
|
|
58
99
|
}
|
|
59
100
|
// Format output based on type
|
|
60
|
-
if (typeof value === 'object' && value !== null) {
|
|
61
|
-
console.log(YAML.stringify(value).trimEnd());
|
|
101
|
+
if (typeof result.value === 'object' && result.value !== null) {
|
|
102
|
+
console.log(YAML.stringify(result.value).trimEnd());
|
|
62
103
|
}
|
|
63
104
|
else {
|
|
64
|
-
console.log(String(value));
|
|
105
|
+
console.log(String(result.value));
|
|
65
106
|
}
|
|
66
107
|
}
|
|
67
108
|
if (import.meta.main) {
|
package/dist/config-get.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-get.js","sourceRoot":"","sources":["../src/config-get.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,yCAAyC;AAEzC
|
|
1
|
+
{"version":3,"file":"config-get.js","sourceRoot":"","sources":["../src/config-get.ts"],"names":[],"mappings":"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"}
|