@harness-forge/cli 1.1.0 → 1.2.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.
Files changed (112) hide show
  1. package/.agents/skills/recursive-structured-analysis/SKILL.md +26 -0
  2. package/.agents/skills/recursive-structured-analysis/agents/openai.yaml +3 -0
  3. package/AGENTS.md +11 -1
  4. package/CHANGELOG.md +3 -0
  5. package/README.md +22 -2
  6. package/dist/application/install/agent-manifest.d.ts +9 -0
  7. package/dist/application/install/agent-manifest.d.ts.map +1 -1
  8. package/dist/application/install/agent-manifest.js +42 -1
  9. package/dist/application/install/agent-manifest.js.map +1 -1
  10. package/dist/application/install/apply-install.d.ts +1 -1
  11. package/dist/application/install/apply-install.d.ts.map +1 -1
  12. package/dist/application/install/apply-install.js +5 -5
  13. package/dist/application/install/apply-install.js.map +1 -1
  14. package/dist/application/install/generate-guidance.d.ts.map +1 -1
  15. package/dist/application/install/generate-guidance.js +1 -0
  16. package/dist/application/install/generate-guidance.js.map +1 -1
  17. package/dist/application/install/plan-install.d.ts.map +1 -1
  18. package/dist/application/install/plan-install.js +14 -4
  19. package/dist/application/install/plan-install.js.map +1 -1
  20. package/dist/application/install/refresh-workspace-runtime.js +1 -1
  21. package/dist/application/install/refresh-workspace-runtime.js.map +1 -1
  22. package/dist/application/install/shared-runtime.d.ts +1 -1
  23. package/dist/application/install/shared-runtime.d.ts.map +1 -1
  24. package/dist/application/install/shared-runtime.js +11 -5
  25. package/dist/application/install/shared-runtime.js.map +1 -1
  26. package/dist/application/install/update-workspace.d.ts +21 -0
  27. package/dist/application/install/update-workspace.d.ts.map +1 -0
  28. package/dist/application/install/update-workspace.js +132 -0
  29. package/dist/application/install/update-workspace.js.map +1 -0
  30. package/dist/application/recursive/derive-language-capabilities.d.ts +4 -0
  31. package/dist/application/recursive/derive-language-capabilities.d.ts.map +1 -0
  32. package/dist/application/recursive/derive-language-capabilities.js +182 -0
  33. package/dist/application/recursive/derive-language-capabilities.js.map +1 -0
  34. package/dist/application/recursive/plan-task.d.ts.map +1 -1
  35. package/dist/application/recursive/plan-task.js +30 -1
  36. package/dist/application/recursive/plan-task.js.map +1 -1
  37. package/dist/application/recursive/run-structured-analysis.d.ts +17 -0
  38. package/dist/application/recursive/run-structured-analysis.d.ts.map +1 -0
  39. package/dist/application/recursive/run-structured-analysis.js +261 -0
  40. package/dist/application/recursive/run-structured-analysis.js.map +1 -0
  41. package/dist/application/runtime/command-catalog.d.ts +16 -0
  42. package/dist/application/runtime/command-catalog.d.ts.map +1 -1
  43. package/dist/application/runtime/command-catalog.js +155 -48
  44. package/dist/application/runtime/command-catalog.js.map +1 -1
  45. package/dist/cli/commands/maintenance.d.ts.map +1 -1
  46. package/dist/cli/commands/maintenance.js +20 -15
  47. package/dist/cli/commands/maintenance.js.map +1 -1
  48. package/dist/cli/commands/recursive.d.ts.map +1 -1
  49. package/dist/cli/commands/recursive.js +103 -1
  50. package/dist/cli/commands/recursive.js.map +1 -1
  51. package/dist/domain/recursive/adr-candidate.d.ts +2 -2
  52. package/dist/domain/recursive/asr.d.ts +2 -2
  53. package/dist/domain/recursive/execution-policy.d.ts +57 -0
  54. package/dist/domain/recursive/execution-policy.d.ts.map +1 -0
  55. package/dist/domain/recursive/execution-policy.js +26 -0
  56. package/dist/domain/recursive/execution-policy.js.map +1 -0
  57. package/dist/domain/recursive/language-capabilities.d.ts +95 -0
  58. package/dist/domain/recursive/language-capabilities.d.ts.map +1 -0
  59. package/dist/domain/recursive/language-capabilities.js +24 -0
  60. package/dist/domain/recursive/language-capabilities.js.map +1 -0
  61. package/dist/domain/recursive/structured-run-result.d.ts +34 -0
  62. package/dist/domain/recursive/structured-run-result.d.ts.map +1 -0
  63. package/dist/domain/recursive/structured-run-result.js +16 -0
  64. package/dist/domain/recursive/structured-run-result.js.map +1 -0
  65. package/dist/domain/recursive/structured-run.d.ts +51 -0
  66. package/dist/domain/recursive/structured-run.d.ts.map +1 -0
  67. package/dist/domain/recursive/structured-run.js +30 -0
  68. package/dist/domain/recursive/structured-run.js.map +1 -0
  69. package/dist/domain/recursive/template-registry.d.ts +12 -12
  70. package/dist/domain/runtime/decision-record.d.ts +4 -4
  71. package/dist/domain/runtime/task-pack.d.ts +2 -2
  72. package/dist/domain/runtime/template-registry.d.ts +6 -6
  73. package/dist/domain/state/install-state.d.ts +1 -1
  74. package/dist/domain/state/install-state.d.ts.map +1 -1
  75. package/dist/infrastructure/recursive/session-store.d.ts +28 -0
  76. package/dist/infrastructure/recursive/session-store.d.ts.map +1 -1
  77. package/dist/infrastructure/recursive/session-store.js +96 -3
  78. package/dist/infrastructure/recursive/session-store.js.map +1 -1
  79. package/dist/shared/constants.d.ts +10 -0
  80. package/dist/shared/constants.d.ts.map +1 -1
  81. package/dist/shared/constants.js +10 -0
  82. package/dist/shared/constants.js.map +1 -1
  83. package/docs/agents.md +13 -0
  84. package/docs/commands.md +33 -3
  85. package/docs/generated-artifacts.md +13 -0
  86. package/docs/install/targets.md +3 -0
  87. package/docs/installation.md +9 -0
  88. package/docs/maintenance-lifecycle.md +8 -3
  89. package/docs/quickstart.md +5 -2
  90. package/docs/release-process.md +2 -0
  91. package/docs/target-support-matrix.md +7 -4
  92. package/manifests/catalog/capability-taxonomy.json +6 -0
  93. package/manifests/catalog/compatibility-matrix.json +103 -1
  94. package/manifests/catalog/flow-artifacts.json +40 -0
  95. package/manifests/catalog/harness-capability-matrix.json +61 -1
  96. package/manifests/catalog/package-surface.json +8 -0
  97. package/manifests/targets/core.json +9 -4
  98. package/package.json +1 -1
  99. package/schemas/runtime/recursive-execution-policy.schema.json +47 -0
  100. package/schemas/runtime/recursive-language-capabilities.schema.json +46 -0
  101. package/schemas/runtime/recursive-run-meta.schema.json +28 -0
  102. package/schemas/runtime/recursive-run-result.schema.json +36 -0
  103. package/scripts/ci/release-smoke.mjs +4 -0
  104. package/scripts/ci/smoke-runner.mjs +12 -0
  105. package/scripts/ci/validate-doc-command-alignment.mjs +19 -2
  106. package/scripts/ci/validate-manifest-runtime-consistency.mjs +12 -1
  107. package/scripts/ci/validate-packed-install-surface.mjs +14 -0
  108. package/skills/recursive-structured-analysis/SKILL.md +48 -0
  109. package/targets/claude-code/adapter.json +5 -2
  110. package/targets/codex/adapter.json +3 -2
  111. package/targets/cursor/adapter.json +3 -2
  112. package/targets/opencode/adapter.json +3 -2
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: recursive-structured-analysis
3
+ description: Auto-discoverable wrapper for `.hforge/library/skills/recursive-structured-analysis/SKILL.md`.
4
+ ---
5
+
6
+ # Recursive Structured Analysis
7
+
8
+ ## Activation
9
+
10
+ - trigger when a recursive session needs one bounded structured investigation
11
+ - trigger when the operator or agent should inspect recursive capability truth
12
+ before assuming a language-specific recursive analysis path exists
13
+
14
+ ## Use These Surfaces
15
+
16
+ - `.hforge/library/skills/recursive-structured-analysis/SKILL.md`
17
+ - `.hforge/runtime/recursive/language-capabilities.json`
18
+ - `.hforge/runtime/recursive/sessions/<sessionId>/execution-policy.json`
19
+ - `.hforge/generated/agent-command-catalog.json`
20
+
21
+ ## Operating Rule
22
+
23
+ Use the canonical skill under `.hforge/library/skills/` for execution. Treat
24
+ this wrapper as a discovery entrypoint only, and check the recursive language
25
+ capability map before describing recursive structured analysis as available
26
+ for a specific language or execution mode.
@@ -0,0 +1,3 @@
1
+ name: recursive-structured-analysis
2
+ description: Discover the canonical recursive structured-analysis skill and inspect recursive capability truth before claiming language support.
3
+ entry: SKILL.md
package/AGENTS.md CHANGED
@@ -39,6 +39,7 @@ Use the thin visible bridge surfaces first in installed workspaces:
39
39
  - use `.hforge/runtime/tasks/<taskId>/` for task-runtime artifacts such as file-interest, impact-analysis, and task-pack linkage
