soturail 0.7.0 → 0.8.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 (48) hide show
  1. package/README.md +38 -3
  2. package/dist/cli.js +4 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/brain.d.ts +2 -0
  5. package/dist/commands/brain.js +32 -0
  6. package/dist/commands/brain.js.map +1 -0
  7. package/dist/commands/eval.js +9 -4
  8. package/dist/commands/eval.js.map +1 -1
  9. package/dist/commands/reverse.d.ts +2 -0
  10. package/dist/commands/reverse.js +20 -0
  11. package/dist/commands/reverse.js.map +1 -0
  12. package/dist/commands/rules.d.ts +1 -0
  13. package/dist/commands/rules.js +24 -0
  14. package/dist/commands/rules.js.map +1 -1
  15. package/dist/core/agent-exporter.js +1 -0
  16. package/dist/core/agent-exporter.js.map +1 -1
  17. package/dist/core/agent-runtime.js +5 -2
  18. package/dist/core/agent-runtime.js.map +1 -1
  19. package/dist/core/config.d.ts +16 -0
  20. package/dist/core/config.js +27 -2
  21. package/dist/core/config.js.map +1 -1
  22. package/dist/core/evaluation-suite.d.ts +7 -3
  23. package/dist/core/evaluation-suite.js +137 -13
  24. package/dist/core/evaluation-suite.js.map +1 -1
  25. package/dist/core/evidence-pack.js +9 -0
  26. package/dist/core/evidence-pack.js.map +1 -1
  27. package/dist/core/project-brain.d.ts +202 -0
  28. package/dist/core/project-brain.js +790 -0
  29. package/dist/core/project-brain.js.map +1 -0
  30. package/dist/core/reverse-specification.d.ts +34 -0
  31. package/dist/core/reverse-specification.js +361 -0
  32. package/dist/core/reverse-specification.js.map +1 -0
  33. package/dist/core/version.d.ts +1 -1
  34. package/dist/core/version.js +1 -1
  35. package/docs/agents.md +18 -0
  36. package/docs/diagram-rail.md +8 -0
  37. package/docs/evaluation-suite.md +20 -0
  38. package/docs/future-rails-index.md +5 -5
  39. package/docs/harness-rail.md +14 -0
  40. package/docs/knowledge-to-rules.md +37 -14
  41. package/docs/memory-rail.md +11 -0
  42. package/docs/project-brain.md +92 -0
  43. package/docs/releases/README.md +1 -0
  44. package/docs/releases/RELEASE_NOTES_v0.8.0.md +44 -0
  45. package/docs/reverse-specification-rail.md +73 -0
  46. package/docs/rules.md +18 -0
  47. package/docs/workflow-rail.md +15 -0
  48. package/package.json +1 -1
