@harness-forge/cli 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +89 -55
- package/dist/application/install/global-cli-install.d.ts +10 -0
- package/dist/application/install/global-cli-install.d.ts.map +1 -0
- package/dist/application/install/global-cli-install.js +22 -0
- package/dist/application/install/global-cli-install.js.map +1 -0
- package/dist/cli/interactive/onboarding-flow.d.ts.map +1 -1
- package/dist/cli/interactive/onboarding-flow.js +30 -0
- package/dist/cli/interactive/onboarding-flow.js.map +1 -1
- package/dist/cli/interactive/prompt-io.d.ts +1 -0
- package/dist/cli/interactive/prompt-io.d.ts.map +1 -1
- package/dist/cli/interactive/prompt-io.js +14 -0
- package/dist/cli/interactive/prompt-io.js.map +1 -1
- package/dist/cli/interactive/terminal-capabilities.js +1 -1
- package/dist/cli/interactive/terminal-capabilities.js.map +1 -1
- package/manifests/catalog/compatibility-matrix.json +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -2,74 +2,108 @@
|
|
|
2
2
|
|
|
3
3
|
Use the thin visible bridge surfaces first in installed workspaces:
|
|
4
4
|
|
|
5
|
-
-
|
|
5
|
+
- `AGENTS.md` for the thin human-readable guidance bridge
|
|
6
6
|
- `.hforge/agent-manifest.json` for the machine-readable custom-agent contract
|
|
7
|
-
- `.
|
|
7
|
+
- `.agents/skills/` for auto-discoverable wrappers
|
|
8
|
+
- `.specify/` for spec -> plan -> tasks flow state and templates
|
|
8
9
|
- `.hforge/library/skills/` for canonical installed skills
|
|
9
|
-
- `.hforge/library/rules/`
|
|
10
|
+
- `.hforge/library/rules/` and `.hforge/library/knowledge/` for canonical installed implementation guidance
|
|
11
|
+
- `.hforge/templates/` for canonical installed task and workflow templates
|
|
12
|
+
- `.hforge/runtime/index.json` and `.hforge/runtime/README.md` for shared runtime state and bridge resolution
|
|
13
|
+
- `.hforge/generated/agent-command-catalog.json` for safe command discovery
|
|
14
|
+
|
|
15
|
+
## Mode awareness
|
|
16
|
+
|
|
17
|
+
- when working inside an installed consumer workspace, prefer the hidden canonical AI layer under `.hforge/` plus the thin visible bridges at the repo root
|
|
18
|
+
- when working inside the Harness Forge source repository itself, the authored source-of-truth surfaces still live in `skills/`, `rules/`, `knowledge-bases/`, `templates/`, `manifests/`, `targets/`, and `src/`
|
|
19
|
+
- do not assume the source repository layout and the installed workspace layout are the same thing
|
|
20
|
+
- in installed workspaces, treat `.hforge/` as canonical and the root bridge files as discovery and compatibility surfaces
|
|
21
|
+
- in the package source repository, treat `.hforge/` as generated or local runtime state rather than the authored source of truth
|
|
22
|
+
|
|
23
|
+
## Resolution rule
|
|
24
|
+
|
|
25
|
+
- treat `AGENTS.md` as the primary human-readable entrypoint
|
|
26
|
+
- load `.hforge/agent-manifest.json` first when a machine-readable contract is preferred
|
|
27
|
+
- use `.agents/skills/<skill>/SKILL.md` only for discovery
|
|
28
|
+
- use `.hforge/library/skills/<skill>/SKILL.md` as the canonical execution contract in installed workspaces
|
|
29
|
+
- use `.hforge/library/skills/<skill>/references/` for deeper runtime-facing heuristics and templates
|
|
30
|
+
- treat `.hforge/library/`, `.hforge/templates/`, `.hforge/runtime/`, `.hforge/state/`, and `.hforge/generated/` as extracted AI-layer surfaces, not product source code
|
|
31
|
+
- treat any surface marked `treatAsProductCode: false` in `.hforge/agent-manifest.json` as non-product AI-layer content
|
|
32
|
+
|
|
33
|
+
## Installed runtime map
|
|
34
|
+
|
|
35
|
+
- use `.hforge/runtime/repo/repo-map.json` for baseline repo topology and boundary context
|
|
36
|
+
- use `.hforge/runtime/repo/recommendations.json` for evidence-backed bundle, profile, and validation recommendations
|
|
37
|
+
- use `.hforge/runtime/repo/instruction-plan.json` for target-aware instruction synthesis outputs
|
|
38
|
+
- use `.hforge/runtime/findings/validation-gaps.json` and `.hforge/runtime/findings/risk-signals.json` for cautionary runtime signals
|
|
39
|
+
- use `.hforge/runtime/tasks/<taskId>/` for task-runtime artifacts such as file-interest, impact-analysis, and task-pack linkage
|
|
40
|
+
- use `.hforge/runtime/decisions/` for ASR and ADR records plus machine-readable decision indexes when governance support is installed
|
|
41
|
+
- use `.hforge/runtime/recursive/sessions/` for recursive-session state, handles, and promotion traces when recursive mode is enabled
|
|
42
|
+
- use `.hforge/observability/` for local-only effectiveness summaries and recommendation or maintenance signals
|
|
43
|
+
- use `.hforge/generated/bin/` for workspace-local launchers when bare `hforge` is not already available on `PATH`
|
|
10
44
|
|
|
11
45
|
## Language discovery
|
|
12
46
|
|
|
13
|
-
- prefer `.hforge/library/knowledge/seeded/typescript/` when the repo is TypeScript or JavaScript
|
|
14
|
-
- prefer
|
|
15
|
-
- prefer `.hforge/library/knowledge/seeded/java/` for Java services and libraries
|
|
16
|
-
- prefer `.hforge/library/knowledge/seeded/dotnet/` for .NET repos
|
|
17
|
-
- prefer `.hforge/library/knowledge/seeded/lua/`
|
|
18
|
-
- prefer `.hforge/library/knowledge/seeded/powershell/` for PowerShell and Windows automation
|
|
19
|
-
- use the structured packs under `.hforge/library/knowledge/structured/` for Python, Go, Kotlin, Rust, C++, PHP, Perl, Swift, and Shell
|
|
47
|
+
- prefer `.hforge/library/knowledge/seeded/typescript/` with `.hforge/library/rules/common/` and `.hforge/library/rules/typescript/` when the repo is TypeScript-heavy or JavaScript-heavy with strong typing needs
|
|
48
|
+
- prefer `.hforge/library/skills/javascript-engineering/` when the repo is JavaScript-first and the task is not primarily about TypeScript typing
|
|
49
|
+
- prefer `.hforge/library/knowledge/seeded/java/` with `.hforge/library/rules/common/` and `.hforge/library/rules/java/` for Java services and libraries
|
|
50
|
+
- prefer `.hforge/library/knowledge/seeded/dotnet/` with `.hforge/library/rules/common/` and `.hforge/library/rules/dotnet/` for .NET repos
|
|
51
|
+
- prefer `.hforge/library/knowledge/seeded/lua/` with `.hforge/library/rules/common/` and `.hforge/library/rules/lua/` for Lua work
|
|
52
|
+
- prefer `.hforge/library/knowledge/seeded/powershell/` with `.hforge/library/rules/common/` and `.hforge/library/rules/powershell/` for PowerShell and Windows automation
|
|
53
|
+
- use the structured packs under `.hforge/library/knowledge/structured/` with the matching `.hforge/library/rules/<language>/` directory for Python, Go, Kotlin, Rust, C++, PHP, Perl, Swift, and Shell
|
|
54
|
+
- use `.hforge/library/manifests/catalog/language-assets.json` when the installed language surface is not obvious from the repo layout alone
|
|
20
55
|
|
|
21
56
|
## Specialized skills
|
|
22
57
|
|
|
23
|
-
- prefer `.hforge/library/skills/cloud-architect/` when the task is about deployment topology, distributed systems, reliability, observability, or cloud trade-offs across services
|
|
24
|
-
- prefer `.hforge/library/skills/engineering-assistant/` when the task needs architecture plus implementation orchestration, option framing, or explicit project-memory and change-discipline guidance in one surface
|
|
58
|
+
- prefer `.hforge/library/skills/cloud-architect/` when the task is about deployment topology, distributed systems, reliability, observability, or cloud trade-offs across services
|
|
59
|
+
- prefer `.hforge/library/skills/engineering-assistant/` when the task needs architecture plus implementation orchestration, option framing, or explicit project-memory and change-discipline guidance in one surface
|
|
60
|
+
- use `.hforge/library/manifests/catalog/framework-assets.json` and `.hforge/runtime/repo/recommendations.json` when framework or bundle matching is more reliable than guessing from file extensions
|
|
25
61
|
|
|
26
62
|
## Imported skill governance
|
|
27
63
|
|
|
28
|
-
- treat
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
64
|
+
- treat `.hforge/library/manifests/catalog/engineering-assistant-import-inventory.json` as the review ledger for the single-skill engineering-assistant port
|
|
65
|
+
- keep maintainer-facing provenance for that port in `.hforge/library/docs/authoring/engineering-assistant-port.md`
|
|
66
|
+
- treat `.hforge/library/manifests/catalog/enhanced-skill-import-inventory.json` as the review ledger for embedded skill packs and use it before changing imported skill surfaces
|
|
67
|
+
- treat `.agents/skills/` as the discovery layer and `.hforge/library/skills/` as the canonical installed execution layer
|
|
68
|
+
- keep maintainer-facing provenance in `.hforge/library/docs/authoring/enhanced-skill-import.md`
|
|
69
|
+
- use `RESEARCH-SOURCES.md` and `VALIDATION.md` only as additional provenance, not as replacements for the canonical installed skill surfaces
|
|
70
|
+
- prefer the project-owned canonical `.hforge/library/skills/` surfaces over any raw imported archive layout
|
|
71
|
+
|
|
72
|
+
## Target support posture
|
|
73
|
+
|
|
74
|
+
- treat Codex and Claude Code as first-class targets
|
|
75
|
+
- treat Cursor and OpenCode as partial targets unless the capability matrix says otherwise
|
|
76
|
+
- prefer `hforge target inspect <target> --json` or `.hforge/library/manifests/catalog/harness-capability-matrix.json` before claiming a target supports a runtime-native behavior
|
|
77
|
+
- do not imply hook-native, workflow-native, or recursive-native parity where support is only translated, bridged, or documentation-driven
|
|
78
|
+
- use `.codex/` and `.claude/` as target-facing bridges, not as replacements for the shared `.hforge/` runtime
|
|
43
79
|
|
|
44
80
|
## Runtime notes
|
|
45
81
|
|
|
46
82
|
- Claude Code installs map target runtime files into `.claude/`
|
|
47
83
|
- Codex installs map target runtime files into `.codex/`
|
|
48
|
-
- installed workspaces compile the shared intelligence runtime into
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
##
|
|
53
|
-
|
|
54
|
-
- use
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
- use `.hforge/
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
- prefer
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
Run `npm run validate:release` before publish or handoff.
|
|
84
|
+
- installed workspaces compile the shared intelligence runtime into `.hforge/runtime/`
|
|
85
|
+
- target-facing files such as `AGENTS.md`, `.agents/skills/`, `.codex/`, and `.claude/` are thin bridges back to the hidden canonical AI layer rather than separate knowledge systems
|
|
86
|
+
- recursive runtime state, when present, lives under `.hforge/runtime/recursive/sessions/` and should be treated as hidden operational state rather than product code
|
|
87
|
+
|
|
88
|
+
## Command discovery and execution
|
|
89
|
+
|
|
90
|
+
- for first use in a repo, prefer `npx @harness-forge/cli`
|
|
91
|
+
- prefer `hforge commands --json` or `.hforge/generated/agent-command-catalog.json` to discover shipped CLI commands and npm scripts before inventing a command path
|
|
92
|
+
- prefer `hforge status --root . --json` to inspect the installed workspace state
|
|
93
|
+
- prefer `hforge catalog --json` to review installed bundles, packs, and profiles
|
|
94
|
+
- prefer `hforge bootstrap --root . --yes` when the repository needs target autodiscovery and one-pass Harness Forge setup
|
|
95
|
+
- prefer `hforge task list --root . --json`, `hforge task inspect <taskId> --root . --json`, and `hforge pack inspect <taskId> --root . --json` when task-runtime artifacts are relevant
|
|
96
|
+
- prefer `hforge flow status --root . --json` when flow recovery state matters
|
|
97
|
+
- prefer `hforge review --root . --json`, `hforge export --root . --json`, `hforge doctor --root . --json`, and `hforge audit --root . --json` for runtime health and handoff checks
|
|
98
|
+
- when bare `hforge` is unavailable, use the workspace-local launcher under `.hforge/generated/bin/` instead of reaching for package-source entrypoints such as `node dist/cli/index.js`
|
|
99
|
+
- `hforge shell setup --yes` is the preferred way to make bare `hforge` available without forcing a global npm mutation
|
|
100
|
+
- `npm install -g @harness-forge/cli` is optional convenience, not the default requirement
|
|
101
|
+
- use `.hforge/runtime/repo/repo-map.json`, `.hforge/runtime/repo/instruction-plan.json`, `.hforge/runtime/repo/recommendations.json`, and `.hforge/runtime/findings/risk-signals.json` as the extracted runtime intelligence surfaces
|
|
102
|
+
- treat framework matches, recommendation evidence, and validation gaps as first-class signals, not as optional decoration
|
|
103
|
+
|
|
104
|
+
## Trust and scope rules
|
|
105
|
+
|
|
106
|
+
- do not treat `.hforge/` runtime state, task state, recursive state, or generated manifests as product application code unless the task is explicitly about Harness Forge itself
|
|
107
|
+
- prefer the machine-readable command catalog and capability matrix over guessing or prose-only interpretation
|
|
108
|
+
- treat stale or missing runtime artifacts as signals to run `status`, `refresh`, `doctor`, or `audit` rather than inventing a recovery path
|
|
109
|
+
- keep support claims honest: if a target or surface is partial, translated, or non-authoritative, say so explicitly
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface GlobalCliInstallResult {
|
|
2
|
+
attempted: boolean;
|
|
3
|
+
succeeded: boolean;
|
|
4
|
+
command: string;
|
|
5
|
+
stdout: string;
|
|
6
|
+
stderr: string;
|
|
7
|
+
status: number | null;
|
|
8
|
+
}
|
|
9
|
+
export declare function installHarnessForgeGlobally(packageName?: string, platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv): GlobalCliInstallResult;
|
|
10
|
+
//# sourceMappingURL=global-cli-install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-cli-install.d.ts","sourceRoot":"","sources":["../../../src/application/install/global-cli-install.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAMD,wBAAgB,2BAA2B,CACzC,WAAW,SAAuB,EAClC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,sBAAsB,CAiBxB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
function resolveNpmCommand(platform) {
|
|
3
|
+
return platform === "win32" ? "npm.cmd" : "npm";
|
|
4
|
+
}
|
|
5
|
+
export function installHarnessForgeGlobally(packageName = "@harness-forge/cli", platform = process.platform, env = process.env) {
|
|
6
|
+
const npmCommand = resolveNpmCommand(platform);
|
|
7
|
+
const args = ["install", "-g", packageName];
|
|
8
|
+
const result = spawnSync(npmCommand, args, {
|
|
9
|
+
encoding: "utf8",
|
|
10
|
+
stdio: "pipe",
|
|
11
|
+
env
|
|
12
|
+
});
|
|
13
|
+
return {
|
|
14
|
+
attempted: true,
|
|
15
|
+
succeeded: (result.status ?? 1) === 0,
|
|
16
|
+
command: `${npmCommand} ${args.join(" ")}`,
|
|
17
|
+
stdout: result.stdout ?? "",
|
|
18
|
+
stderr: result.stderr ?? "",
|
|
19
|
+
status: result.status
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=global-cli-install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-cli-install.js","sourceRoot":"","sources":["../../../src/application/install/global-cli-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAW/C,SAAS,iBAAiB,CAAC,QAAyB;IAClD,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,WAAW,GAAG,oBAAoB,EAClC,WAA4B,OAAO,CAAC,QAAQ,EAC5C,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE;QACzC,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,MAAM;QACb,GAAG;KACJ,CAAC,CAAC;IAEH,OAAO;QACL,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC;QACrC,OAAO,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-flow.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/onboarding-flow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onboarding-flow.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/onboarding-flow.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAO3D,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0I3F"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
+
import { installHarnessForgeGlobally } from "../../application/install/global-cli-install.js";
|
|
3
|
+
import { getShellIntegrationStatus } from "../../application/install/shell-integration.js";
|
|
2
4
|
import { createRecoveryNotice } from "./recovery-notices.js";
|
|
3
5
|
import { applySetupIntent, buildReviewPlan } from "./review-plan.js";
|
|
4
6
|
import { createPromptSession } from "./prompt-io.js";
|
|
@@ -70,6 +72,34 @@ export async function runInteractiveOnboarding(startRoot) {
|
|
|
70
72
|
applyChanges: !dryRun,
|
|
71
73
|
source: "interactive"
|
|
72
74
|
});
|
|
75
|
+
if (summary.status === "success" && !dryRun) {
|
|
76
|
+
const shellStatus = await getShellIntegrationStatus();
|
|
77
|
+
if (!shellStatus.bareHforgeResolvable) {
|
|
78
|
+
const globalInstallAction = await promptSession.askChoice("globalInstallAction", "Harness Forge is not available as a global command yet. Install the published package globally with npm now?", [
|
|
79
|
+
{
|
|
80
|
+
value: "skip",
|
|
81
|
+
label: "Skip (Recommended)",
|
|
82
|
+
description: "Keep using the workspace launcher or run shell setup later."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
value: "install-global",
|
|
86
|
+
label: "Install globally",
|
|
87
|
+
description: "Run npm install -g @harness-forge/cli now."
|
|
88
|
+
}
|
|
89
|
+
], "skip");
|
|
90
|
+
if (globalInstallAction === "install-global") {
|
|
91
|
+
const installResult = installHarnessForgeGlobally();
|
|
92
|
+
if (installResult.succeeded) {
|
|
93
|
+
summary.operatorMessage = `${summary.operatorMessage} Global npm install completed.`;
|
|
94
|
+
summary.nextSuggestedCommands = summary.nextSuggestedCommands.filter((command) => command !== "npm install -g @harness-forge/cli");
|
|
95
|
+
summary.nextSuggestedCommands.unshift("hforge --help");
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
summary.operatorMessage = `${summary.operatorMessage} Global npm install failed; keep using the workspace launcher or run shell setup.`;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
73
103
|
completed = true;
|
|
74
104
|
}
|
|
75
105
|
if (!summary) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/onboarding-flow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"onboarding-flow.js","sourceRoot":"","sources":["../../../src/cli/interactive/onboarding-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ type PromptChoiceInput = string | PromptChoiceOption;
|
|
|
12
12
|
export interface PromptSession {
|
|
13
13
|
script: PromptScript;
|
|
14
14
|
capabilities: TerminalCapabilityProfile;
|
|
15
|
+
scripted: boolean;
|
|
15
16
|
askText(stepId: string, prompt: string, fallback?: string): Promise<string>;
|
|
16
17
|
askChoice(stepId: string, prompt: string, choices: readonly PromptChoiceInput[], fallback: string): Promise<string>;
|
|
17
18
|
askMultiChoice(stepId: string, prompt: string, choices: readonly PromptChoiceInput[], fallback: string[]): Promise<string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-io.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/prompt-io.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC;AAEnE,UAAU,YAAY;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,iBAAiB,GAAG,MAAM,GAAG,kBAAkB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,yBAAyB,CAAC;IACxC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7H,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClF;AAqED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,yBAAyB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"prompt-io.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/prompt-io.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC;AAEnE,UAAU,YAAY;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,iBAAiB,GAAG,MAAM,GAAG,kBAAkB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,yBAAyB,CAAC;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7H,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClF;AAqED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,yBAAyB,GAAG,aAAa,CA6F1F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGxE"}
|
|
@@ -60,14 +60,19 @@ function normalizeChoice(value, choices, fallback) {
|
|
|
60
60
|
}
|
|
61
61
|
export function createPromptSession(capabilities) {
|
|
62
62
|
const script = parsePromptScript();
|
|
63
|
+
const scripted = Object.keys(script).length > 0;
|
|
63
64
|
return {
|
|
64
65
|
script,
|
|
65
66
|
capabilities,
|
|
67
|
+
scripted,
|
|
66
68
|
async askText(stepId, prompt, fallback = "") {
|
|
67
69
|
const scripted = script[stepId];
|
|
68
70
|
if (typeof scripted === "string") {
|
|
69
71
|
return scripted;
|
|
70
72
|
}
|
|
73
|
+
if (scripted && fallback) {
|
|
74
|
+
return fallback;
|
|
75
|
+
}
|
|
71
76
|
if (!capabilities.supportsInteractiveInput) {
|
|
72
77
|
if (fallback) {
|
|
73
78
|
return fallback;
|
|
@@ -83,6 +88,9 @@ export function createPromptSession(capabilities) {
|
|
|
83
88
|
if (typeof scripted === "string") {
|
|
84
89
|
return normalizeChoice(scripted, normalizedChoices, fallback);
|
|
85
90
|
}
|
|
91
|
+
if (scripted && fallback) {
|
|
92
|
+
return fallback;
|
|
93
|
+
}
|
|
86
94
|
if (!capabilities.supportsInteractiveInput) {
|
|
87
95
|
return fallback;
|
|
88
96
|
}
|
|
@@ -106,6 +114,9 @@ export function createPromptSession(capabilities) {
|
|
|
106
114
|
.filter((item) => normalizedChoices.some((choice) => choice.value === item));
|
|
107
115
|
return values.length > 0 ? [...new Set(values)] : fallback;
|
|
108
116
|
}
|
|
117
|
+
if (scripted) {
|
|
118
|
+
return fallback;
|
|
119
|
+
}
|
|
109
120
|
if (!capabilities.supportsInteractiveInput) {
|
|
110
121
|
return fallback;
|
|
111
122
|
}
|
|
@@ -126,6 +137,9 @@ export function createPromptSession(capabilities) {
|
|
|
126
137
|
if (typeof scripted === "string") {
|
|
127
138
|
return ["1", "true", "yes", "y", "confirm"].includes(scripted.toLowerCase());
|
|
128
139
|
}
|
|
140
|
+
if (scripted) {
|
|
141
|
+
return fallback;
|
|
142
|
+
}
|
|
129
143
|
if (!capabilities.supportsInteractiveInput) {
|
|
130
144
|
return fallback;
|
|
131
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-io.js","sourceRoot":"","sources":["../../../src/cli/interactive/prompt-io.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt-io.js","sourceRoot":"","sources":["../../../src/cli/interactive/prompt-io.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export function detectTerminalCapabilities(options = {}) {
|
|
|
33
33
|
const forcedTty = parseForcedTty(env.HFORGE_FORCE_TTY);
|
|
34
34
|
const stdinIsTTY = forcedTty ?? options.stdinIsTTY ?? process.stdin.isTTY ?? false;
|
|
35
35
|
const stdoutIsTTY = forcedTty ?? options.stdoutIsTTY ?? process.stdout.isTTY ?? false;
|
|
36
|
-
const supportsInteractiveInput = stdinIsTTY && stdoutIsTTY && env.CI !== "true";
|
|
36
|
+
const supportsInteractiveInput = stdinIsTTY && stdoutIsTTY && (env.CI !== "true" || forcedTty === true);
|
|
37
37
|
const terminalWidth = Number.parseInt(env.HFORGE_TERM_WIDTH ?? `${options.columns ?? process.stdout.columns ?? 80}`, 10);
|
|
38
38
|
const colorLevel = detectColorLevel(env, stdoutIsTTY);
|
|
39
39
|
const platform = options.platform ?? process.platform;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-capabilities.js","sourceRoot":"","sources":["../../../src/cli/interactive/terminal-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAuBzB,SAAS,cAAc,CAAC,KAAyB;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAsB,EAAE,WAAoB;IACpE,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,UAA6C,EAAE;IAE/C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,SAAS,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;IACnF,MAAM,WAAW,GAAG,SAAS,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IACtF,MAAM,wBAAwB,GAAG,UAAU,IAAI,WAAW,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal-capabilities.js","sourceRoot":"","sources":["../../../src/cli/interactive/terminal-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAuBzB,SAAS,cAAc,CAAC,KAAyB;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAsB,EAAE,WAAoB;IACpE,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,UAA6C,EAAE;IAE/C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,SAAS,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;IACnF,MAAM,WAAW,GAAG,SAAS,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IACtF,MAAM,wBAAwB,GAAG,UAAU,IAAI,WAAW,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC;IACxG,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzH,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,oBAAoB,GAAG,GAAG,CAAC,oBAAoB,KAAK,GAAG,CAAC;IAC9D,MAAM,sBAAsB,GAC1B,GAAG,CAAC,YAAY,KAAK,GAAG;QACxB,UAAU,KAAK,MAAM;QACrB,oBAAoB;QACpB,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;IACtB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvF,IAAI,gBAA6C,CAAC;IAClD,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,gBAAgB,GAAG,iBAAiB,CAAC;IACvC,CAAC;SAAM,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACtB,gBAAgB,GAAG,SAAS,CAAC;IAC/B,CAAC;SAAM,IAAI,KAAK,GAAG,EAAE,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC/C,gBAAgB,GAAG,SAAS,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,gBAAgB,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,wBAAwB;QACxB,UAAU;QACV,aAAa,EAAE,KAAK;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,aAAa,EAAE,QAAQ,KAAK,OAAO,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;QAChE,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
|