40
40
  - use `.hforge/runtime/decisions/` for ASR and ADR records plus machine-readable decision indexes when governance support is installed
41
41
  - use `.hforge/runtime/recursive/sessions/` for recursive-session state, handles, and promotion traces when recursive mode is enabled
42
+ - use `.hforge/runtime/recursive/language-capabilities.json` for the canonical recursive structured-analysis capability map before assuming language support
42
43
  - use `.hforge/observability/` for local-only effectiveness summaries and recommendation or maintenance signals
43
44
  - use `.hforge/generated/bin/` for workspace-local launchers when bare `hforge` is not already available on `PATH`
44
45
 
@@ -84,17 +85,22 @@ Use the thin visible bridge surfaces first in installed workspaces:
84
85
  - installed workspaces compile the shared intelligence runtime into `.hforge/runtime/`
85
86
  - 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
87
  - recursive runtime state, when present, lives under `.hforge/runtime/recursive/sessions/` and should be treated as hidden operational state rather than product code
88
+ - recursive structured analysis is the promoted execution surface for recursive repository investigation; treat the REPL as optional and non-authoritative
87
89
 
88
90
  ## Command discovery and execution
89
91
 
90
92
  - for first use in a repo, prefer `npx @harness-forge/cli`
91
93
  - prefer `hforge commands --json` or `.hforge/generated/agent-command-catalog.json` to discover shipped CLI commands and npm scripts before inventing a command path
94
+ - resolve CLI execution in this order inside an installed workspace: `.hforge/generated/bin/hforge(.cmd|.ps1)` first, bare `hforge` second, and `npx @harness-forge/cli` last
92
95
  - prefer `hforge status --root . --json` to inspect the installed workspace state
93
96
  - prefer `hforge catalog --json` to review installed bundles, packs, and profiles
94
97
  - prefer `hforge bootstrap --root . --yes` when the repository needs target autodiscovery and one-pass Harness Forge setup
95
98
  - 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
99
+ - prefer `hforge recursive capabilities --root . --json` before claiming recursive structured-analysis support for a language
100
+ - prefer `hforge recursive run <sessionId> --file <snippet> --root . --json`, `hforge recursive run <sessionId> --stdin --root . --json`, `hforge recursive runs <sessionId> --root . --json`, and `hforge recursive inspect-run <sessionId> <runId> --root . --json` for promoted recursive structured-analysis flows
96
101
  - prefer `hforge flow status --root . --json` when flow recovery state matters
97
102
  - prefer `hforge review --root . --json`, `hforge export --root . --json`, `hforge doctor --root . --json`, and `hforge audit --root . --json` for runtime health and handoff checks
103
+ - prefer `hforge update --root . --dry-run --yes` before a managed package refresh and `hforge update --root . --yes` when you want to reapply the latest published Harness Forge surfaces without discarding gathered runtime state
98
104
  - 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
105
  - `hforge shell setup --yes` is the preferred way to make bare `hforge` available without forcing a global npm mutation
100
106
  - `npm install -g @harness-forge/cli` is optional convenience, not the default requirement
@@ -106,4 +112,8 @@ Use the thin visible bridge surfaces first in installed workspaces:
106
112
  - 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
