@getripple/core 1.0.5 → 1.0.7

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @getripple/core Changelog
2
2
 
3
+ ## [1.0.6] - 2026-06-07
4
+
5
+ ### Fixed
6
+ - Report Git spawn failures with actionable messages when Node.js cannot launch `git`.
7
+ - Preserve the exact Git readiness failure in `ripple doctor` and readiness summaries.
8
+
3
9
  ## [1.0.5] - 2026-06-04
4
10
 
5
11
  ### Changed
package/README.md CHANGED
@@ -1,16 +1,24 @@
1
1
  # @getripple/core
2
2
 
3
- The graph engine that powers Ripple's VS Code extension, CLI, and MCP server.
3
+ **Core engine for Ripple's local drift-control system for AI coding agents.**
4
4
 
5
- Scans JavaScript, TypeScript, and basic Python repositories, builds a local
6
- dependency graph, and exposes the architectural context that AI agents need
7
- before editing code.
5
+ `@getripple/core` scans repositories, builds local dependency intelligence, tracks architectural relationships, records approved work boundaries, and powers Ripple's CLI, MCP server, CI integrations, and editor experiences.
8
6
 
9
- **Most users should not start here.**
10
- Install [`@getripple/cli`](https://npmjs.com/package/@getripple/cli) for terminal
11
- and CI workflows.
12
- Install [`@getripple/mcp`](https://npmjs.com/package/@getripple/mcp) to give AI
13
- agents direct structured access to Ripple's context.
7
+ Most users should start with:
8
+
9
+ ```txt
10
+ @getripple/cli
11
+ ```
12
+
13
+ or
14
+
15
+ ```txt
16
+ @getripple/mcp
17
+ ```
18
+
19
+ and use `@getripple/core` only when building custom integrations.
20
+
21
+ ---
14
22
 
15
23
  ## Install
16
24
 
@@ -18,74 +26,310 @@ agents direct structured access to Ripple's context.
18
26
  npm install @getripple/core
19
27
  ```
20
28
 
29
+ ---
30
+
21
31
  ## Basic Usage
22
32
 
23
33
  ```ts
24
34
  import { GraphEngine } from "@getripple/core";
25
35
 
26
36
  const engine = new GraphEngine(process.cwd());
27
- await engine.initialScan();
28
37
 
29
- // What does this file affect?
30
- const blastRadius = engine.blastRadius(["src/auth.ts"]);
38
+ try {
39
+ await engine.initialScan();
31
40
 
32
- // What depends on this file?
33
- const importers = engine.downstreamFiles("src/auth.ts");
41
+ const blastRadius = engine.blastRadius(["src/auth.ts"]);
42
+ const importers = engine.downstreamFiles("src/auth.ts");
43
+ const imports = engine.upstreamFiles("src/auth.ts");
34
44
 
35
- // What does this file import?
36
- const imports = engine.upstreamFiles("src/auth.ts");
45
+ console.log({
46
+ blastRadius,
47
+ importers,
48
+ imports,
49
+ });
50
+ } finally {
51
+ engine.dispose();
52
+ }
37
53
  ```
38
54
 
39
- ## What the Engine Tracks
55
+ ---
40
56
 
57
+ ## What Core Powers
58
+
59
+ `@getripple/core` is the shared engine behind Ripple's public interfaces.
60
+
61
+ ```txt
62
+ @getripple/cli
63
+ @getripple/mcp
64
+ VS Code integrations
65
+ CI workflows
66
+ Custom integrations
41
67
  ```
42
- File dependency graph — every import and reverse import
43
- Symbol and call edges — exported functions and who calls them
44
- Blast radius — all files affected by a change
45
- Risk signals — dangerous / caution / safe per file
46
- Focused context — per-file summaries for AI agents
47
- Change history — structural changes since first install
48
- Layer classification — logic / ui / handler / state / data / effect
49
- Framework/config signals — Next.js, Vite, React Router, Turborepo, Tailwind,
50
- tests, tsconfig paths, and package conventions
68
+
69
+ The engine provides local signals used to answer:
70
+
71
+ ```txt
72
+ What should an agent read before editing?
73
+
74
+ What files may be affected?
75
+
76
+ What symbols may be affected?
77
+
78
+ What was approved?
79
+
80
+ What changed?
81
+
82
+ Did the agent drift?
83
+
84
+ Can the agent continue?
85
+
86
+ Does a human need to review?
87
+ ```
88
+
89
+ ---
90
+
91
+ ## Core Capabilities
92
+
93
+ Ripple builds and maintains local repository intelligence.
94
+
95
+ ```txt
96
+ dependency graph
97
+
98
+ reverse imports
99
+
100
+ exported symbols
101
+
102
+ call relationships
103
+
104
+ blast radius analysis
105
+
106
+ architectural history
107
+
108
+ focused context generation
109
+
110
+ saved change intents
111
+
112
+ approval tracking
113
+
114
+ trust-boundary validation
115
+
116
+ drift detection
117
+
118
+ continue / stop gate summaries
51
119
  ```
52
120
 
53
- ## What It Powers
121
+ These capabilities power the Ripple workflow:
122
+
123
+ ```txt
124
+ plan work
125
+
126
+ save intent
127
+
128
+ agent edits code
129
+
130
+ check changes
54
131
 
55
- **VS Code extension (`ripple`)** — Impact Lens sidebar, CodeLens caller counts,
56
- Safety Check pre-commit warnings, and Copy Agent Prompt.
132
+ detect drift
57
133
 
58
- **CLI (`@getripple/cli`)** — `ripple plan`, `ripple check`, `ripple gate`, and
59
- the full CI pipeline integration.
134
+ repair or review
60
135
 
61
- **MCP server (`@getripple/mcp`)** — `ripple_plan_context`, `ripple_check_staged`,
62
- `ripple_gate`, and twelve other tools agents can call directly.
136
+ continue safely
137
+ ```
138
+
139
+ ---
63
140
 
64
141
  ## Trust Boundary Contract
65
142
 
66
- The core engine is the single source of truth for control modes, editable files,
67
- context-only files, human gates, and continue/stop decisions. The CLI and MCP
68
- packages consume this contract directly — humans, CI pipelines, and AI agents
69
- all see the same workflow state.
143
+ The Trust Boundary Contract is the core safety model used throughout Ripple.
144
+
145
+ Ripple compares:
146
+
147
+ ```txt
148
+ planned work
149
+ ```
150
+
151
+ against
152
+
153
+ ```txt
154
+ actual changes
155
+ ```
156
+
157
+ to determine whether an AI coding agent stayed within the work it was trusted to perform.
158
+
159
+ The Trust Boundary Contract consists of:
160
+
161
+ ```txt
162
+ planned work -> what the human approved
163
+
164
+ approved boundary -> file, function, task, brainstorm, or PR scope
165
+
166
+ actual changes -> what the agent modified
167
+
168
+ drift result -> whether the agent left the approved work
169
+
170
+ gate decision -> continue, repair, human-review, or restore-readiness
171
+ ```
172
+
173
+ The Trust Boundary Contract enables Ripple to:
174
+
175
+ ```txt
176
+ detect intent drift
177
+
178
+ detect boundary drift
179
+
180
+ require repair
181
+
182
+ require human review
183
+
184
+ produce continue/stop decisions
185
+
186
+ protect approved workflows
187
+ ```
188
+
189
+ This contract is consumed by:
190
+
191
+ ```txt
192
+ humans
193
+
194
+ AI coding agents
195
+
196
+ CI systems
197
+
198
+ automation pipelines
199
+ ```
200
+
201
+ ---
202
+
203
+ ## Context Modes
204
+
205
+ Core supports multiple context-generation modes.
206
+
207
+ ```txt
208
+ lean
209
+ ```
210
+
211
+ Uses graph and history cache for fast checks and gates.
212
+
213
+ ```txt
214
+ on-demand
215
+ ```
216
+
217
+ Builds targeted context for MCP tools and focused requests.
218
+
219
+ ```txt
220
+ full
221
+ ```
222
+
223
+ Generates broader workflow context for file-oriented agent workflows.
224
+
225
+ ---
226
+
227
+ ## Ripple Workspace
228
+
229
+ Machine cache:
230
+
231
+ ```txt
232
+ .ripple/.cache/
233
+ ```
234
+
235
+ Workflow and audit state:
236
+
237
+ ```txt
238
+ .ripple/policy.json
239
+ .ripple/history.json
240
+ .ripple/intents/
241
+ .ripple/approvals/
242
+ ```
243
+
244
+ ---
245
+
246
+ ## Language Support
247
+
248
+ | Language | Support |
249
+ | ---------- | ------- |
250
+ | JavaScript | Deep |
251
+ | TypeScript | Deep |
252
+ | Python | Basic |
253
+
254
+ JavaScript and TypeScript currently provide the strongest experience.
70
255
 
71
- ## Supported Languages
256
+ Python support includes:
72
257
 
73
- Deep support: JavaScript and TypeScript — `.ts`, `.tsx`, `.js`, `.jsx`.
258
+ ```txt
259
+ imports
74
260
 
75
- Basic support: Python — `.py`.
261
+ functions
76
262
 
77
- Framework and config signals are heuristic. Ripple detects common files and
78
- package conventions, then tells agents what to trust and what to verify.
263
+ classes
264
+
265
+ basic call relationships
266
+ ```
267
+
268
+ Framework detection and configuration analysis remain heuristic.
269
+
270
+ Ripple reports local repository signals rather than perfect semantic truth.
271
+
272
+ ---
79
273
 
80
274
  ## Privacy
81
275
 
82
- The engine runs entirely on your machine. No data leaves the local file system.
83
- No network calls, telemetry, or account required.
276
+ Ripple operates locally.
277
+
278
+ ```txt
279
+ No telemetry
280
+
281
+ No cloud indexing
282
+
283
+ No code upload
284
+
285
+ No remote dependency required
286
+
287
+ No account required
288
+ ```
289
+
290
+ Repositories are scanned on the user's machine.
291
+
292
+ ---
84
293
 
85
294
  ## Status
86
295
 
87
- Public alpha. Core APIs may change while the CLI and MCP workflow contracts
88
- harden toward a stable 1.x release.
296
+ Public alpha.
297
+
298
+ The most stable public contracts are:
299
+
300
+ ```txt
301
+ @getripple/cli
302
+
303
+ @getripple/mcp
304
+ ```
305
+
306
+ Core APIs may evolve as Ripple's graph, context, drift-control, and approval systems mature.
307
+
308
+ ---
309
+
310
+ ## What Core Is Not
311
+
312
+ `@getripple/core` is not:
313
+
314
+ ```txt
315
+ a coding agent
316
+
317
+ a code generator
318
+
319
+ a code review replacement
320
+
321
+ a test replacement
322
+
323
+ a typechecker replacement
324
+
325
+ a sandbox
326
+
327
+ a compiler
328
+ ```
329
+
330
+ Instead, it is the local intelligence engine that helps Ripple determine whether an AI coding agent remained inside the work it was trusted to perform.
331
+
332
+ ---
89
333
 
90
334
  ## License
91
335
 
package/dist/audit.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { ChangeIntent, ChangeIntentValidationSummary, ControlMode, IntentDriftRepairPlan, RippleAgentHandoffVerdict, StagedCheckWithIntentSummary } from "./change-intent";
2
+ import { RippleRiskSummary } from "./risk";
2
3
  import type { AgentRuntimeNextPhaseId } from "./agent-workflow";
3
4
  import type { RipplePolicyExplanation } from "./policy";
4
5
  import { RippleApprovalStatus } from "./approval";
@@ -35,6 +36,7 @@ export type RippleAuditSummary = {
35
36
  nextSteps: string[];
36
37
  changedFiles: string[];
37
38
  verificationTargets: string[];
39
+ risk: RippleRiskSummary;
38
40
  handoff: RippleAgentHandoffVerdict;
39
41
  };
40
42
  export type RippleGateSummary = {
@@ -55,12 +57,17 @@ export type RippleGateSummary = {
55
57
  auditStatus: RippleAuditStatus;
56
58
  auditDecision: RippleAuditDecision;
57
59
  approvalStatus: RippleApprovalStatus["status"];
60
+ allowedFiles: string[];
61
+ allowedSymbols: string[];
62
+ changedOutsideBoundaryFiles: string[];
63
+ changedOutsideBoundarySymbols: string[];
58
64
  changedFiles: string[];
59
65
  verificationTargets: string[];
60
66
  why: string[];
61
67
  fixNow: string[];
62
68
  askHuman: string[];
63
69
  commands: RippleAgentHandoffVerdict["commands"];
70
+ risk: RippleRiskSummary;
64
71
  };
65
72
  export declare function buildRippleAuditSummary(input: {
66
73
  workspaceRoot: string;
package/dist/audit.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rippleAuditNextRequiredAction = exports.rippleAuditNextRequiredPhase = exports.rippleAuditRecommendedAction = exports.rippleAuditDecision = exports.rippleAuditStatus = exports.buildRippleGateSummary = exports.buildRippleAuditSummary = void 0;
4
4
  const change_intent_1 = require("./change-intent");
5
+ const risk_1 = require("./risk");
5
6
  const approval_1 = require("./approval");
6
7
  function buildRippleAuditSummary(input) {
7
8
  const validation = input.stagedCheck.intentValidation;
@@ -52,6 +53,19 @@ function buildRippleAuditSummary(input) {
52
53
  nextSteps,
53
54
  changedFiles: input.stagedCheck.files.map((file) => file.file),
54
55
  verificationTargets: input.repairPlan.verificationTargets,
56
+ risk: (0, risk_1.buildRippleRiskSummary)({
57
+ boundaryRisk: input.intent.boundaryRisk,
58
+ allowedFiles: validation.editableFiles,
59
+ allowedSymbols: validation.allowedSymbols,
60
+ changedFiles: input.stagedCheck.files.map((file) => file.file),
61
+ changedOutsideBoundaryFiles: validation.boundaryVerdict.changedOutsideBoundaryFiles,
62
+ changedOutsideBoundarySymbols: validation.boundaryVerdict.changedOutsideBoundarySymbols,
63
+ unplannedFiles: validation.unplannedFiles,
64
+ unplannedSymbols: validation.unplannedSymbols,
65
+ verificationTargets: input.repairPlan.verificationTargets,
66
+ nextSteps,
67
+ stagedFiles: input.stagedCheck.files,
68
+ }),
55
69
  };
56
70
  return {
57
71
  ...audit,
@@ -61,6 +75,7 @@ function buildRippleAuditSummary(input) {
61
75
  exports.buildRippleAuditSummary = buildRippleAuditSummary;
62
76
  function buildRippleGateSummary(audit) {
63
77
  const handoff = audit.handoff;
78
+ const validation = audit.stagedCheck.intentValidation;
64
79
  return {
65
80
  protocol: "ripple-gate",
66
81
  version: 1,
@@ -79,12 +94,17 @@ function buildRippleGateSummary(audit) {
79
94
  auditStatus: audit.status,
80
95
  auditDecision: audit.decision,
81
96
  approvalStatus: audit.approvalStatus.status,
97
+ allowedFiles: validation?.editableFiles ?? [],
98
+ allowedSymbols: validation?.allowedSymbols ?? [],
99
+ changedOutsideBoundaryFiles: validation?.boundaryVerdict.changedOutsideBoundaryFiles ?? [],
100
+ changedOutsideBoundarySymbols: validation?.boundaryVerdict.changedOutsideBoundarySymbols ?? [],
82
101
  changedFiles: audit.changedFiles,
83
102
  verificationTargets: audit.verificationTargets,
84
103
  why: handoff.why,
85
104
  fixNow: handoff.fixNow,
86
105
  askHuman: handoff.askHuman,
87
106
  commands: handoff.commands,
107
+ risk: audit.risk,
88
108
  };
89
109
  }
90
110
  exports.buildRippleGateSummary = buildRippleGateSummary;
package/dist/audit.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,7 @@ export type ChangeIntentReadinessSnapshot = {
39
39
  policyExplicit: boolean;
40
40
  graphOk: boolean;
41
41
  gitOk: boolean;
42
+ gitIgnoreOk: boolean;
42
43
  ciWorkflowOk: boolean;
43
44
  latestIntentOk: boolean;
44
45
  gaps: string[];
@@ -105,6 +105,7 @@ function buildChangeIntentReadinessSnapshot(readiness) {
105
105
  policyExplicit: readiness.enforcement.explicitPolicy.ok,
106
106
  graphOk: readiness.checks.graph.ok,
107
107
  gitOk: readiness.checks.git.ok,
108
+ gitIgnoreOk: readiness.checks.gitIgnore.ok,
108
109
  ciWorkflowOk: readiness.checks.ciWorkflow.ok,
109
110
  latestIntentOk: readiness.checks.latestIntent.ok,
110
111
  gaps: readiness.enforcement.gaps,
@@ -902,6 +903,7 @@ function readinessChangedFields(saved, current) {
902
903
  "policyExplicit",
903
904
  "graphOk",
904
905
  "gitOk",
906
+ "gitIgnoreOk",
905
907
  "ciWorkflowOk",
906
908
  "latestIntentOk",
907
909
  ];
@@ -922,6 +924,7 @@ function readinessWeakenedFields(saved, current) {
922
924
  "policyExplicit",
923
925
  "graphOk",
924
926
  "gitOk",
927
+ "gitIgnoreOk",
925
928
  "ciWorkflowOk",
926
929
  "latestIntentOk",
927
930
  ];
@@ -954,6 +957,9 @@ function readinessDriftFix(current, weakenedFields) {
954
957
  if (weakenedFields.includes("gitOk")) {
955
958
  fixes.push("Run Ripple inside a git worktree so changed-file drift checks can work.");
956
959
  }
960
+ if (weakenedFields.includes("gitIgnoreOk")) {
961
+ fixes.push("Restore the .gitignore entry for .ripple/.cache/ before committing Ripple audit files.");
962
+ }
957
963
  if (weakenedFields.includes("graphOk") || weakenedFields.includes("canGuideAgents")) {
958
964
  fixes.push("Run Ripple from a supported source repo so the graph can be scanned.");
959
965
  }
@@ -1080,6 +1086,9 @@ function buildBoundaryVerdict(input) {
1080
1086
  };
1081
1087
  }
1082
1088
  function boundaryPassReasons(intent, editableFiles) {
1089
+ if (intent.controlMode === "brainstorm") {
1090
+ return ["Control mode 'brainstorm' allows no file edits."];
1091
+ }
1083
1092
  const allowedFiles = editableFiles.length > 0
1084
1093
  ? editableFiles.join(", ")
1085
1094
  : "no files";
@@ -1352,6 +1361,9 @@ function contractChangedSymbols(symbols) {
1352
1361
  });
1353
1362
  }
1354
1363
  function changeIntentEditableFiles(intent) {
1364
+ if (intent.controlMode === "brainstorm") {
1365
+ return [];
1366
+ }
1355
1367
  return uniqueItems(intent.editableFiles && intent.editableFiles.length > 0
1356
1368
  ? intent.editableFiles
1357
1369
  : intent.expectedFiles.length > 0
@@ -1403,16 +1415,18 @@ function assertChangeIntent(value, sourcePath) {
1403
1415
  return normalizeChangeIntent(value);
1404
1416
  }
1405
1417
  function normalizeChangeIntent(intent) {
1406
- const editableFiles = uniqueItems(intent.editableFiles && intent.editableFiles.length > 0
1407
- ? intent.editableFiles
1408
- : intent.expectedFiles.length > 0
1409
- ? intent.expectedFiles
1410
- : [intent.targetFile]);
1418
+ const controlMode = isControlMode(intent.controlMode) ? intent.controlMode : "file";
1419
+ const editableFiles = uniqueItems(controlMode === "brainstorm"
1420
+ ? []
1421
+ : intent.editableFiles && intent.editableFiles.length > 0
1422
+ ? intent.editableFiles
1423
+ : intent.expectedFiles.length > 0
1424
+ ? intent.expectedFiles
1425
+ : [intent.targetFile]);
1411
1426
  const editableFileSet = new Set(editableFiles);
1412
1427
  const contextFiles = uniqueItems((intent.contextFiles && intent.contextFiles.length > 0
1413
1428
  ? intent.contextFiles
1414
1429
  : intent.allowedFiles.filter((file) => !editableFileSet.has(file))).filter((file) => !editableFileSet.has(file)));
1415
- const controlMode = isControlMode(intent.controlMode) ? intent.controlMode : "file";
1416
1430
  const allowedSymbols = uniqueItems((intent.allowedSymbols ?? []).filter((symbol) => typeof symbol === "string" && symbol.trim().length > 0));
1417
1431
  const boundaryRisk = isControlBoundaryRisk(intent.boundaryRisk)
1418
1432
  ? intent.boundaryRisk
@@ -1467,6 +1481,7 @@ function normalizeReadinessSnapshot(value) {
1467
1481
  policyExplicit: typeof value.policyExplicit === "boolean" ? value.policyExplicit : false,
1468
1482
  graphOk: typeof value.graphOk === "boolean" ? value.graphOk : false,
1469
1483
  gitOk: typeof value.gitOk === "boolean" ? value.gitOk : false,
1484
+ gitIgnoreOk: typeof value.gitIgnoreOk === "boolean" ? value.gitIgnoreOk : false,
1470
1485
  ciWorkflowOk: typeof value.ciWorkflowOk === "boolean" ? value.ciWorkflowOk : false,
1471
1486
  latestIntentOk: typeof value.latestIntentOk === "boolean" ? value.latestIntentOk : false,
1472
1487
  gaps: stringList(value.gaps),
@@ -1483,6 +1498,7 @@ function fallbackReadinessSnapshot() {
1483
1498
  policyExplicit: false,
1484
1499
  graphOk: false,
1485
1500
  gitOk: false,
1501
+ gitIgnoreOk: false,
1486
1502
  ciWorkflowOk: false,
1487
1503
  latestIntentOk: false,
1488
1504
  gaps: ["Readiness snapshot was not captured when this intent was saved."],