@gluecharm-lab/easyspecs-cli 0.3.4 → 0.3.6
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/commands.md +5 -5
- package/dist/main.cjs +1797 -548
- package/dist/main.cjs.map +4 -4
- package/package.json +1 -1
- package/resources/opencode-agents/agent-list-infrastructure-components.md +187 -0
- package/resources/opencode-agents/agent-list-infrastructure.md +222 -0
- package/resources/opencode-agents/agent-list-qa-test-cases.md +187 -0
- package/resources/opencode-agents/agent-list-qa.md +222 -0
- package/resources/opencode-agents/agent-md-infrastructure-component-detail.md +165 -0
- package/resources/opencode-agents/agent-md-infrastructure-detail.md +95 -0
- package/resources/opencode-agents/agent-md-qa-detail.md +95 -0
- package/resources/opencode-agents/agent-md-qa-test-case-detail.md +165 -0
- package/resources/opencode-agents/agent-review-infrastructure-components-list.md +34 -0
- package/resources/opencode-agents/agent-review-infrastructure-list.md +60 -0
- package/resources/opencode-agents/agent-review-qa-list.md +60 -0
- package/resources/opencode-agents/agent-review-qa-test-cases-list.md +34 -0
- package/resources/schemas/context-lists/features-list.schema.json +2 -2
- package/resources/schemas/context-lists/infrastructure-components-list.schema.json +175 -0
- package/resources/schemas/context-lists/infrastructure-list.schema.json +179 -0
- package/resources/schemas/context-lists/qa-list.schema.json +187 -0
- package/resources/schemas/context-lists/qa-test-cases-list.schema.json +180 -0
- package/resources/schemas/context-lists/zero-reference-classifier-record.schema.json +2 -0
- package/resources/schemas/context-lists/zero-reference-routing.schema.json +2 -0
- package/resources/schemas/context-lists/zero-reference-triage-record.schema.json +4 -4
- package/resources/schemas/index-application-context.schema.json +9 -3
package/commands.md
CHANGED
|
@@ -68,11 +68,11 @@ Environment (stderr styling): `**NO_COLOR`** (any non-empty value) disables ANSI
|
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
71
|
-
## Workstation host inventory (**SRS-
|
|
71
|
+
## Workstation host inventory (**SRS-75** / **SRS-62**)
|
|
72
72
|
|
|
73
|
-
`**easyspecs-cli workstation info**` prints the CPU count used for the **SRS-
|
|
73
|
+
`**easyspecs-cli workstation info**` prints the CPU count used for the **SRS-75 §4** heuristic (restored **SRS-64 §4.1**), total installed RAM, **`N_sys`** (JSON key **`maxSystemConcurrentAiWorkstations`**), and **`hostHardMaxConcurrentAi`** = **`min(N_sys, 64)`** (product agent ceiling per **SRS-62**). **macOS** (`darwin`) and **Linux** only; on other platforms the CLI exits **non-zero**, writes a short message to stderr, and does **not** print JSON on stdout (even if **`--json`** was passed).
|
|
74
74
|
|
|
75
|
-
**Formula (SRS-
|
|
75
|
+
**Formula (SRS-75 §4 / SRS-64 §4.1):** `N_cpu_float(P) = 15 + 8.5×(P−1)` for **`P ≤ 11`**, else **`100 + 8.5×(P−11)`**; `N_float = N_cpu_float(P) × min(1, R_GiB / (4×P))`; **`N_sys = max(1, round(N_float))`**; **`hostHardMax = min(64, N_sys)`**. **Worked examples:** **`P=4, R=16 GiB → N_sys = 41 → hostHardMax = 41`**; **`P=11, R=44 GiB → N_sys = 100 → hostHardMax = 64`**. The **SRS-69** compact form `min(P, R/8)` is **withdrawn**. While the workstation pool runs, **SRS-62 R6** lowers **`adaptiveMaxConcurrentAi`** when host load-average pressure exceeds **85%** (normalised per logical CPU — see **`cpuPressureSample.ts`**). Operators on shared / interactive hosts should set **`easyspecs.workstations.maxConcurrentAi`** *below* the reported `hostHardMax`. See live signals via **`[host-pool]`** / **`[host-pool-rec]`** (**SRS-68**).
|
|
76
76
|
|
|
77
77
|
Use the **global** **`--json`** flag (before the subcommand) for one parseable summary line. JSON includes **`totalMemBytes`**, **`platform`**, **`cpusForCap`**, **`cpusForCapSource`**, **`physicalCpus`** (integer when physical cores are known, else **`null`**), **`maxSystemConcurrentAiWorkstations`**, and **`hostHardMaxConcurrentAi`**.
|
|
78
78
|
|
|
@@ -85,7 +85,7 @@ When Analysis (or other callers) passes a **`diagnosticLog`** sink into the exte
|
|
|
85
85
|
- **`scope=host`** — machine-wide **RAM** (**total** / **free** / **used** bytes) plus **1-minute load average**, logical **CPU** count, and **load / CPUs** (not the same metric as the **SRS-62** runtime pool **CPU guard** — see **[SRS-65](../../.gluecharm/docs/srs/srs-65.md)**).
|
|
86
86
|
- **`scope=child`** — once per run: **child CPU time** (milliseconds) and **RSS** bytes for that **PID** (**Linux**: **`/proc`**, **macOS**: **`ps`**), or **`childRssBytes=unknown`** on unsupported platforms / read errors.
|
|
87
87
|
|
|
88
|
-
Tune concurrent agents with **`easyspecs.workstations.maxConcurrentAi`**, **`applyHostConcurrencyCap`**, and **`easyspecs-cli workstation info`** (**SRS-62** / **SRS-
|
|
88
|
+
Tune concurrent agents with **`easyspecs.workstations.maxConcurrentAi`**, **`applyHostConcurrencyCap`**, and **`easyspecs-cli workstation info`** (**SRS-62** / **SRS-75**); these lines help interpret **live** pressure alongside that configuration.
|
|
89
89
|
|
|
90
90
|
### Workstation pool host pressure (**SRS-68**)
|
|
91
91
|
|
|
@@ -178,7 +178,7 @@ Each row lists **command-specific CLI tokens**, then **what configuration applie
|
|
|
178
178
|
| `auth status` | — | Reads session file. |
|
|
179
179
|
| `run synthesis` | — | Single SRS-9 context pass (same as extension **Run Analysis**). `**requireOpenCode`** → executable + credentials unless skip flag. Uses `**merged.pipelineOpenCode**` from `**config.json**`. `**--promote` / `--no-promote**` controls promotion after success. |
|
|
180
180
|
| `run synthesis resume-missing`, `run synthesis resume-synthesis` | Optional `**--worktree <path>**` | Same implementation: resolves checkout via `--worktree` or stored snapshot (`[resolveAdHocCheckoutRoot](../../src/cli/main.ts)`). OpenCode + `**merged.pipelineOpenCode**`. |
|
|
181
|
-
| `analysis` | Optional tail: `**--force-new-context-analysis**`, `**--no-worktree**` / `**--noworktree**` (**SRS-71**: use **`<repoRoot>`** as the analysis checkout; no detached temp worktree). **`--upload`** → usage exit. **`--synthesis-only`**: accepted as a **hidden** Commander option (legacy scripts); **ignored** with one stderr **`[deprecated]`** line (**SRS-60**). | **SRS-32** full **Factory** loop: synthesis convergence (until no missing artefacts), coverage, zero-ref, report, **link mapping**, index assembly; **Phase 7** backend sync is skipped in CLI (**`skipBackendSync`**). **On success:** always promotes **`.gluecharm/context`** from the analysis worktree into **`<repoRoot>`** unless **`--no-promote`** or the checkout is already the repo root (stderr **`[pipeline:analysis]`**); **`easyspecs.analysis.promoteContextToWorkspace`** does **not** apply to this step. Push context with **`upload context`** / **`upload republish`** after analysis if you need cloud sync. Factory timing from `**merged.factory`** + `**--ci**` defaults. Debug: `**easyspecs.factory.debug**`. OpenCode options from `**merged.pipelineOpenCode**`. **SRS-46:** if `**easyspecs.factory.cloudContextAnalyzed`** is `**true**` and `**--force-new-context-analysis**` is absent, exits **0** without running the Factory (`**analysisSkipped**`, …). **SRS-59:** stale worktree registration recovery — see **§ Analysis git checkout** below. |
|
|
181
|
+
| `analysis` | Optional tail: `**--force-new-context-analysis**`, `**--no-worktree**` / `**--noworktree**` (**SRS-71**: use **`<repoRoot>`** as the analysis checkout; no detached temp worktree). **`--zero-reference-convergence=strict|best_effort`** (**SRS-73** — overrides `**easyspecs.factory.zeroReferenceRemediation.convergence**` for this run). **`--upload`** → usage exit. **`--synthesis-only`**: accepted as a **hidden** Commander option (legacy scripts); **ignored** with one stderr **`[deprecated]`** line (**SRS-60**). | **SRS-32** full **Factory** loop: synthesis convergence (until no missing artefacts), coverage, zero-ref, report, **link mapping**, index assembly; **Phase 7** backend sync is skipped in CLI (**`skipBackendSync`**). **On success:** always promotes **`.gluecharm/context`** from the analysis worktree into **`<repoRoot>`** unless **`--no-promote`** or the checkout is already the repo root (stderr **`[pipeline:analysis]`**); **`easyspecs.analysis.promoteContextToWorkspace`** does **not** apply to this step. Push context with **`upload context`** / **`upload republish`** after analysis if you need cloud sync. Factory timing from `**merged.factory`** + `**--ci**` defaults. Debug: `**easyspecs.factory.debug**`. OpenCode options from `**merged.pipelineOpenCode**`. **SRS-46:** if `**easyspecs.factory.cloudContextAnalyzed`** is `**true**` and `**--force-new-context-analysis**` is absent, exits **0** without running the Factory (`**analysisSkipped**`, …). **SRS-59:** stale worktree registration recovery — see **§ Analysis git checkout** below. |
|
|
182
182
|
| `update context` | Optional `**--no-worktree**` / `**--noworktree**` (**SRS-71**). **SRS-60** removed `**--upload**`. | **SRS-55:** incremental context refresh — baseline → git delta → analysis checkout → `**changes-since-date.md`** → optional remediation → **`--promote` / `--no-promote**` (global) → persist `**lastRunAt**`. With **`--no-worktree`**, the checkout is **`<repoRoot>`** (no temp worktree; seed/promote steps that would copy repo → same repo are skipped). Run **`upload context`** separately if you need cloud sync. |
|
|
183
183
|
| `diagnose reference-coverage` | `**--root workspace**` | `**--root worktree**`, optional `**--worktree <path>**` | Gate when `**easyspecs.diagnose.zeroReference.maxPercentNonReferenced**` is a finite number (not `**null**`): failure when metric exceeds it. |
|
|
184
184
|
| `diagnose coordination-duplicates` | Same `**--root**` / `**--worktree**` | `**easyspecs.diagnose.coordinationDuplicates.strict**`: when `**true**` (default), duplicate/orphan issues fail the exit code. |
|