113
  - prefer the machine-readable command catalog and capability matrix over guessing or prose-only interpretation
108
114
  - 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
115
+ - keep support claims honest: if a target or surface is partial, translated, or non-authoritative, say so explicitly
116
+
117
+ ## Release gate
118
+
119
+ - run `npm run validate:release` before publish, handoff, or release-signoff work
package/CHANGELOG.md CHANGED
@@ -8,8 +8,11 @@
8
8
  - deterministic workspace initialization with visible runtime schema metadata
9
9
  - release smoke validation via `scripts/ci/smoke-runner.mjs`
10
10
  - contributor and release-process documentation for local and release-grade validation
11
+ - promoted recursive structured-analysis command surfaces with durable run records and capability truth
12
+ - non-destructive `hforge update` / `hforge upgrade` flows that preserve gathered runtime state while refreshing managed surfaces
11
13
 
12
14
  ### Changed
13
15
 
14
16
  - shared runtime metadata now records package version and runtime schema version
15
17
  - CI and release guidance are aligned around `validate:local`, `validate:release`, and `release:dry-run`
18
+ - target guidance now keeps recursive structured-analysis support claims honest across Codex, Claude Code, Cursor, and OpenCode
package/README.md CHANGED
@@ -101,11 +101,11 @@ Instead of relying on one-off prompts or tribal setup knowledge, it gives you a
101
101
  | 🎯 Runtime targets | 4 target surfaces: Codex, Claude Code, Cursor, OpenCode |
102
102
  | 🧠 Knowledge system | 14 language packs total: 5 seeded + 9 structured |
103
103
  | 🧩 Framework coverage | 12 framework packs including React, Next.js, Vite, Express, FastAPI, Django, ASP.NET Core, Spring Boot, Laravel, Symfony, Gin, and Ktor |
104
- | 🛠 Skills | 43 packaged skills across language engineering, workflow orchestration, operational helpers, and workload-specialized flows |
104
+ | 🛠 Skills | 44 packaged skills across language engineering, workflow orchestration, operational helpers, and workload-specialized flows |
105
105
  | 🔁 Flow support | `.specify/` spec → plan → tasks → implement flow plus flow-state recovery |
106
106
  | 🔬 Intelligence | `scan`, `recommend`, `cartograph`, `classify-boundaries`, and `synthesize-instructions` |
107
107
  | 📊 Local observability | Effectiveness summaries, recommendation acceptance, hook runs, maintenance traces, and runtime summaries |
108
- | 🧱 Hard-task support | Recursive runtime sessions, parallel planning, merge-checks, and decision recording |
108
+ | 🧱 Hard-task support | Recursive runtime sessions, structured recursive analysis, parallel planning, merge-checks, and decision recording |
109
109
 
110
110
  ---
111
111
 
@@ -519,7 +519,9 @@ That gives you:
519
519
 
520
520
  - a durable session identity
521
521
  - budget and promotion state
522
+ - a canonical language-capability map for recursive structured analysis
522
523
  - compact working memory
524
+ - session-scoped structured analysis runs with durable run records
523
525
  - append-only trace output
524
526
  - resumable investigation flow
525
527
 
@@ -561,6 +563,12 @@ In practice, that means teams can understand:
561
563
  2. what drifted
562
564
  3. what is safe to refresh, repair, prune, or upgrade
563
565
 
566
+ Recursive structured analysis also stays intentionally honest about support:
567
+
568
+ - structured runs are host-executed and session-bounded rather than arbitrary native code execution
569
+ - language capability truth lives in `.hforge/runtime/recursive/language-capabilities.json`
570
+ - Codex and Claude Code promote the recursive surface directly, while Cursor and OpenCode rely on translated shared-runtime guidance instead of claiming native parity
571
+
564
572
  ---
565
573
 
566
574
  ## ✅ Verify Everything Is Healthy
@@ -593,6 +601,13 @@ hforge review --root /path/to/your/workspace --json
593
601
 
594
602
  ## 📚 Operator Cheat Sheet
595
603
 
604
+ Agents should not assume bare `hforge` is on `PATH`. In installed workspaces,
605
+ resolve commands in this order:
606
+
607
+ 1. `.hforge/generated/bin/hforge.cmd` or `.ps1` on Windows, or `./.hforge/generated/bin/hforge` on POSIX
608
+ 2. bare `hforge`
609
+ 3. `npx @harness-forge/cli`
610
+
596
611
  | Goal | Command |
597
612
  | --- | --- |
598
613
  | Initialize the hidden runtime in a repo | `npx @harness-forge/cli init --root /path/to/your/workspace --json` |
@@ -602,6 +617,7 @@ hforge review --root /path/to/your/workspace --json
602
617
  | List commands agents can use | `hforge commands --json` |
603
618
  | Inspect what is installed | `hforge status --root /path/to/your/workspace --json` |
604
619
  | Refresh runtime summaries | `hforge refresh --root /path/to/your/workspace --json` |
620
+ | Update Harness Forge safely in place | `hforge update --root /path/to/your/workspace --yes` |
605
621
  | Summarize runtime health | `hforge review --root /path/to/your/workspace --json` |
606
622
  | Export runtime state | `hforge export --root /path/to/your/workspace --json` |
607
623
  | Generate repo-aware recommendations | `hforge recommend /path/to/your/workspace --json` |
@@ -611,6 +627,10 @@ hforge review --root /path/to/your/workspace --json
611
627
  | Compare install state vs workspace | `hforge diff-install --root /path/to/your/workspace --json` |
612
628
  | Inspect flow recovery state | `hforge flow status --json` |
613
629
  | Review observability effectiveness | `hforge observability summarize --json` |
630
+ | Inspect recursive structured-analysis support | `hforge recursive capabilities --root /path/to/your/workspace --json` |
631
+ | Submit one structured recursive analysis run | `hforge recursive run <sessionId> --file /path/to/snippet.mjs --root /path/to/your/workspace --json` |
632
+ | List prior structured recursive runs | `hforge recursive runs <sessionId> --root /path/to/your/workspace --json` |
633
+ | Inspect one structured recursive run | `hforge recursive inspect-run <sessionId> <runId> --root /path/to/your/workspace --json` |
614
634
 
615
635
  ---
616
636
 
@@ -31,6 +31,15 @@ export interface AgentManifest {
31
31
  runtimeSurfaces: string[];
32
32
  }>;
33
33
  localLaunchers: string[];