@@ -0,0 +1,202 @@
1
+ import type { AgentId } from "./agent-profile.js";
2
+ export type BrainRecordType = "claim" | "decision" | "bug" | "gap" | "rule" | "stale-event";
3
+ export type BrainClaimKind = "architecture" | "release" | "workflow" | "policy" | "test" | "command" | "docs" | "agent" | "security" | "unknown";
4
+ export type BrainClaimStatus = "verified" | "suspect" | "stale" | "unverified" | "rejected";
5
+ export type BrainConfidence = "high" | "medium" | "low";
6
+ export interface SourceRange {
7
+ startLine: number;
8
+ endLine: number;
9
+ }
10
+ export interface BrainClaimRecord {
11
+ schemaVersion: "soturail.brain.claim.v1";
12
+ id: string;
13
+ claim: string;
14
+ kind: BrainClaimKind;
15
+ status: BrainClaimStatus;
16
+ confidence: BrainConfidence;
17
+ sourcePath: string;
18
+ sourceCommit: string;
19
+ sourceRange: SourceRange;
20
+ fileHash: string;
21
+ rangeHash: string;
22
+ validatedBy: string[];
23
+ relatedWorkflowIds: string[];
24
+ relatedEvidenceIds: string[];
25
+ tags: string[];
26
+ createdAt: string;
27
+ updatedAt: string;
28
+ }
29
+ export interface BrainDecisionRecord {
30
+ schemaVersion: "soturail.brain.decision.v1";
31
+ id: string;
32
+ title: string;
33
+ decision: string;
34
+ reason: string;
35
+ status: "active" | "superseded" | "rejected" | "unknown";
36
+ sourcePath: string;
37
+ sourceCommit: string;
38
+ tags: string[];
39
+ createdAt: string;
40
+ }
41
+ export interface BrainBugRecord {
42
+ schemaVersion: "soturail.brain.bug.v1";
43
+ id: string;
44
+ bug: string;
45
+ status: "open" | "fixed" | "recurring" | "unknown";
46
+ sourcePath: string;
47
+ tags: string[];
48
+ createdAt: string;
49
+ }
50
+ export interface BrainGapRecord {
51
+ schemaVersion: "soturail.brain.gap.v1";
52
+ id: string;
53
+ gap: string;
54
+ severity: "low" | "medium" | "high";
55
+ needsHumanValidation: boolean;
56
+ sourcePath: string;
57
+ status: "open" | "resolved" | "accepted-risk";
58
+ createdAt: string;
59
+ }
60
+ export interface BrainRuleRecord {
61
+ schemaVersion: "soturail.brain.rule.v1";
62
+ id: string;
63
+ rule: string;
64
+ sourceClaimIds: string[];
65
+ sourceDecisionIds?: string[];
66
+ enforcement: "advisory" | "policy-gate" | "test-backed" | "manual-review";
67
+ status: "active" | "draft" | "deprecated";
68
+ createdAt: string;
69
+ }
70
+ export interface BrainStaleEventRecord {
71
+ schemaVersion: "soturail.brain.stale-event.v1";
72
+ id: string;
73
+ recordId: string;
74
+ reason: string;
75
+ previousHash: string;
76
+ currentHash: string;
77
+ status: "suspect" | "stale" | "resolved";
78
+ createdAt: string;
79
+ }
80
+ export interface BrainProjectProfile {
81
+ schemaVersion: "soturail.brain.project-profile.v1";
82
+ projectName: string;
83
+ packageVersion: string;
84
+ cliVersion: string;
85
+ identity: string;
86
+ mainLanguageRuntime: string[];
87
+ docsFolders: string[];
88
+ releaseNotesPath: string;
89
+ rails: string[];
90
+ commands: string[];
91
+ tests: string[];
92
+ workflowHarnessDiagramEval: Record<string, string>;
93
+ agentHosts: string[];
94
+ knownReleaseProcess: string[];
95
+ counts: BrainCounts;
96
+ updatedAt: string;
97
+ }
98
+ export interface BrainCounts {
99
+ claims: number;
100
+ decisions: number;
101
+ bugs: number;
102
+ gaps: number;
103
+ rules: number;
104
+ staleEvents: number;
105
+ suspectOrStale: number;
106
+ }
107
+ export interface BrainArchitectureView {
108
+ schemaVersion: "soturail.brain.architecture.v1";
109
+ storage: {
110
+ jsonl: string[];
111
+ jsonViews: string[];
112
+ exports: string[];
113
+ };
114
+ rails: Array<{
115
+ name: string;
116
+ evidence: string;
117
+ }>;
118
+ boundaries: string[];
119
+ updatedAt: string;
120
+ }
121
+ export interface BrainIndexView {
122
+ schemaVersion: "soturail.brain.index.v1";
123
+ updatedAt: string;
124
+ claims: Array<{
125
+ id: string;
126
+ kind: BrainClaimKind;
127
+ status: BrainClaimStatus;
128
+ sourcePath: string;
129
+ tags: string[];
130
+ }>;
131
+ decisions: Array<{
132
+ id: string;
133
+ status: string;
134
+ sourcePath: string;
135
+ tags: string[];
136
+ }>;
137
+ gaps: Array<{
138
+ id: string;
139
+ severity: string;
140
+ status: string;
141
+ sourcePath: string;
142
+ }>;
143
+ rules: Array<{
144
+ id: string;
145
+ status: string;
146
+ sourceClaimIds: string[];
147
+ }>;
148
+ }
149
+ export interface BrainFreshnessView {
150
+ schemaVersion: "soturail.brain.freshness.v1";
151
+ updatedAt: string;
152
+ checkedRecords: number;
153
+ suspect: number;
154
+ stale: number;
155
+ warnings: string[];
156
+ events: BrainStaleEventRecord[];
157
+ }
158
+ export interface BrainDoctorReport {
159
+ schemaVersion: "soturail.brain.doctor.v1";
160
+ ok: boolean;
161
+ createdAt: string;
162
+ files: Array<{
163
+ path: string;
164
+ present: boolean;
165
+ validJsonl?: boolean;
166
+ }>;
167
+ counts: BrainCounts;
168
+ findings: string[];
169
+ nextCommands: string[];
170
+ }
171
+ export type BrainAgentTarget = Extract<AgentId, "claude" | "codex" | "gemini" | "cursor" | "generic">;
172
+ export declare function initBrain(root?: string): Promise<{
173
+ paths: string[];
174
+ output: string;
175
+ }>;
176
+ export declare function scanBrain(root?: string): Promise<{
177
+ profile: BrainProjectProfile;
178
+ claimsAdded: number;
179
+ output: string;
180
+ }>;
181
+ export declare function brainProfile(root?: string): Promise<string>;
182
+ export declare function recallBrain(query: string, root?: string, limit?: number): Promise<string>;
183
+ export declare function staleBrain(root?: string): Promise<{
184
+ freshness: BrainFreshnessView;
185
+ output: string;
186
+ }>;
187
+ export declare function brainDoctor(root?: string): Promise<{
188
+ report: BrainDoctorReport;
189
+ output: string;
190
+ }>;
191
+ export declare function exportBrain(agent: BrainAgentTarget, root?: string): Promise<{
192
+ path: string;
193
+ content: string;
194
+ output: string;
195
+ }>;
196
+ export declare function rulesFromBrain(root?: string): Promise<{
197
+ rules: BrainRuleRecord[];
198
+ markdownPath: string;
199
+ output: string;
200
+ }>;
201
+ export declare function readBrainCounts(root?: string): Promise<BrainCounts>;
202
+ export declare function brainExportExists(root?: string): Promise<boolean>;