soturail 1.0.1 → 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.
- package/README.md +60 -13
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/agents.js +37 -7
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/feature.d.ts +2 -0
- package/dist/commands/feature.js +28 -0
- package/dist/commands/feature.js.map +1 -0
- package/dist/commands/handoff.d.ts +2 -0
- package/dist/commands/handoff.js +14 -0
- package/dist/commands/handoff.js.map +1 -0
- package/dist/commands/harness.js +20 -0
- package/dist/commands/harness.js.map +1 -1
- package/dist/commands/mcp.js +10 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/report.js +14 -3
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/session.d.ts +2 -0
- package/dist/commands/session.js +17 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/core/agent-exporter.d.ts +39 -2
- package/dist/core/agent-exporter.js +290 -24
- package/dist/core/agent-exporter.js.map +1 -1
- package/dist/core/agent-profile.d.ts +1 -1
- package/dist/core/agent-registry.js +12 -0
- package/dist/core/agent-registry.js.map +1 -1
- package/dist/core/agent-runtime.d.ts +15 -1
- package/dist/core/agent-runtime.js +120 -14
- package/dist/core/agent-runtime.js.map +1 -1
- package/dist/core/code-health.js +3 -0
- package/dist/core/code-health.js.map +1 -1
- package/dist/core/config.d.ts +7 -0
- package/dist/core/config.js +8 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/harness-lifecycle.d.ts +63 -0
- package/dist/core/harness-lifecycle.js +397 -0
- package/dist/core/harness-lifecycle.js.map +1 -0
- package/dist/core/harness-rail.js +1 -0
- package/dist/core/harness-rail.js.map +1 -1
- package/dist/core/mcp-resources.d.ts +27 -0
- package/dist/core/mcp-resources.js +104 -1
- package/dist/core/mcp-resources.js.map +1 -1
- package/dist/core/release-preflight.js +3 -0
- package/dist/core/release-preflight.js.map +1 -1
- package/dist/core/report-rail.d.ts +1 -1
- package/dist/core/report-rail.js +33 -8
- package/dist/core/report-rail.js.map +1 -1
- package/dist/core/schema-readiness.js +12 -1
- package/dist/core/schema-readiness.js.map +1 -1
- package/dist/core/skill-schema.d.ts +2 -2
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/docs/agent-export-contract.md +42 -0
- package/docs/agent-governance-rail.md +89 -0
- package/docs/agent-harness-synthesis-2026.md +101 -0
- package/docs/agent-hosts.md +24 -5
- package/docs/agent-qa-rail.md +92 -0
- package/docs/agents.md +31 -12
- package/docs/assets/demos/README.md +3 -0
- package/docs/assets/screenshots/agents-matrix.svg +35 -0
- package/docs/assets/screenshots/host-doctor.svg +21 -0
- package/docs/assets/screenshots/status-json.svg +30 -0
- package/docs/benchmarking.md +2 -2
- package/docs/conductor-mode.md +44 -0
- package/docs/context-packs.md +18 -0
- package/docs/dashboard-rail.md +6 -0
- package/docs/ecosystem-influences.md +65 -0
- package/docs/eval-datasets.md +40 -0
- package/docs/evaluation-suite.md +6 -0
- package/docs/evidence-provenance-rail.md +70 -0
- package/docs/external-projects-audit.md +29 -0
- package/docs/future-rails-index.md +75 -17
- package/docs/golden-agent-tests.md +44 -0
- package/docs/governance-cost-rail.md +10 -0
- package/docs/harness-lifecycle-rail.md +95 -0
- package/docs/harness-rail.md +27 -0
- package/docs/host-compatibility-rail.md +30 -6
- package/docs/host-matrix-schema.md +43 -0
- package/docs/host-router-rail.md +73 -0
- package/docs/knowledge-rail.md +76 -0
- package/docs/llm-as-judge-policy.md +45 -0
- package/docs/mcp-host-manifest.md +33 -0
- package/docs/mcp-report-resources.md +9 -0
- package/docs/mcp.md +4 -0
- package/docs/media-guide.md +27 -0
- package/docs/multi-agent-workflow-templates.md +63 -0
- package/docs/observability-rail.md +36 -0
- package/docs/quickstart.md +1 -1
- package/docs/rate-limit-and-fallback-policy.md +45 -0
- package/docs/release-workflow.md +12 -1
- package/docs/releases/README.md +3 -0
- package/docs/releases/RELEASE_NOTES_v1.1.0.md +55 -0
- package/docs/releases/RELEASE_NOTES_v1.2.0.md +43 -0
- package/docs/repo-docs-audit-2026-06-05.md +55 -0
- package/docs/report-rail.md +12 -0
- package/docs/resilience-rail.md +48 -0
- package/docs/schema-contracts.md +20 -0
- package/docs/security-boundaries.md +34 -0
- package/docs/skill-rail-2.md +11 -0
- package/docs/stable-command-surface.md +16 -1
- package/docs/tasklet-rail.md +62 -0
- package/docs/tutorial-antigravity.md +7 -2
- package/docs/tutorial-deep-agents-role-packs.md +4 -0
- package/docs/tutorial-gemini-cli.md +4 -0
- package/docs/tutorial-opencode.md +37 -0
- package/docs/v1-contract.md +5 -3
- package/docs/workflow-rail.md +12 -0
- package/examples/agents/README.md +6 -1
- package/examples/agents/opencode.md +26 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -26,9 +26,9 @@ SotuRail is not the agent, not a Claude-only harness, not a Mermaid-only workflo
|
|
|
26
26
|
|
|
27
27
|
## Project Status
|
|
28
28
|
|
|
29
|
-
v1.
|
|
29
|
+
v1.2.0 keeps the stable local Context OS surface, polishes Host Compatibility Rail and adds Harness Lifecycle Rail. The stable surface covers status, reports, dashboard, observability, Project Brain, evaluation, benchmarks, native candidate reporting, baseline snapshots, release checks, workflow/harness/diagram rails, lifecycle state, agent exports, host doctors and read-only MCP report/host resources.
|
|
30
30
|
|
|
31
|
-
Experimental
|
|
31
|
+
Experimental host runtimes remain documented but are not part of the stable contract until promoted. SotuRail does not add cloud telemetry, a required dashboard server, destructive MCP tools, shell execution through MCP or a native-only runtime. TypeScript remains the portable fallback. See [ROADMAP.md](ROADMAP.md), [docs/v1-contract.md](docs/v1-contract.md), [docs/schema-contracts.md](docs/schema-contracts.md), [docs/stable-command-surface.md](docs/stable-command-surface.md), [docs/agent-hosts.md](docs/agent-hosts.md) and [docs/future-rails-index.md](docs/future-rails-index.md).
|
|
32
32
|
|
|
33
33
|
## v0.5.x MVP Rails
|
|
34
34
|
|
|
@@ -209,6 +209,37 @@ soturail release check --strict
|
|
|
209
209
|
|
|
210
210
|
v1.0.0 adds strict schema/readiness/release gates, lightweight code-health and architecture checks, a documented v1 contract, a host compatibility matrix and a golden smoke suite for stable commands. See [docs/quickstart.md](docs/quickstart.md), [docs/v1-contract.md](docs/v1-contract.md), [docs/schema-contracts.md](docs/schema-contracts.md), [docs/clean-code-guidelines.md](docs/clean-code-guidelines.md), [docs/architecture-boundaries.md](docs/architecture-boundaries.md) and [docs/agent-hosts.md](docs/agent-hosts.md).
|
|
211
211
|
|
|
212
|
+
## v1.1.0 Host Compatibility Rail
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
soturail agents matrix --json
|
|
216
|
+
soturail agents export --agent opencode
|
|
217
|
+
soturail agents export --agent antigravity
|
|
218
|
+
soturail agents export --agent deepagents --role reviewer
|
|
219
|
+
soturail agents doctor --host codex
|
|
220
|
+
soturail agents doctor --all --json
|
|
221
|
+
soturail mcp resources host-manifest --host codex
|
|
222
|
+
soturail report agent --agent opencode
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
v1.1.0 adds host matrix 2.0 fields, mirrored exports under `.soturail/agents/<host>/`, per-host doctor reports, OpenCode-compatible exports, Antigravity transition guidance, Gemini legacy-compatible exports, DeepAgents role-pack exports and read-only MCP host manifests. See [docs/host-matrix-schema.md](docs/host-matrix-schema.md), [docs/agent-export-contract.md](docs/agent-export-contract.md), [docs/mcp-host-manifest.md](docs/mcp-host-manifest.md), [docs/tutorial-opencode.md](docs/tutorial-opencode.md) and [docs/media-guide.md](docs/media-guide.md).
|
|
226
|
+
|
|
227
|
+
## v1.2.0 Harness Lifecycle Rail
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
soturail harness init
|
|
231
|
+
soturail harness audit --json
|
|
232
|
+
soturail session start "Implement a focused change"
|
|
233
|
+
soturail feature add "Lifecycle-backed feature"
|
|
234
|
+
soturail feature list
|
|
235
|
+
soturail handoff generate
|
|
236
|
+
soturail session end --summary "Verified the focused change"
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
v1.2.0 adds safe local harness scaffolds, lifecycle audits, one-active-feature tracking, session state and bounded handoffs under `.soturail/harness/` and `.soturail/state/`. Initialization preserves existing files by default, audit does not execute verification commands, and handoffs do not read private shell history.
|
|
240
|
+
|
|
241
|
+
The ecosystem review now distinguishes Hermes as an agent runtime, Odysseus as a workspace/runtime stack and SotuRail as the local-first context/harness OS. A future optional [SotuRail Conductor](docs/conductor-mode.md) remains proposed and is not implemented. See [Harness Lifecycle Rail](docs/harness-lifecycle-rail.md), [Agent And Harness Synthesis 2026](docs/agent-harness-synthesis-2026.md) and [Security Boundaries](docs/security-boundaries.md).
|
|
242
|
+
|
|
212
243
|
## Why SotuRail Exists
|
|
213
244
|
|
|
214
245
|
AI coding agents often receive too much unstable context: full files, noisy test logs, repeated terminal output and long conversational summaries. SotuRail is designed to unify those workflows into one independent local-first tool without sending telemetry or inventing provider metrics.
|
|
@@ -270,7 +301,7 @@ Reports are written to `.soturail/reports/self-dogfood.md` with stable project c
|
|
|
270
301
|
- Agent response compression modes.
|
|
271
302
|
- Knowledge-to-Rules ingestion and validators.
|
|
272
303
|
- Prompt-only and hook-style agent integrations.
|
|
273
|
-
- Agent exports for Claude, Codex, Gemini, Cursor, Antigravity
|
|
304
|
+
- Agent exports for Claude, Codex, Gemini/Gemini-compatible, Cursor, Antigravity, OpenCode, generic hosts and DeepAgents-style role packs.
|
|
274
305
|
- MCP-compatible local stdio server and config helpers.
|
|
275
306
|
- Workflow Rail for local task records, phase evidence and optional worktree planning.
|
|
276
307
|
- Memory Rail with explicit local records, recall, capture and consolidation.
|
|
@@ -283,15 +314,15 @@ Reports are written to `.soturail/reports/self-dogfood.md` with stable project c
|
|
|
283
314
|
|
|
284
315
|
## Planned Next Features
|
|
285
316
|
|
|
286
|
-
Post-v1 work is staged so the stable Context OS surface stays reliable:
|
|
317
|
+
Post-v1 work is staged so the stable Context OS surface stays reliable. v1.1.1 ecosystem documentation/golden export polish and the v1.2.0 Harness Lifecycle slice are delivered; the remaining staged rails include:
|
|
287
318
|
|
|
288
|
-
- v1.
|
|
289
|
-
- v1.
|
|
290
|
-
- v1.
|
|
291
|
-
- v1.
|
|
292
|
-
- v1.
|
|
319
|
+
- v1.2.x Spec, Design And Diagram Rail expansion;
|
|
320
|
+
- v1.3.0 Knowledge, Evidence and Evaluation Rail;
|
|
321
|
+
- v1.4.0 Skill Rail 2.0, Knowledge-to-Skill and Tasklet Packs;
|
|
322
|
+
- v1.5.0 Governance, Cost, Resilience and Host Router Rail;
|
|
323
|
+
- v1.6.0 Agent Governance / Evolution Rail.
|
|
293
324
|
|
|
294
|
-
|
|
325
|
+
Experimental portions of those rails are not stable contracts until promoted.
|
|
295
326
|
|
|
296
327
|
## Future Rails Documentation
|
|
297
328
|
|
|
@@ -327,7 +358,23 @@ Future planning is split across focused docs so the roadmap does not become the
|
|
|
327
358
|
- [Code Graph Seed](docs/code-graph.md)
|
|
328
359
|
- [Roadmap Addendum](docs/roadmap-harness-diagram-payload-addendum.md)
|
|
329
360
|
- [External Projects Audit](docs/external-projects-audit.md)
|
|
361
|
+
- [2026 Agent Harness Synthesis](docs/agent-harness-synthesis-2026.md)
|
|
362
|
+
- [Agent QA Rail](docs/agent-qa-rail.md)
|
|
363
|
+
- [Eval Datasets](docs/eval-datasets.md)
|
|
364
|
+
- [Golden Agent Tests](docs/golden-agent-tests.md)
|
|
365
|
+
- [LLM-As-Judge Policy](docs/llm-as-judge-policy.md)
|
|
366
|
+
- [Evidence And Provenance Rail](docs/evidence-provenance-rail.md)
|
|
367
|
+
- [Agent Governance Rail](docs/agent-governance-rail.md)
|
|
368
|
+
- [Harness Lifecycle Rail](docs/harness-lifecycle-rail.md)
|
|
369
|
+
- [Knowledge Rail](docs/knowledge-rail.md)
|
|
370
|
+
- [Resilience Rail](docs/resilience-rail.md)
|
|
371
|
+
- [Rate Limit And Fallback Policy](docs/rate-limit-and-fallback-policy.md)
|
|
372
|
+
- [Multi-Agent Workflow Templates](docs/multi-agent-workflow-templates.md)
|
|
373
|
+
- [Host Router Rail](docs/host-router-rail.md)
|
|
374
|
+
- [Tasklet Rail](docs/tasklet-rail.md)
|
|
330
375
|
- [Host Compatibility Rail](docs/host-compatibility-rail.md)
|
|
376
|
+
- [Security Boundaries](docs/security-boundaries.md)
|
|
377
|
+
- [SotuRail Conductor Mode](docs/conductor-mode.md)
|
|
331
378
|
- [Design Rail](docs/design-rail.md)
|
|
332
379
|
- [Knowledge Graph Rail](docs/knowledge-graph-rail.md)
|
|
333
380
|
- [Skill Rail 2.0](docs/skill-rail-2.md)
|
|
@@ -354,7 +401,7 @@ soturail --version
|
|
|
354
401
|
Install the stable v1 release exactly with:
|
|
355
402
|
|
|
356
403
|
```bash
|
|
357
|
-
npm install -g soturail@1.
|
|
404
|
+
npm install -g soturail@1.2.0
|
|
358
405
|
```
|
|
359
406
|
|
|
360
407
|
For local development from source:
|
|
@@ -609,7 +656,7 @@ The latest report is written to [benchmarks/reports/latest.md](benchmarks/report
|
|
|
609
656
|
|
|
610
657
|
Local token counts are deterministic estimates. SotuRail reports raw payload tokens, reduced payload tokens, metadata overhead and net estimated tokens. For tiny outputs, compression may be ineffective once recovery metadata is included; SotuRail says that directly while preserving raw recovery paths.
|
|
611
658
|
|
|
612
|
-
Benchmark Rail 2.0 writes `.soturail/bench/latest.json`, `.soturail/bench/latest.md` and versioned reports such as `benchmarks/reports/bench-
|
|
659
|
+
Benchmark Rail 2.0 writes `.soturail/bench/latest.json`, `.soturail/bench/latest.md` and versioned reports such as `benchmarks/reports/bench-v<version>.json`. It covers `brain-scan`, `brain-stale`, `brain-consolidate`, `reverse-claims`, `reducer-large-log`, `jsonl-read-write`, `range-hash`, `file-scan`, `workflow-evidence`, `format-compare`, `json-validate` and `release-preflight`.
|
|
613
660
|
|
|
614
661
|
## Knowledge-to-Rules Engine
|
|
615
662
|
|
|
@@ -688,7 +735,7 @@ v0.10.0 Local reports, observability timeline and static dashboard
|
|
|
688
735
|
v0.10.1 Stability, JSON validity, report polish and v1 readiness
|
|
689
736
|
v1.0.0 Stable Context OS surface and strict contracts
|
|
690
737
|
v1.1.0 Host Compatibility Rail
|
|
691
|
-
v1.2.0
|
|
738
|
+
v1.2.0 Harness Lifecycle Rail + Spec/Design/Diagram planning
|
|
692
739
|
v1.3.0 Knowledge Graph Rail
|
|
693
740
|
v1.4.0 Skill Rail 2.0 And Domain Skill Packs
|
|
694
741
|
v1.5.0 Governance And Cost Rail
|
package/dist/cli.js
CHANGED
|
@@ -13,7 +13,9 @@ import { registerEvalCommand } from "./commands/eval.js";
|
|
|
13
13
|
import { registerExpandCommand } from "./commands/expand.js";
|
|
14
14
|
import { registerFsCommand } from "./commands/fs.js";
|
|
15
15
|
import { registerFormatCommand } from "./commands/format.js";
|
|
16
|
+
import { registerFeatureCommand } from "./commands/feature.js";
|
|
16
17
|
import { registerHarnessCommand } from "./commands/harness.js";
|
|
18
|
+
import { registerHandoffCommand } from "./commands/handoff.js";
|
|
17
19
|
import { registerHooksCommand } from "./commands/hooks.js";
|
|
18
20
|
import { registerIngestCommand } from "./commands/ingest.js";
|
|
19
21
|
import { registerIndexCommand } from "./commands/index.js";
|
|
@@ -31,6 +33,7 @@ import { registerReportCommand } from "./commands/report.js";
|
|
|
31
33
|
import { registerReverseCommand } from "./commands/reverse.js";
|
|
32
34
|
import { registerRulesCommand } from "./commands/rules.js";
|
|
33
35
|
import { registerSelfCommand } from "./commands/self.js";
|
|
36
|
+
import { registerSessionCommand } from "./commands/session.js";
|
|
34
37
|
import { registerSkillsCommand } from "./commands/skills.js";
|
|
35
38
|
import { registerSpecCommand } from "./commands/spec.js";
|
|
36
39
|
import { registerStatsCommand } from "./commands/stats.js";
|
|
@@ -62,7 +65,9 @@ export function buildProgram() {
|
|
|
62
65
|
registerExpandCommand(program);
|
|
63
66
|
registerFsCommand(program);
|
|
64
67
|
registerFormatCommand(program);
|
|
68
|
+
registerFeatureCommand(program);
|
|
65
69
|
registerHarnessCommand(program);
|
|
70
|
+
registerHandoffCommand(program);
|
|
66
71
|
registerHooksCommand(program);
|
|
67
72
|
registerIngestCommand(program);
|
|
68
73
|
registerSpecCommand(program);
|
|
@@ -76,6 +81,7 @@ export function buildProgram() {
|
|
|
76
81
|
registerReverseCommand(program);
|
|
77
82
|
registerReleaseCommand(program);
|
|
78
83
|
registerSelfCommand(program);
|
|
84
|
+
registerSessionCommand(program);
|
|
79
85
|
registerSkillsCommand(program);
|
|
80
86
|
registerStatusCommand(program);
|
|
81
87
|
registerDoctorCommand(program);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/agents.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { explainAgents, lintAgentDocs, splitContextPlan } from "../core/agent-docs-hygiene.js";
|
|
2
|
-
import { agentDoctor, exportAgents, installAgent, uninstallAgent } from "../core/agent-exporter.js";
|
|
2
|
+
import { agentDoctor, agentHostDoctor, agentHostDoctorAll, exportAgents, installAgent, renderAgentHostDoctor, renderAgentHostDoctorSummary, uninstallAgent } from "../core/agent-exporter.js";
|
|
3
3
|
import { formatAgentList } from "../core/agent-registry.js";
|
|
4
4
|
import { agentStatus, buildAgentHostMatrix, listAgentCapabilities, renderAgentCapabilities, renderAgentHostMatrix, renderAgentStatus } from "../core/agent-runtime.js";
|
|
5
5
|
import { SOTURAIL_VERSION } from "../core/version.js";
|
|
@@ -43,7 +43,24 @@ export function registerAgentsCommand(program) {
|
|
|
43
43
|
const status = await agentStatus();
|
|
44
44
|
process.stdout.write(options.json ? `${JSON.stringify(status, null, 2)}\n` : renderAgentStatus(status));
|
|
45
45
|
});
|
|
46
|
-
agents
|
|
46
|
+
agents
|
|
47
|
+
.command("doctor")
|
|
48
|
+
.description("Check agent integration readiness.")
|
|
49
|
+
.option("--verbose", "Include host matrix, policy and dry-run guidance")
|
|
50
|
+
.option("--host <host>", "Run host-specific v1.1 doctor")
|
|
51
|
+
.option("--all", "Run host-specific doctor checks for every host")
|
|
52
|
+
.option("--json", "Print machine-readable JSON for host-specific doctor output")
|
|
53
|
+
.action(async (options) => {
|
|
54
|
+
if (options.all) {
|
|
55
|
+
const summary = await agentHostDoctorAll(process.cwd());
|
|
56
|
+
process.stdout.write(options.json ? `${JSON.stringify(summary, null, 2)}\n` : renderAgentHostDoctorSummary(summary));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (options.host) {
|
|
60
|
+
const report = await agentHostDoctor(options.host, process.cwd());
|
|
61
|
+
process.stdout.write(options.json ? `${JSON.stringify(report, null, 2)}\n` : renderAgentHostDoctor(report));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
47
64
|
process.stdout.write(await agentDoctor(process.cwd(), { verbose: options.verbose === true }));
|
|
48
65
|
});
|
|
49
66
|
agents.command("lint").description("Lint root agent docs for size, freshness and safety notes.").action(async () => {
|
|
@@ -55,22 +72,35 @@ export function registerAgentsCommand(program) {
|
|
|
55
72
|
agents
|
|
56
73
|
.command("explain")
|
|
57
74
|
.description("Explain what each agent export receives and what stays local.")
|
|
58
|
-
.requiredOption("--agent <agent>", "claude, codex, gemini, cursor, antigravity, generic, opencode, amp, kiro, deepagents, deepagents-js, or all")
|
|
75
|
+
.requiredOption("--agent <agent>", "claude, codex, gemini, gemini-legacy, cursor, antigravity, generic, opencode, amp, kiro, deepagents, deepagents-js, or all")
|
|
59
76
|
.action((options) => {
|
|
60
77
|
process.stdout.write(explainAgents(options.agent));
|
|
61
78
|
});
|
|
62
79
|
agents
|
|
63
80
|
.command("export")
|
|
64
81
|
.description("Export prompt/context integration files for review.")
|
|
65
|
-
.requiredOption("--agent <agent>", "claude, codex, gemini, cursor, antigravity, generic, opencode, amp, kiro, deepagents, deepagents-js, or all")
|
|
82
|
+
.requiredOption("--agent <agent>", "claude, codex, gemini, gemini-legacy, cursor, antigravity, generic, opencode, amp, kiro, deepagents, deepagents-js, or all")
|
|
83
|
+
.option("--out <path>", "Override the output directory for exports")
|
|
84
|
+
.option("--format <format>", "Export format hint: markdown, tagged, or json")
|
|
85
|
+
.option("--include <scope>", "Include hint for safe context selection")
|
|
86
|
+
.option("--role <role>", "Role hint for role-pack style exports")
|
|
66
87
|
.action(async (options) => {
|
|
67
|
-
const
|
|
88
|
+
const exportOptions = {};
|
|
89
|
+
if (options.out)
|
|
90
|
+
exportOptions.out = options.out;
|
|
91
|
+
if (options.format)
|
|
92
|
+
exportOptions.format = options.format;
|
|
93
|
+
if (options.include)
|
|
94
|
+
exportOptions.include = options.include;
|
|
95
|
+
if (options.role)
|
|
96
|
+
exportOptions.role = options.role;
|
|
97
|
+
const result = await exportAgents(options.agent ?? "all", exportOptions, process.cwd());
|
|
68
98
|
process.stdout.write(`Agent exports written:\n${result.written.join("\n")}\n`);
|
|
69
99
|
});
|
|
70
100
|
agents
|
|
71
101
|
.command("install")
|
|
72
102
|
.description("Install reviewed project-local agent integration files.")
|
|
73
|
-
.requiredOption("--agent <agent>", "claude, codex, gemini, cursor, antigravity, generic, opencode, amp, kiro, deepagents, deepagents-js, or all")
|
|
103
|
+
.requiredOption("--agent <agent>", "claude, codex, gemini, gemini-legacy, cursor, antigravity, generic, opencode, amp, kiro, deepagents, deepagents-js, or all")
|
|
74
104
|
.option("--mode <mode>", "prompt-only, mcp, safe-hooks, or rules")
|
|
75
105
|
.option("--dry-run", "Print planned changes without writing")
|
|
76
106
|
.option("--yes", "Acknowledge reviewed project-local install")
|
|
@@ -83,7 +113,7 @@ export function registerAgentsCommand(program) {
|
|
|
83
113
|
agents
|
|
84
114
|
.command("uninstall")
|
|
85
115
|
.description("Restore backups for project-local agent integration files when available.")
|
|
86
|
-
.requiredOption("--agent <agent>", "claude, codex, gemini, cursor, antigravity, generic, opencode, amp, kiro, deepagents, deepagents-js, or all")
|
|
116
|
+
.requiredOption("--agent <agent>", "claude, codex, gemini, gemini-legacy, cursor, antigravity, generic, opencode, amp, kiro, deepagents, deepagents-js, or all")
|
|
87
117
|
.option("--dry-run", "Print planned rollback without writing")
|
|
88
118
|
.action(async (options) => {
|
|
89
119
|
process.stdout.write(await uninstallAgent(options.agent ?? "all", options.dryRun === undefined ? {} : { dryRun: options.dryRun }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { addFeature, completeFeature, loadFeatureList, renderFeatureList, startFeature } from "../core/harness-lifecycle.js";
|
|
2
|
+
export function registerFeatureCommand(program) {
|
|
3
|
+
const feature = program.command("feature").description("Manage the local feature lifecycle list.");
|
|
4
|
+
feature.command("add").description("Add a planned feature.")
|
|
5
|
+
.argument("<title>", "Feature title")
|
|
6
|
+
.option("--done <criterion...>", "Definition-of-done criterion")
|
|
7
|
+
.action(async (title, options) => {
|
|
8
|
+
const record = await addFeature(title, options.done ?? []);
|
|
9
|
+
process.stdout.write(`Feature added: ${record.id}\nstatus: ${record.status}\n`);
|
|
10
|
+
});
|
|
11
|
+
feature.command("start").description("Mark one feature active.")
|
|
12
|
+
.argument("<id>", "Feature id")
|
|
13
|
+
.action(async (id) => {
|
|
14
|
+
const record = await startFeature(id);
|
|
15
|
+
process.stdout.write(`Feature started: ${record.id}\nstatus: ${record.status}\n`);
|
|
16
|
+
});
|
|
17
|
+
feature.command("done").description("Mark a feature done and attach evidence paths.")
|
|
18
|
+
.argument("<id>", "Feature id")
|
|
19
|
+
.option("--evidence <path...>", "Evidence path")
|
|
20
|
+
.action(async (id, options) => {
|
|
21
|
+
const record = await completeFeature(id, options.evidence ?? []);
|
|
22
|
+
process.stdout.write(`Feature completed: ${record.id}\nstatus: ${record.status}\n`);
|
|
23
|
+
});
|
|
24
|
+
feature.command("list").description("List local lifecycle features.").action(async () => {
|
|
25
|
+
process.stdout.write(renderFeatureList(await loadFeatureList()));
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,YAAY,EACb,MAAM,8BAA8B,CAAC;AAEtC,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC;IAEnG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC;SACzD,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;SACpC,MAAM,CAAC,uBAAuB,EAAE,8BAA8B,CAAC;SAC/D,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA4B,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,EAAE,aAAa,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC;SAC7D,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,EAAE,aAAa,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC;SAClF,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,sBAAsB,EAAE,eAAe,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAgC,EAAE,EAAE;QAC7D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,EAAE,aAAa,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACtF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { generateHandoff } from "../core/harness-lifecycle.js";
|
|
2
|
+
export function registerHandoffCommand(program) {
|
|
3
|
+
const handoff = program.command("handoff").description("Generate safe local session handoffs.");
|
|
4
|
+
handoff.command("generate").description("Create or update the local session handoff.")
|
|
5
|
+
.option("--objective <text>", "Current objective")
|
|
6
|
+
.option("--completed <text>", "Last completed work")
|
|
7
|
+
.option("--blocker <text>", "Known blocker")
|
|
8
|
+
.option("--next <text>", "Next recommended step")
|
|
9
|
+
.action(async (options) => {
|
|
10
|
+
await generateHandoff(options);
|
|
11
|
+
process.stdout.write("SotuRail handoff generated\npath: .soturail/state/session-handoff.md\n");
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=handoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC;IAEhG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,6CAA6C,CAAC;SACnF,MAAM,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;SACjD,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;SACnD,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC;SAC3C,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,OAAoF,EAAE,EAAE;QACrG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/harness.js
CHANGED
|
@@ -1,7 +1,27 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { checkHarnessContract, explainHarnessFailure, harnessDoctor, initHarnessContract, listHarnessFailures, noteHarnessFailure, renderHarnessFailures } from "../core/harness-rail.js";
|
|
3
|
+
import { auditHarnessLifecycle, initHarnessLifecycle, renderHarnessAudit } from "../core/harness-lifecycle.js";
|
|
3
4
|
export function registerHarnessCommand(program) {
|
|
4
5
|
const harness = program.command("harness").description("Record local harness failures and acceptance contracts.");
|
|
6
|
+
harness.command("init").description("Create the safe local Harness Lifecycle scaffold.")
|
|
7
|
+
.option("--force", "Overwrite lifecycle scaffold files after explicit review")
|
|
8
|
+
.action(async (options) => {
|
|
9
|
+
const result = await initHarnessLifecycle(process.cwd(), { force: options.force === true });
|
|
10
|
+
process.stdout.write([
|
|
11
|
+
"SotuRail harness init",
|
|
12
|
+
`created: ${result.created.length}`,
|
|
13
|
+
`skipped: ${result.skipped.length}`,
|
|
14
|
+
...result.created.map((file) => `- created ${file}`),
|
|
15
|
+
...result.skipped.map((file) => `- preserved ${file}`),
|
|
16
|
+
"next: soturail harness audit"
|
|
17
|
+
].join("\n") + "\n");
|
|
18
|
+
});
|
|
19
|
+
harness.command("audit").description("Audit local harness lifecycle readiness without executing checks.")
|
|
20
|
+
.option("--json", "Print machine-readable JSON")
|
|
21
|
+
.action(async (options) => {
|
|
22
|
+
const report = await auditHarnessLifecycle();
|
|
23
|
+
process.stdout.write(options.json ? `${JSON.stringify(report, null, 2)}\n` : renderHarnessAudit(report));
|
|
24
|
+
});
|
|
5
25
|
harness
|
|
6
26
|
.command("note")
|
|
7
27
|
.description("Record an agent mistake, repeated failure, or missed check.")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/commands/harness.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/commands/harness.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from "node:path";
|
|
|
3
3
|
import { ensureWorkspace, getWorkspacePaths, relativeToRoot } from "../core/config.js";
|
|
4
4
|
import { mcpConfig } from "../core/agent-exporter.js";
|
|
5
5
|
import { mcpExposureReport, renderMcpExposure } from "../core/mcp-exposure.js";
|
|
6
|
-
import { writeReportResourceManifest } from "../core/mcp-resources.js";
|
|
6
|
+
import { writeHostResourceManifest, writeReportResourceManifest } from "../core/mcp-resources.js";
|
|
7
7
|
import { mcpDoctor, mcpManifest, mcpSmoke, serveMcpStdio } from "../core/mcp-server.js";
|
|
8
8
|
import { SOTURAIL_VERSION } from "../core/version.js";
|
|
9
9
|
export function registerMcpCommand(program) {
|
|
@@ -18,6 +18,15 @@ export function registerMcpCommand(program) {
|
|
|
18
18
|
resources.command("report").description("Write a static manifest for read-only report resources.").action(async () => {
|
|
19
19
|
process.stdout.write((await writeReportResourceManifest(process.cwd())).output);
|
|
20
20
|
});
|
|
21
|
+
resources
|
|
22
|
+
.command("host-manifest")
|
|
23
|
+
.description("Write a host-specific read-only MCP resource manifest.")
|
|
24
|
+
.option("--host <host>", "Agent host id", "generic")
|
|
25
|
+
.option("--json", "Print machine-readable JSON")
|
|
26
|
+
.action(async (options) => {
|
|
27
|
+
const result = await writeHostResourceManifest(process.cwd(), options.host ?? "generic");
|
|
28
|
+
process.stdout.write(options.json ? `${JSON.stringify(result.manifest, null, 2)}\n` : result.output);
|
|
29
|
+
});
|
|
21
30
|
mcp.command("exposure").description("Report MCP tools/resources/prompts and risk notes.").option("--json", "Print machine-readable JSON").action(async (options) => {
|
|
22
31
|
const report = await mcpExposureReport();
|
|
23
32
|
process.stdout.write(options.json ? `${JSON.stringify(report, null, 2)}\n` : renderMcpExposure(report));
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/report.js
CHANGED
|
@@ -23,7 +23,7 @@ export function registerReportCommand(program) {
|
|
|
23
23
|
report.command("github-summary").description("Write a GitHub Actions step summary artifact.").action(async () => {
|
|
24
24
|
process.stdout.write(await reportGithubSummary());
|
|
25
25
|
});
|
|
26
|
-
report.command("agent").description("Write an agent-readable report.").requiredOption("--agent <agent>", "codex, claude, gemini, or generic").action(async (options) => {
|
|
26
|
+
report.command("agent").description("Write an agent-readable report.").requiredOption("--agent <agent>", "codex, claude, gemini, gemini-legacy, cursor, opencode, antigravity, deepagents, deepagents-js, amp, kiro, or generic").action(async (options) => {
|
|
27
27
|
process.stdout.write(await reportAgent(process.cwd(), parseAgent(options.agent)));
|
|
28
28
|
});
|
|
29
29
|
report.command("diff").description("Compare latest report with previous report history.").action(async () => {
|
|
@@ -36,8 +36,19 @@ function parseFormat(value) {
|
|
|
36
36
|
throw new Error("Supported report formats: html, md, json.");
|
|
37
37
|
}
|
|
38
38
|
function parseAgent(value) {
|
|
39
|
-
if (value === "codex"
|
|
39
|
+
if (value === "codex"
|
|
40
|
+
|| value === "claude"
|
|
41
|
+
|| value === "gemini"
|
|
42
|
+
|| value === "gemini-legacy"
|
|
43
|
+
|| value === "cursor"
|
|
44
|
+
|| value === "opencode"
|
|
45
|
+
|| value === "antigravity"
|
|
46
|
+
|| value === "deepagents"
|
|
47
|
+
|| value === "deepagents-js"
|
|
48
|
+
|| value === "generic"
|
|
49
|
+
|| value === "amp"
|
|
50
|
+
|| value === "kiro")
|
|
40
51
|
return value;
|
|
41
|
-
throw new Error("Supported report agents: codex, claude, gemini, generic.");
|
|
52
|
+
throw new Error("Supported report agents: codex, claude, gemini, gemini-legacy, cursor, opencode, antigravity, deepagents, deepagents-js, amp, kiro, generic.");
|
|
42
53
|
}
|
|
43
54
|
//# sourceMappingURL=report.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,YAAY,EAGb,MAAM,wBAAwB,CAAC;AAEhC,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,yDAAyD,CAAC,CAAC;IAEhH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,gEAAgE,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACtH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACnG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACxF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC,cAAc,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QACvL,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mDAAmD,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QAC1G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mDAAmD,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QAC1G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,+CAA+C,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QAC9G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,mBAAmB,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC,cAAc,CAAC,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { endSession, startSession } from "../core/harness-lifecycle.js";
|
|
2
|
+
export function registerSessionCommand(program) {
|
|
3
|
+
const session = program.command("session").description("Manage local harness lifecycle sessions.");
|
|
4
|
+
session.command("start").description("Start a local session with a clear objective.")
|
|
5
|
+
.argument("<objective>", "Session objective")
|
|
6
|
+
.action(async (objective) => {
|
|
7
|
+
const record = await startSession(objective);
|
|
8
|
+
process.stdout.write(`Session started: ${record.id}\nobjective: ${record.objective}\nnext: soturail feature list\n`);
|
|
9
|
+
});
|
|
10
|
+
session.command("end").description("End the active session and generate a handoff.")
|
|
11
|
+
.option("--summary <text>", "Last completed work summary")
|
|
12
|
+
.action(async (options) => {
|
|
13
|
+
const record = await endSession(options.summary);
|
|
14
|
+
process.stdout.write(`Session ended: ${record.id}\nhandoff: .soturail/state/session-handoff.md\n`);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAExE,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC;IAEnG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,+CAA+C,CAAC;SAClF,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,EAAE,gBAAgB,MAAM,CAAC,SAAS,iCAAiC,CAAC,CAAC;IACvH,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC;SACjF,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,OAA6B,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,EAAE,iDAAiD,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -2,10 +2,43 @@ import type { AgentExportFile, AgentId, AgentInstallOptions } from "./agent-prof
|
|
|
2
2
|
export interface AgentExportResult {
|
|
3
3
|
written: string[];
|
|
4
4
|
}
|
|
5
|
+
export interface AgentExportOptions {
|
|
6
|
+
out?: string;
|
|
7
|
+
format?: string;
|
|
8
|
+
include?: string;
|
|
9
|
+
role?: string;
|
|
10
|
+
}
|
|
5
11
|
export interface AgentInstallResult {
|
|
6
12
|
lines: string[];
|
|
7
13
|
}
|
|
8
|
-
export
|
|
14
|
+
export interface AgentHostDoctorReport {
|
|
15
|
+
schemaVersion: "soturail.agent-host-doctor.v1";
|
|
16
|
+
createdAt: string;
|
|
17
|
+
version: string;
|
|
18
|
+
host: string;
|
|
19
|
+
status: "passed" | "warning" | "failed";
|
|
20
|
+
matrixStatus: string;
|
|
21
|
+
exportPaths: string[];
|
|
22
|
+
checks: Array<{
|
|
23
|
+
id: string;
|
|
24
|
+
status: "passed" | "warning" | "failed";
|
|
25
|
+
summary: string;
|
|
26
|
+
}>;
|
|
27
|
+
warnings: string[];
|
|
28
|
+
blockingIssues: string[];
|
|
29
|
+
nextCommands: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface AgentHostDoctorSummary {
|
|
32
|
+
schemaVersion: "soturail.agent-host-doctor-summary.v1";
|
|
33
|
+
createdAt: string;
|
|
34
|
+
version: string;
|
|
35
|
+
status: "passed" | "warning" | "failed";
|
|
36
|
+
hosts: AgentHostDoctorReport[];
|
|
37
|
+
warnings: string[];
|
|
38
|
+
blockingIssues: string[];
|
|
39
|
+
nextCommands: string[];
|
|
40
|
+
}
|
|
41
|
+
export declare function exportAgents(agentValue: string, rootOrOptions?: string | AgentExportOptions, maybeRoot?: string): Promise<AgentExportResult>;
|
|
9
42
|
export declare function installAgent(agentValue: string, options?: AgentInstallOptions, root?: string): Promise<AgentInstallResult>;
|
|
10
43
|
export declare function uninstallAgent(agentValue: string, options?: {
|
|
11
44
|
dryRun?: boolean;
|
|
@@ -13,5 +46,9 @@ export declare function uninstallAgent(agentValue: string, options?: {
|
|
|
13
46
|
export declare function agentDoctor(root?: string, options?: {
|
|
14
47
|
verbose?: boolean;
|
|
15
48
|
}): Promise<string>;
|
|
16
|
-
export declare function
|
|
49
|
+
export declare function agentHostDoctor(agentValue: string, root?: string): Promise<AgentHostDoctorReport>;
|
|
50
|
+
export declare function agentHostDoctorAll(root?: string): Promise<AgentHostDoctorSummary>;
|
|
51
|
+
export declare function renderAgentHostDoctor(report: AgentHostDoctorReport): string;
|
|
52
|
+
export declare function renderAgentHostDoctorSummary(summary: AgentHostDoctorSummary): string;
|
|
53
|
+
export declare function buildAgentExportFiles(agent: AgentId, root?: string, options?: AgentExportOptions): Promise<AgentExportFile[]>;
|
|
17
54
|
export declare function mcpConfig(agent?: AgentId | "cursor" | "generic"): Record<string, unknown>;
|