| /** | ||
| * Ruby detection — CONTENT-AWARE Gemfile / gemspec classification. | ||
| * | ||
| * Kill line: Gemfile alone ≠ Rails. | ||
| * Bundler backs libraries, Rails apps, Sinatra/Roda/Grape/Hanami, CLIs, and MCP | ||
| * servers. We read gem names (+ light layout), then branch. | ||
| * | ||
| * Same composition as go.ts / jvm.ts: knowledge in ruby-detection.json. | ||
| */ | ||
| export type RubyAppType = 'mcp' | 'backend' | 'cli' | 'library'; | ||
| export interface RubyProject { | ||
| appType: RubyAppType; | ||
| /** Primary framework label (Rails / Sinatra / …) or ''. */ | ||
| framework: string; | ||
| /** package manager signal */ | ||
| packageManager: 'bundler' | 'rubygems'; | ||
| /** Glass Hood rationale for .faf `# found:`. */ | ||
| found: string; | ||
| } | ||
| /** True if directory looks like a Ruby project root. */ | ||
| export declare function isRubyRoot(dir: string): boolean; | ||
| /** | ||
| * Extract gem names from a Gemfile / gems.rb (static — does NOT execute Ruby). | ||
| * Handles: gem 'x', gem "x", gem :x (rare), gem "x", "1.0" | ||
| */ | ||
| export declare function parseGemfileGems(content: string): Set<string>; | ||
| /** | ||
| * Extract gem names from Gemfile.lock SPECS sections (static). | ||
| * Lines like " rails (7.1.0)" under GEM specs. | ||
| */ | ||
| export declare function parseGemfileLockGems(content: string): Set<string>; | ||
| /** Gem names from *.gemspec dependency lines (static). */ | ||
| export declare function parseGemspecGems(content: string): Set<string>; | ||
| /** | ||
| * Classify a Ruby project from Gemfile / lock / gemspec (+ light layout). | ||
| * Returns null if not a Ruby root. | ||
| */ | ||
| export declare function detectRubyProject(dir: string): RubyProject | null; |
+1
-1
| { | ||
| "name": "faf-cli", | ||
| "version": "7.5.1", | ||
| "version": "7.6.0", | ||
| "description": "Persistent AI context + memory — .faf and .fafm, IANA-registered. Anthropic-merged.", | ||
@@ -5,0 +5,0 @@ "type": "module", |
+4
-5
@@ -133,9 +133,8 @@ <!-- faf: faf-cli | TypeScript | cli | CLI for the .faf and .fafm IANA-registered formats — AI context + memory that versions with your code --> | ||
| ### What's New in v7.5.1 — The JVM Edition (patch) | ||
| ### What's New in v7.6.0 — The Ruby Edition | ||
| **Content-aware JVM** — `pom` / `gradle` alone ≠ type. **Also:** bare build files ≠ Spring Boot on `tech_stack` (7.5.1 closes the stranger-smoke gap). | ||
| **Content-aware Ruby** — `Gemfile alone ≠ Rails`. Pure gems stay pure gems. | ||
| - **7.5.1** — Spring Boot only when the file *says* Boot (`spring-boot` / `springframework.boot` in body). | ||
| - **7.5.0** — plugins · parents · catalogs · multi-module: Spring · Quarkus · MCP · CLI · library · Android / KMP facets. | ||
| - **Still shipping** — C# (7.4.0) `.csproj alone ≠ type` · Go (7.3.0) `go.mod alone ≠ backend`. | ||
| - **Gems + layout** — Rails · Sinatra · Roda · Grape · Hanami · MCP · CLI · library (static parse — does not execute Gemfile). | ||
| - **Still shipping** — JVM (7.5.x) `pom`/`gradle` alone ≠ type · C# (7.4.0) `.csproj alone ≠ type` · Go (7.3.0) `go.mod alone ≠ backend`. | ||
@@ -142,0 +141,0 @@ ### Dart/Flutter — knowledge v2 in 7.2.1 |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
3320452
1.32%43
2.38%4589
1.73%309
-0.32%