34
+ commandExecution: {
35
+ preferredOrder: string[];
36
+ modes: Array<{
37
+ id: string;
38
+ platform: "any" | "windows" | "posix";
39
+ commandPrefix: string;
40
+ whenToUse: string;
41
+ }>;
42
+ };
34
43
  surfaces: AgentManifestSurface[];
35
44
  guidance: string[];
36
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-manifest.d.ts","sourceRoot":"","sources":["../../../src/application/install/agent-manifest.ts"],"names":[],"mappings":"AAkCA,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EACJ,YAAY,GACZ,WAAW,GACX,qBAAqB,GACrB,eAAe,GACf,OAAO,GACP,WAAW,GACX,UAAU,GACV,gBAAgB,CAAC;IACrB,UAAU,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,WAAW,CAAC;IAChE,kBAAkB,EAAE,KAAK,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QACX,wBAAwB,EAAE,MAAM,CAAC;QACjC,uBAAuB,EAAE,MAAM,CAAC;QAChC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,KAAK,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC,CAAC;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA6GD,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,WAAW,SAAe,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,CAAC,CA2EpD"}
1
+ {"version":3,"file":"agent-manifest.d.ts","sourceRoot":"","sources":["../../../src/application/install/agent-manifest.ts"],"names":[],"mappings":"AAkCA,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EACJ,YAAY,GACZ,WAAW,GACX,qBAAqB,GACrB,eAAe,GACf,OAAO,GACP,WAAW,GACX,UAAU,GACV,gBAAgB,CAAC;IACrB,UAAU,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,WAAW,CAAC;IAChE,kBAAkB,EAAE,KAAK,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QACX,wBAAwB,EAAE,MAAM,CAAC;QACjC,uBAAuB,EAAE,MAAM,CAAC;QAChC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,KAAK,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC,CAAC;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE;QAChB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,KAAK,EAAE,KAAK,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,QAAQ,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC;YACtC,aAAa,EAAE,MAAM,CAAC;YACtB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;KACJ,CAAC;IACF,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA+HD,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,WAAW,SAAe,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,CAAC,CAkHpD"}
@@ -66,6 +66,8 @@ function buildSurfaceIndex(runtime, launchers) {
66
66
  surfaces.set(surfacePath, createSurface(surfacePath, category, visibility, description));
67
67
  }
68
68
  surfaces.set(AGENT_MANIFEST_FILE, createSurface(AGENT_MANIFEST_FILE, "generated", "generated", "Machine-readable custom-agent manifest describing bridges, canonical roots, and safe command discovery."));
69
+ surfaces.set(".hforge/runtime/recursive/language-capabilities.json", createSurface(".hforge/runtime/recursive/language-capabilities.json", "runtime-state", "generated", "Canonical recursive structured-analysis capability map for language adapter depth and execution posture."));
70
+ surfaces.set(".hforge/runtime/recursive/sessions", createSurface(".hforge/runtime/recursive/sessions", "runtime-state", "hidden-canonical", "Session-scoped recursive runtime state, including structured runs, policy, summaries, and future promotion traces."));
69
71
  for (const launcherPath of launchers) {
70
72
  surfaces.set(launcherPath, createSurface(launcherPath, "launcher", "generated", "Workspace-local launcher that runs Harness Forge without requiring a global install."));
71
73
  }
@@ -130,12 +132,51 @@ export async function writeAgentManifest(workspaceRoot, packageRoot = PACKAGE_RO
130
132
  ]),
131
133
  installedTargets,
132
134
  localLaunchers: launcherPaths,
135
+ commandExecution: {
136
+ preferredOrder: ["workspace-launcher-windows", "workspace-launcher-powershell", "workspace-launcher-posix", "bare-hforge", "npx-package"],
137
+ modes: [
138
+ {
139
+ id: "workspace-launcher-windows",
140
+ platform: "windows",
141
+ commandPrefix: ".\\.hforge\\generated\\bin\\hforge.cmd",
142
+ whenToUse: "Preferred in installed Windows workspaces when bare hforge is unavailable on PATH."
143
+ },
144
+ {
145
+ id: "workspace-launcher-powershell",
146
+ platform: "windows",
147
+ commandPrefix: ".\\.hforge\\generated\\bin\\hforge.ps1",
148
+ whenToUse: "Use in PowerShell when the CMD launcher is not the preferred shell entrypoint."
149
+ },
150
+ {
151
+ id: "workspace-launcher-posix",
152
+ platform: "posix",
153
+ commandPrefix: "./.hforge/generated/bin/hforge",
154
+ whenToUse: "Preferred in installed POSIX workspaces when bare hforge is unavailable on PATH."
155
+ },
156
+ {
157
+ id: "bare-hforge",
158
+ platform: "any",
159
+ commandPrefix: "hforge",
160
+ whenToUse: "Use when hforge is already available on PATH through shell setup or global install."
161
+ },
162
+ {
163
+ id: "npx-package",
164
+ platform: "any",
165
+ commandPrefix: "npx @harness-forge/cli",
166
+ whenToUse: "Fallback when no local launcher is available yet or when the agent is operating before install."
167
+ }
168
+ ]
169
+ },
133
170
  surfaces: buildSurfaceIndex(runtimeIndex, launcherPaths),
134
171
  guidance: [
135
172
  "Treat AGENTS.md as the primary human-readable instruction entrypoint.",
136
173
  "Use .agents/skills/ for discovery and .hforge/library/skills/ for canonical execution contracts.",
137
174
  "Treat .hforge/library/, .hforge/templates/, .hforge/runtime/, .hforge/state/, and .hforge/generated/ as AI-layer surfaces rather than product code.",
138
- "Use .hforge/generated/agent-command-catalog.json to discover safe CLI commands before inventing your own execution path."
175
+ "Use .hforge/generated/agent-command-catalog.json to discover safe CLI commands before inventing your own execution path.",
176
+ "Resolve command execution in this order: workspace launcher, bare hforge on PATH, then npx @harness-forge/cli.",
177
+ "Use .hforge/runtime/recursive/language-capabilities.json to discover recursive structured-analysis support before attempting repository-wide recursive analysis.",
178
+ "Use hforge recursive capabilities --root . --json, hforge recursive run <sessionId> --file <snippet> --json, hforge recursive run <sessionId> --stdin --json, hforge recursive runs <sessionId> --json, and hforge recursive inspect-run <sessionId> <runId> --json as the promoted recursive structured-analysis command family.",
179
+ "Use hforge update --root . --yes or hforge update --root . --dry-run --yes to refresh managed Harness Forge surfaces without discarding gathered runtime state."
139
180
  ]
140
181
  };
141
182
  await writeJsonFile(manifestPath, manifest);
@@ -1 +1 @@
1
- {"version":3,"file":"agent-manifest.js","sourceRoot":"","sources":["../../../src/application/install/agent-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-manifest.js","sourceRoot":"","sources":["../../../src/application/install/agent-manifest.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { InstallPlan } from "../../domain/operations/install-plan.js";
2
- export declare function applyInstall(root: string, plan: InstallPlan): Promise<{
2
+ export declare function applyInstall(root: string, plan: InstallPlan, packageRoot?: string): Promise<{
3
3
  messages: string[];
4
4
  guidancePath: string;
5
5
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"apply-install.d.ts","sourceRoot":"","sources":["../../../src/application/install/apply-install.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAU3E,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CA6EzH"}
1
+ {"version":3,"file":"apply-install.d.ts","sourceRoot":"","sources":["../../../src/application/install/apply-install.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAU3E,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,WAAW,SAAe,GACzB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CA6EvD"}
@@ -7,8 +7,8 @@ import { writeAgentManifest } from "./agent-manifest.js";
7
7
  import { generateGuidance } from "./generate-guidance.js";
8
8
  import { rewriteInstalledAiLayerReferences } from "./rewrite-installed-ai-layer.js";
9
9
  import { writeSharedRuntime } from "./shared-runtime.js";
10
- export async function applyInstall(root, plan) {
11
- const packageJson = await readJsonFile(path.join(PACKAGE_ROOT, "package.json"));
10
+ export async function applyInstall(root, plan, packageRoot = PACKAGE_ROOT) {
11
+ const packageJson = await readJsonFile(path.join(packageRoot, "package.json"));
12
12
  const visibilityPolicy = plan.visibilityPolicy ?? {
13
13
  mode: "hidden-ai-layer",
14
14
  aiLayerRoot: path.join(root, ".hforge"),
@@ -23,9 +23,9 @@ export async function applyInstall(root, plan) {
23
23
  const guidance = generateGuidance(plan);
24
24
  const guidancePath = path.join(root, ".hforge", "state", "post-install-guidance.txt");
25
25
  await writeTextFile(guidancePath, guidance);
26
- const sharedRuntime = await writeSharedRuntime(root, plan);
26
+ const sharedRuntime = await writeSharedRuntime(root, plan, packageRoot);
27
27
  const existingState = await loadInstallState(root);
28
- const commandCatalog = await writeAgentCommandCatalog(root, PACKAGE_ROOT);
28
+ const commandCatalog = await writeAgentCommandCatalog(root, packageRoot);
29
29
  const agentManifestPath = path.join(root, ".hforge", "agent-manifest.json");
30
30
  const generatedFiles = [
31
31
  guidancePath,
@@ -69,7 +69,7 @@ export async function applyInstall(root, plan) {
69
69
  `Use "hforge refresh --root ${root}" to rewrite shared runtime summaries after install changes.`
70
70
  ]
71
71
  });
72
- const agentManifest = await writeAgentManifest(root, PACKAGE_ROOT);
72
+ const agentManifest = await writeAgentManifest(root, packageRoot);
73
73
  messages.push(`Agent command catalog written to ${commandCatalog.jsonPath}`);
74
74
  messages.push(`Agent manifest written to ${agentManifest.path}`);
75
75
  if (sharedRuntime) {
@@ -1 +1 @@
1
- {"version":3,"file":"apply-install.js","sourceRoot":"","sources":["../../../src/application/install/apply-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-install.js","sourceRoot":"","sources":["../../../src/application/install/apply-install.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,IAAiB,EACjB,WAAW,GAAG,YAAY;IAE1B,MAAM,WAAW,GAAG,MAAM,YAAY,CAAsB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IACpG,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI;QAChD,IAAI,EAAE,iBAA0B;QAChC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QACvC,oBAAoB,EAAE,EAAE;QACxB,kBAAkB,EAAE,EAAE;KACvB,CAAC;IACF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,iCAAiC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC;IACtF,MAAM,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG;QACrB,YAAY;QACZ,cAAc,CAAC,QAAQ;QACvB,cAAc,CAAC,YAAY;QAC3B,GAAG,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1H,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,MAAM,gBAAgB,CAAC,IAAI,EAAE;QAC3B,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,CAAC;QACpC,cAAc,EAAE,WAAW,CAAC,OAAO;QACnC,oBAAoB,EAAE,sBAAsB;QAC5C,gBAAgB,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrG,gBAAgB,EAAE;YAChB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;SACpH;QACD,eAAe,EAAE,IAAI,CAAC,IAAI;QAC1B,UAAU,EAAE;YACV,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,CAAC,aAAa,EAAE,UAAU,IAAI,EAAE,CAAC;gBACpC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC;gBAChE,GAAG,cAAc;gBACjB,GAAG,cAAc;gBACjB,iBAAiB;aAClB,CAAC;SACH;QACD,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACtG,UAAU,EAAE;YACV,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC1E,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC;QACD,oBAAoB,EAAE,SAAS;QAC/B,cAAc,EAAE,gBAAgB,CAAC,IAAI;QACrC,WAAW,EAAE,gBAAgB,CAAC,WAAW;QACzC,oBAAoB,EAAE,gBAAgB,CAAC,oBAAoB;QAC3D,kBAAkB,EAAE,gBAAgB,CAAC,kBAAkB;QACvD,UAAU,EAAE,SAAS;QACrB,aAAa,EACX,aAAa,EAAE,aAAa,IAAI;YAC9B,6BAA6B,IAAI,mDAAmD;YACpF,8BAA8B,IAAI,8DAA8D;SACjG;KACJ,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,oCAAoC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,CAAC,6BAA6B,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,6BAA6B,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,WAAW,cAAc,CAAC,MAAM,wEAAwE,CAAC,CAAC;IAC1H,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-guidance.d.ts","sourceRoot":"","sources":["../../../src/application/install/generate-guidance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAgC1D"}
1
+ {"version":3,"file":"generate-guidance.d.ts","sourceRoot":"","sources":["../../../src/application/install/generate-guidance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAE3E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAiC1D"}
@@ -10,6 +10,7 @@ export function generateGuidance(plan) {
10
10
  "Use .hforge/runtime/findings/risk-signals.json to inspect baseline risk signals captured for the workspace.",
11
11
  'Use "hforge shell status --json" to inspect whether bare hforge is available on PATH.',
12
12
  'Use "hforge shell setup --yes" to add a user-level shim and supported shell profile block without forcing a global npm install.',
13
+ 'Agents should resolve commands in this order: ".hforge/generated/bin/hforge(.cmd|.ps1)", then bare "hforge", then "npx @harness-forge/cli".',
13
14
  'Use "hforge commands --json" to inspect CLI commands and npm scripts exposed to agents.',
14
15
  'Use "hforge catalog --json" to review installed bundles.',
15
16
  'Use "hforge template list" to discover starter task and workflow templates.'
@@ -1 +1 @@
1
- {"version":3,"file":"generate-guidance.js","sourceRoot":"","sources":["../../../src/application/install/generate-guidance.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IAChD,MAAM,KAAK,GAAG;QACZ,mCAAmC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG;QAC7D,+CAA+C;QAC/C,qHAAqH;QACrH,qGAAqG;QACrG,kHAAkH;QAClH,oGAAoG;QACpG,gHAAgH;QAChH,6GAA6G;QAC7G,uFAAuF;QACvF,iIAAiI;QACjI,yFAAyF;QACzF,0DAA0D;QAC1D,6EAA6E;KAC9E,CAAC;IAEF,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CACR,+FAA+F,EAC/F,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CACR,wFAAwF,EACxF,mIAAmI,CACpI,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"generate-guidance.js","sourceRoot":"","sources":["../../../src/application/install/generate-guidance.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IAChD,MAAM,KAAK,GAAG;QACZ,mCAAmC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG;QAC7D,+CAA+C;QAC/C,qHAAqH;QACrH,qGAAqG;QACrG,kHAAkH;QAClH,oGAAoG;QACpG,gHAAgH;QAChH,6GAA6G;QAC7G,uFAAuF;QACvF,iIAAiI;QACjI,6IAA6I;QAC7I,yFAAyF;QACzF,0DAA0D;QAC1D,6EAA6E;KAC9E,CAAC;IAEF,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CACR,+FAA+F,EAC/F,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CACR,wFAAwF,EACxF,mIAAmI,CACpI,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-install.d.ts","sourceRoot":"","sources":["../../../src/application/install/plan-install.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAGjB,MAAM,yCAAyC,CAAC;AAyBjD,UAAU,wBAAwB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAkFD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,eAAe,EAAE,EAC3B,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,wBAA6B,GACrC,WAAW,CAyDb"}
1
+ {"version":3,"file":"plan-install.d.ts","sourceRoot":"","sources":["../../../src/application/install/plan-install.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAGjB,MAAM,yCAAyC,CAAC;AAyBjD,UAAU,wBAAwB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAwGD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,eAAe,EAAE,EAC3B,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,wBAA6B,GACrC,WAAW,CAyDb"}
@@ -46,8 +46,8 @@ function createVisibilityPolicy(workspaceRoot, target) {
46
46
  visibleBridgePaths
47
47
  };
48
48
  }
49
- function createOperation(contentRoot, workspaceRoot, target, bundle, assetPath) {
50
- const destinationHint = target.pathMappings[assetPath] ?? mapCanonicalAssetPath(assetPath);
49
+ function createOperation(contentRoot, workspaceRoot, target, bundle, assetPath, destinationHint) {
50
+ const resolvedDestination = destinationHint ?? target.pathMappings[assetPath] ?? mapCanonicalAssetPath(assetPath);
51
51
  const mergeStrategy = target.mergeRules[assetPath] ?? "copy";
52
52
  return {
53
53
  type: mergeStrategy === "append-once"
@@ -61,13 +61,23 @@ function createOperation(contentRoot, workspaceRoot, target, bundle, assetPath)
61
61
  : "copy",
62
62
  bundleId: bundle.id,
63
63
  sourcePath: path.join(contentRoot, assetPath),
64
- destinationPath: normalizeTargetPath(workspaceRoot, destinationHint),
64
+ destinationPath: normalizeTargetPath(workspaceRoot, resolvedDestination),
65
65
  mergeStrategy,
66
66
  reason: `${bundle.id}:${assetPath}`,
67
67
  riskLevel: "low",
68
68
  backupRequired: true
69
69
  };
70
70
  }
71
+ function createOperationsForAsset(contentRoot, workspaceRoot, target, bundle, assetPath) {
72
+ const primaryDestination = target.pathMappings[assetPath] ?? mapCanonicalAssetPath(assetPath);
73
+ const operations = [createOperation(contentRoot, workspaceRoot, target, bundle, assetPath, primaryDestination)];
74
+ if (assetPath === "AGENTS.md" &&
75
+ primaryDestination !== "AGENTS.md" &&
76
+ target.sharedRuntimeBridge?.visibleBridgePaths?.includes("AGENTS.md")) {
77
+ operations.push(createOperation(contentRoot, workspaceRoot, target, bundle, assetPath, "AGENTS.md"));
78
+ }
79
+ return operations;
80
+ }
71
81
  export function createInstallPlan(root, selection, bundles, profiles, target, options = {}) {
72
82
  const contentRoot = root;
73
83
  const workspaceRoot = options.workspaceRoot ?? selection.rootPath ?? root;
@@ -87,7 +97,7 @@ export function createInstallPlan(root, selection, bundles, profiles, target, op
87
97
  resolved.warnings.push(`${bundle.id} does not target ${selection.targetId} and was skipped.`);
88
98
  return [];
89
99
  }
90
- return bundle.paths.map((assetPath) => createOperation(contentRoot, workspaceRoot, target, bundle, assetPath));
100
+ return bundle.paths.flatMap((assetPath) => createOperationsForAsset(contentRoot, workspaceRoot, target, bundle, assetPath));
91
101
  });
92
102
  const visibilityPolicy = createVisibilityPolicy(workspaceRoot, target);
93
103
  const sharedRuntime = createSharedRuntimePlan(workspaceRoot, selection.targetId, target);
@@ -1 +1 @@
1
- {"version":3,"file":"plan-install.js","sourceRoot":"","sources":["../../../src/application/install/plan-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-install.js","sourceRoot":"","sources":["../../../src/application/install/plan-install.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ export async function refreshWorkspaceRuntime(workspaceRoot, packageRoot = PACKA
45
45
  plan.sharedRuntime = createSharedRuntimePlan(workspaceRoot, targetId, adapter);
46
46
  plan.visibilityPolicy.hiddenCanonicalRoots = plan.sharedRuntime.authoritativeSurfaces;
47
47
  plan.visibilityPolicy.visibleBridgePaths = plan.sharedRuntime.visibleBridgePaths;
48
- await writeSharedRuntime(workspaceRoot, plan);
48
+ await writeSharedRuntime(workspaceRoot, plan, packageRoot);
49
49
  }
50
50
  await writeAgentManifest(workspaceRoot, packageRoot);
51
51
  await saveInstallState(workspaceRoot, {
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-workspace-runtime.js","sourceRoot":"","sources":["../../../src/application/install/refresh-workspace-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAUlF,SAAS,iBAAiB,CAAC,aAAqB,EAAE,QAAgB;IAChE,OAAO;QACL,MAAM,EAAE,WAAW,QAAQ,EAAE;QAC7B,SAAS,EAAE;YACT,QAAQ;YACR,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,EAAE;YACjB,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,OAAO;SACd;QACD,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE;YAChB,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;YAChD,oBAAoB,EAAE,EAAE;YACxB,kBAAkB,EAAE,EAAE;SACvB;QACD,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,kBAAkB,EAAE,EAAE;QACtB,IAAI,EAAE,WAAW,QAAQ,EAAE;QAC3B,iBAAiB,EAAE,CAAC,wBAAwB,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,aAAqB,EACrB,WAAW,GAAG,YAAY;IAE1B,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,gBAAgB,CAAC,aAAa,CAAC;QAC/B,YAAY,CAAsB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;KAC1E,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,eAAe,CACvB,uCAAuC,aAAa,kDAAkD,aAAa,uCAAuC,aAAa,gBAAgB,CACxL,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/E,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC;QACtF,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;QACjF,MAAM,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,kBAAkB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAErD,MAAM,gBAAgB,CAAC,aAAa,EAAE;QACpC,GAAG,KAAK;QACR,cAAc,EAAE,WAAW,CAAC,OAAO;QACnC,oBAAoB,EAAE,sBAAsB;QAC5C,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE;YACV,GAAG,KAAK,CAAC,UAAU;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,aAAa;QACb,SAAS,EAAE,KAAK,CAAC,gBAAgB;QACjC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,kBAAkB,CAAC;QAC3E,oBAAoB,EAAE,sBAAsB;QAC5C,cAAc,EAAE,WAAW,CAAC,OAAO;KACpC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"refresh-workspace-runtime.js","sourceRoot":"","sources":["../../../src/application/install/refresh-workspace-runtime.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { InstallPlan, SharedRuntimePlan } from "../../domain/operations/install-plan.js";
2
2
  import type { TargetAdapter } from "../../domain/targets/adapter.js";
3
3
  export declare function createSharedRuntimePlan(workspaceRoot: string, targetId: string, target: TargetAdapter): SharedRuntimePlan;
4
- export declare function writeSharedRuntime(workspaceRoot: string, plan: InstallPlan): Promise<SharedRuntimePlan | null>;
4
+ export declare function writeSharedRuntime(workspaceRoot: string, plan: InstallPlan, packageRoot?: string): Promise<SharedRuntimePlan | null>;
5
5
  //# sourceMappingURL=shared-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-runtime.d.ts","sourceRoot":"","sources":["../../../src/application/install/shared-runtime.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,WAAW,EAGX,iBAAiB,EAGlB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAyIrE,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,GACpB,iBAAiB,CA2CnB;AAkTD,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA2BpH"}
1
+ {"version":3,"file":"shared-runtime.d.ts","sourceRoot":"","sources":["../../../src/application/install/shared-runtime.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,WAAW,EAGX,iBAAiB,EAGlB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AA4IrE,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,GACpB,iBAAiB,CAmDnB;AAsTD,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,WAAW,EACjB,WAAW,SAAe,GACzB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA2BnC"}
@@ -1,8 +1,9 @@
1
1
  import { execFile } from "node:child_process";
2
2
  import path from "node:path";
3
3
  import { promisify } from "node:util";
4
- import { AI_LAYER_LIBRARY_DIR, AI_LAYER_VISIBLE_MODE, AI_TEMPLATES_DIR, AUTHORITATIVE_AI_LAYER_SURFACES, ensureDir, exists, PACKAGE_ROOT, readJsonFile, RUNTIME_CACHE_DIR, RUNTIME_DECISIONS_DIR, RUNTIME_FILE_INTEREST_FILE, RUNTIME_DIR, RUNTIME_FINDINGS_DIR, RUNTIME_IMPACT_ANALYSIS_FILE, RUNTIME_INDEX_FILE, RUNTIME_INSTRUCTION_PLAN_FILE, RUNTIME_README_FILE, RUNTIME_SCHEMA_VERSION, RUNTIME_RECOMMENDATIONS_FILE, RUNTIME_REPO_DIR, RUNTIME_REPO_MAP_FILE, RUNTIME_RISK_SIGNALS_FILE, RUNTIME_RECURSIVE_DIR, RUNTIME_RECURSIVE_SESSION_FILE, RUNTIME_RECURSIVE_SESSIONS_DIR, RUNTIME_RECURSIVE_SUMMARY_FILE, RUNTIME_SCAN_SUMMARY_FILE, RUNTIME_TARGET_SUPPORT_FILE, RUNTIME_TASKS_DIR, RUNTIME_VALIDATION_GAPS_FILE, writeJsonFile, writeTextFile } from "../../shared/index.js";
4
+ import { AI_LAYER_LIBRARY_DIR, AI_LAYER_VISIBLE_MODE, AI_TEMPLATES_DIR, AUTHORITATIVE_AI_LAYER_SURFACES, ensureDir, exists, PACKAGE_ROOT, readJsonFile, RUNTIME_CACHE_DIR, RUNTIME_DECISIONS_DIR, RUNTIME_FILE_INTEREST_FILE, RUNTIME_DIR, RUNTIME_FINDINGS_DIR, RUNTIME_IMPACT_ANALYSIS_FILE, RUNTIME_INDEX_FILE, RUNTIME_INSTRUCTION_PLAN_FILE, RUNTIME_README_FILE, RUNTIME_SCHEMA_VERSION, RUNTIME_RECOMMENDATIONS_FILE, RUNTIME_REPO_DIR, RUNTIME_REPO_MAP_FILE, RUNTIME_RISK_SIGNALS_FILE, RUNTIME_RECURSIVE_DIR, RUNTIME_RECURSIVE_LANGUAGE_CAPABILITIES_FILE, RUNTIME_RECURSIVE_SESSION_FILE, RUNTIME_RECURSIVE_SESSIONS_DIR, RUNTIME_RECURSIVE_SUMMARY_FILE, RUNTIME_SCAN_SUMMARY_FILE, RUNTIME_TARGET_SUPPORT_FILE, RUNTIME_TASKS_DIR, RUNTIME_VALIDATION_GAPS_FILE, writeJsonFile, writeTextFile } from "../../shared/index.js";
5
5
  import { recommendFromIntelligence } from "../recommendations/recommend-from-intelligence.js";
6
+ import { deriveRecursiveLanguageCapabilities } from "../recursive/derive-language-capabilities.js";
6
7
  const execFileAsync = promisify(execFile);
7
8
  function toPortablePath(value) {
8
9
  return value.replaceAll("\\", "/");
@@ -104,7 +105,8 @@ export function createSharedRuntimePlan(workspaceRoot, targetId, target) {
104
105
  createArtifact(rootDir, "instruction-plan", "instruction", `${RUNTIME_REPO_DIR}/${RUNTIME_INSTRUCTION_PLAN_FILE}`, "Target-aware instruction bridge plans for installed runtimes.", "hforge synthesize-instructions --json"),
105
106
  createArtifact(rootDir, "scan-summary", "repo", `${RUNTIME_REPO_DIR}/${RUNTIME_SCAN_SUMMARY_FILE}`, "Baseline repository scan signals and detected stack evidence.", "hforge scan --json"),
106
107
  createArtifact(rootDir, "validation-gaps", "finding", `${RUNTIME_FINDINGS_DIR}/${RUNTIME_VALIDATION_GAPS_FILE}`, "Detected validation gaps that should influence runtime guidance.", "hforge scan --json"),
107
- createArtifact(rootDir, "risk-signals", "finding", `${RUNTIME_FINDINGS_DIR}/${RUNTIME_RISK_SIGNALS_FILE}`, "Detected risk signals that should influence runtime guidance.", "hforge scan --json")
108
+ createArtifact(rootDir, "risk-signals", "finding", `${RUNTIME_FINDINGS_DIR}/${RUNTIME_RISK_SIGNALS_FILE}`, "Detected risk signals that should influence runtime guidance.", "hforge scan --json"),
109
+ createArtifact(rootDir, "recursive-language-capabilities", "repo", `${RUNTIME_RECURSIVE_DIR}/${RUNTIME_RECURSIVE_LANGUAGE_CAPABILITIES_FILE}`, "Canonical recursive structured-analysis capability map for supported languages and execution posture.", "hforge recursive capabilities --json")
108
110
  ]
109
111
  };
110
112
  }
@@ -290,6 +292,8 @@ async function writeRuntimeBaselineArtifacts(workspaceRoot, runtime, mergedDocum
290
292
  testSignals: baselines.repoIntelligence.testSignals,
291
293
  deploymentSignals: baselines.repoIntelligence.deploymentSignals
292
294
  };
295
+ const recursiveCapabilities = await deriveRecursiveLanguageCapabilities(workspaceRoot, baselines.repoIntelligence);
296
+ recursiveCapabilities.generatedAt = baselines.generatedAt;
293
297
  await Promise.all([
294
298
  writeJsonFile(artifactsById.get("repo-map").path, baselines.repoMap),
295
299
  writeJsonFile(artifactsById.get("recommendations").path, {
@@ -314,7 +318,8 @@ async function writeRuntimeBaselineArtifacts(workspaceRoot, runtime, mergedDocum
314
318
  writeJsonFile(artifactsById.get("risk-signals").path, {
315
319
  generatedAt: baselines.generatedAt,
316
320
  items: baselines.repoIntelligence.riskSignals
317
- })
321
+ }),
322
+ writeJsonFile(artifactsById.get("recursive-language-capabilities").path, recursiveCapabilities)
318
323
  ]);
319
324
  }
320
325
  function renderSharedRuntimeReadme(runtime) {
@@ -349,6 +354,7 @@ function renderSharedRuntimeReadme(runtime) {
349
354
  `- \`.hforge/runtime/tasks/TASK-XXX/${RUNTIME_IMPACT_ANALYSIS_FILE}\` - Derived impact analysis for an active task`,
350
355
  `- \`.hforge/runtime/recursive/${RUNTIME_RECURSIVE_SESSIONS_DIR}/RS-XXX/${RUNTIME_RECURSIVE_SESSION_FILE}\` - Optional recursive draft session with budget, handles, and promotion state`,
351
356
  `- \`.hforge/runtime/recursive/${RUNTIME_RECURSIVE_SESSIONS_DIR}/RS-XXX/${RUNTIME_RECURSIVE_SUMMARY_FILE}\` - Deterministic recursive handoff summary for the session`,
357
+ `- \`.hforge/runtime/recursive/${RUNTIME_RECURSIVE_LANGUAGE_CAPABILITIES_FILE}\` - Canonical recursive structured-analysis capability map for language adapter depth and execution posture`,
352
358
  "",
353
359
  "## Short-Term Cache",
354
360
  ...runtime.cacheSurfaces.map((surface) => `- \`${surface.path}/\` - ${surface.description}`),
@@ -361,12 +367,12 @@ function renderSharedRuntimeReadme(runtime) {
361
367
  ];
362
368
  return `${lines.join("\n")}\n`;
363
369
  }
364
- export async function writeSharedRuntime(workspaceRoot, plan) {
370
+ export async function writeSharedRuntime(workspaceRoot, plan, packageRoot = PACKAGE_ROOT) {
365
371
  const runtime = plan.sharedRuntime;
366
372
  if (!runtime) {
367
373
  return null;
368
374
  }
369
- const packageJson = await readJsonFile(path.join(PACKAGE_ROOT, "package.json"));
375
+ const packageJson = await readJsonFile(path.join(packageRoot, "package.json"));
370
376
  await ensureDir(runtime.rootDir);
371
377
  for (const surface of [...runtime.durableSurfaces, ...runtime.cacheSurfaces]) {
372
378
  await ensureDir(surface.path);