Skip to content

Commit a3a55d7

Browse files
authored
Merge pull request #54 from jcode-works/develop
release: promote develop to main for rgr CLI and ragmir.com
2 parents 76334cb + 66950bd commit a3a55d7

94 files changed

Lines changed: 3731 additions & 2022 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ body:
2222
id: version
2323
attributes:
2424
label: Ragmir version
25-
placeholder: "pnpm exec ragmir --version"
25+
placeholder: "pnpm exec rgr --version"
2626
validations:
2727
required: true
2828
- type: textarea

.github/workflows/deploy-landing.yml

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ on:
77
- "packages/ragmir-landing/**"
88
- ".github/workflows/deploy-landing.yml"
99
workflow_dispatch:
10+
inputs:
11+
version:
12+
description: "Semantic version to inject (e.g. 2.3.0)"
13+
required: false
1014

1115
permissions:
1216
contents: read
@@ -21,7 +25,7 @@ jobs:
2125
runs-on: ubuntu-latest
2226
environment:
2327
name: ${{ github.ref == 'refs/heads/main' && 'landing-production' || 'landing-staging' }}
24-
url: ${{ github.ref == 'refs/heads/main' && 'https://ragmir.jcode.works' || 'https://staging.ragmir.jcode.works' }}
28+
url: ${{ github.ref == 'refs/heads/main' && 'https://ragmir.com' || 'https://staging.ragmir.jcode.works' }}
2529
defaults:
2630
run:
2731
working-directory: packages/ragmir-landing
@@ -48,11 +52,22 @@ jobs:
4852
run: pnpm install --frozen-lockfile
4953
working-directory: .
5054

55+
- name: Resolve version
56+
id: version
57+
working-directory: .
58+
run: |
59+
VERSION="${{ github.event.inputs.version || '' }}"
60+
if [ -z "$VERSION" ]; then
61+
VERSION=$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "")
62+
fi
63+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
64+
5165
- name: Build (production)
5266
if: github.ref == 'refs/heads/main'
5367
run: pnpm build
5468
env:
55-
PUBLIC_RAGMIR_LANDING_URL: https://ragmir.jcode.works
69+
PUBLIC_RAGMIR_LANDING_URL: https://ragmir.com
70+
PUBLIC_RAGMIR_VERSION: ${{ steps.version.outputs.version }}
5671

5772
- name: Deploy (production)
5873
if: github.ref == 'refs/heads/main'
@@ -61,11 +76,21 @@ jobs:
6176
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
6277
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
6378

79+
- name: Submit to IndexNow
80+
if: github.ref == 'refs/heads/main'
81+
run: pnpm exec node scripts/submit-indexnow.mjs
82+
env:
83+
INDEXNOW_API_KEY: ${{ secrets.INDEXNOW_API_KEY }}
84+
INDEXNOW_KEY_NAME: ${{ vars.INDEXNOW_KEY_NAME }}
85+
SITEMAP_LOCAL_PATH: dist/sitemap-0.xml
86+
continue-on-error: true
87+
6488
- name: Build (staging, not indexed)
6589
if: github.ref == 'refs/heads/develop'
6690
run: pnpm build
6791
env:
6892
PUBLIC_RAGMIR_LANDING_URL: https://staging.ragmir.jcode.works
93+
PUBLIC_RAGMIR_VERSION: ${{ steps.version.outputs.version }}
6994

7095
- name: Deploy (staging)
7196
if: github.ref == 'refs/heads/develop'

.github/workflows/npm-publish.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ jobs:
2222
environment:
2323
name: npm-publish
2424
url: https://www.npmjs.com/package/@jcode.labs/ragmir
25+
outputs:
26+
version: ${{ steps.version.outputs.version }}
2527
steps:
2628
- name: Verify main branch
2729
run: test "${GITHUB_REF}" = "refs/heads/main"
@@ -59,3 +61,27 @@ jobs:
5961
with:
6062
name: ragmir-release-${{ github.sha }}
6163
path: release-artifacts/
64+
65+
- name: Resolve released version
66+
id: version
67+
run: |
68+
VERSION=$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "")
69+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
70+
71+
deploy-landing:
72+
name: Rebuild and deploy landing with new version
73+
runs-on: ubuntu-latest
74+
needs: release
75+
if: needs.release.outputs.version != ''
76+
steps:
77+
- name: Trigger landing deploy with version
78+
uses: actions/github-script@v7
79+
with:
80+
script: |
81+
await github.rest.actions.createWorkflowDispatch({
82+
owner: context.repo.owner,
83+
repo: context.repo.repo,
84+
workflow_id: 'deploy-landing.yml',
85+
ref: 'main',
86+
inputs: { version: '${{ needs.release.outputs.version }}' }
87+
})

AGENTS.md

Lines changed: 47 additions & 38 deletions
Large diffs are not rendered by default.

CHANGELOG.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
# Changelog
22

3-
> Historical note: earlier 0.x releases used the `kb` binary name and `.kb/` state
4-
> directory. `kb` remains a legacy alias for `ragmir`, and `.kb/` is still recognized
5-
> for backward compatibility. The entries below are rewritten with the current
6-
> `ragmir` command name for clarity.
3+
## Unreleased
4+
5+
- Rename the public CLI commands to `rgr` and `rgr-tts`.
6+
- Keep `ragmir`, `kb`, and `ragmir-tts` as deprecated compatibility bins that warn users to migrate
7+
to `rgr` / `rgr-tts`.
8+
- Add deterministic prompt routing through `rgr route-prompt` and MCP `ragmir_route_prompt`.
9+
- Move the production landing target to `ragmir.com` and keep staging on `staging.ragmir.jcode.works`.
710

811
## 0.4.2 - 2026-06-29
912

10-
- Add `ragmir doctor` to diagnose initialization, index freshness, security posture, and next steps.
11-
- Make `ragmir audio` and `ragmir-tts` default to the offline/confidential Transformers.js WAV path;
13+
- Add `rgr doctor` to diagnose initialization, index freshness, security posture, and next steps.
14+
- Make `rgr audio` and `rgr-tts` default to the offline/confidential Transformers.js WAV path;
1215
Edge MP3 now requires an explicit `--engine edge` command.
13-
- Stop indexing the generated `private/README.md` helper file created by `ragmir init`.
14-
- Improve onboarding output from `ragmir init` and `ragmir install-skill`.
16+
- Stop indexing the generated `private/README.md` helper file created by `rgr init`.
17+
- Improve onboarding output from `rgr init` and `rgr install-skill`.
1518

1619
## 0.4.1 - 2026-06-29
1720

18-
- Add an Edge-compatible Ragmir TTS engine so `ragmir audio` can match the global Voice Forge quality
21+
- Add an Edge-compatible Ragmir TTS engine so `rgr audio` can match the global Voice Forge quality
1922
path with `edge-tts`, `fr-FR-DeniseNeural`, and MP3 output.
2023
- Keep Transformers.js WAV rendering as the explicit offline/confidential path.
2124
- Remove duplicated governance documents from package directories; root project docs are the single
@@ -26,36 +29,35 @@
2629
- Reposition Ragmir as sovereign local RAG for confidential datasets and AI agents.
2730
- Expand default ingestion to common text, Office/OpenDocument, data, config, log, and source-code
2831
file types.
29-
- Add `includeExtensions` / `RAGMIR_INCLUDE_EXTENSIONS` (legacy alias `KB_INCLUDE_EXTENSIONS`) for custom UTF-8 text file extensions.
32+
- Add `includeExtensions` / `RAGMIR_INCLUDE_EXTENSIONS` for custom UTF-8 text file extensions.
3033
- Add the optional `ragmir-audio-summary` bundled skill for confidential audio summaries.
31-
- Install both the main Ragmir skill and optional audio-summary skill with `ragmir install-skill`.
34+
- Install both the main Ragmir skill and optional audio-summary skill with `rgr install-skill`.
3235
- Improve agent guidance for deep multi-query retrieval before synthesis.
33-
- Make Ragmir core retrieval-only: `ragmir ask` now returns cited context for external agents or LLMs
36+
- Make Ragmir core retrieval-only: `rgr ask` now returns cited context for external agents or LLMs
3437
instead of generating answers internally.
3538
- Add optional Transformers.js semantic embeddings through `embeddingProvider: "transformers"`.
3639
- Remove Ollama providers and keep `embeddingProvider: "local-hash"` as the no-model default.
3740
- Move the repository to a simple pnpm workspace monorepo without adding Turbo.
3841
- Move the core `@jcode.labs/ragmir` package into `packages/ragmir-core`.
3942
- Add `@jcode.labs/ragmir-tts` for plug-and-play JS/ONNX WAV rendering without Python or ffmpeg.
40-
- Add `ragmir audio` and update the audio-summary skill to use Ragmir TTS before advanced fallback
43+
- Add `rgr audio` and update the audio-summary skill to use Ragmir TTS before advanced fallback
4144
engines.
4245

4346
## 0.3.0 - 2026-06-28
4447

4548
- Add confidentiality hardening defaults: built-in redaction before indexing, metadata-only access
4649
logs, and bounded MCP retrieval.
47-
- Add `ragmir security-audit` for zero-telemetry, provider, redaction, gitignore, storage, and
50+
- Add `rgr security-audit` for zero-telemetry, provider, redaction, gitignore, storage, and
4851
MCP posture checks.
49-
- Add `ragmir destroy-index --yes` to remove generated vector indexes.
52+
- Add `rgr destroy-index --yes` to remove generated vector indexes.
5053
- Add release verification artifacts: npm tarball, SHA256 checksums, SBOM, and manifest.
5154
- Document air-gapped operation, threat model, MCP hardening, and secure deletion limits.
5255

5356
## 0.2.1 - 2026-06-28
5457

5558
- Add GitHub Sponsors funding metadata and document suggested sponsor tiers.
5659
- Add maintainer positioning for Jean-Baptiste Thery and JCode Labs in the README.
57-
- Make `ragmir init` and `ragmir install-skill` automatically keep `.ragmir/` (and legacy `.kb/`)
58-
ignored by Git.
60+
- Make `rgr init` and `rgr install-skill` automatically keep `.ragmir/` ignored by Git.
5961

6062
## 0.2.0 - 2026-06-28
6163

CLAUDE.md

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,20 @@ it again (`scripts/semantic-release-prepare.mjs` runs `pnpm --filter @jcode.labs
5858
- UI package: **Ragmir UI**, unpublished workspace package `@jcode.labs/ragmir-ui`.
5959
- Landing package: unpublished workspace package `@jcode.labs/ragmir-landing`.
6060
- App package: unpublished workspace package `@jcode.labs/ragmir-app`.
61-
- CLI binary: **`ragmir`** (`packages/ragmir-core/bin.ragmir` -> `packages/ragmir-core/dist/cli.js`).
62-
The `kb` binary remains only as a legacy compatibility alias. Commands: `init`, `setup`, `ingest`,
63-
`sources add`, `sources list`, `models pull`, `search`, `ask`, `research`, `evaluate`, `audit`,
64-
`usage-report`, `status`, `security-audit`, `destroy-index`, `audio`, `doctor`, `serve-mcp`,
65-
`skill-path`, `install-skill`, `install-agent`.
66-
- TTS CLI binary: **`ragmir-tts`** (`packages/ragmir-tts/dist/cli.js`). Commands: `doctor`, `render`.
67-
- Project config/state in the target repo: **`.ragmir/`** (`config.json`, `sources.txt`, `raw/`,
68-
`storage/`, `access.log`, `skills/`, reports, audio, and model caches). **`.kb/`** and
69-
**`private/`** are legacy compatibility paths only.
61+
- CLI binary: **`rgr`** (`packages/ragmir-core/bin.rgr` -> `packages/ragmir-core/dist/cli.js`).
62+
`ragmir` and `kb` remain deprecated compatibility bins that warn users to migrate to `rgr`.
63+
Commands: `init`, `setup`, `ingest`, `sources add`, `sources list`, `models pull`, `search`,
64+
`ask`, `research`, `route-prompt`, `evaluate`, `audit`, `usage-report`, `status`,
65+
`security-audit`, `destroy-index`, `audio`, `doctor`, `serve-mcp`, `skill-path`,
66+
`install-skill`, `install-agent`.
67+
- TTS CLI binary: **`rgr-tts`** (`packages/ragmir-tts/bin.rgr-tts` -> `packages/ragmir-tts/dist/cli.js`).
68+
`ragmir-tts` remains a deprecated compatibility bin. Commands: `doctor`, `render`.
69+
- Project config/state in the target repo: **`.ragmir/`** (`config.json`, `raw/`, `storage/`,
70+
`access.log`, `skills/`, reports, audio, and model caches).
7071
- Environment overrides: **`RAGMIR_*`** (e.g. `RAGMIR_EMBEDDING_PROVIDER`, `RAGMIR_CHUNK_SIZE`).
71-
**`KB_*`** aliases remain only for existing automation.
7272
- MCP tools exposed to agents: **`ragmir_*`** (`ragmir_status`, `ragmir_search`, `ragmir_ask`,
73-
`ragmir_research`, `ragmir_audit`, `ragmir_evaluate`, `ragmir_usage_report`,
74-
`ragmir_security_audit`).
73+
`ragmir_research`, `ragmir_route_prompt`, `ragmir_audit`, `ragmir_evaluate`,
74+
`ragmir_usage_report`, `ragmir_security_audit`).
7575

7676
## Architecture and data flow
7777

@@ -97,7 +97,7 @@ synthesis in core).
9797

9898
`packages/ragmir-tts` is a separate ESM package. It defaults to Transformers.js for offline WAV
9999
rendering without Python or ffmpeg, and uses `edge-tts` for high-quality MP3 only when explicitly
100-
requested. Core `ragmir audio` imports it dynamically.
100+
requested. Core `rgr audio` imports it dynamically.
101101

102102
`packages/ragmir-ui` is the shared Tailwind 4 + React UI layer adapted from the WorkoutGen UI/landing
103103
foundation, but with Ragmir tokens and no WorkoutGen product copy, analytics, CDN paths, or secrets.
@@ -108,22 +108,20 @@ desktop/mobile builds are explicit `pnpm --filter @jcode.labs/ragmir-app tauri:*
108108
Key behaviors to keep in mind before editing:
109109

110110
- **Config resolution is caller-relative.** `loadConfig` walks up from `cwd` looking for
111-
`.ragmir/config.json`, with fallback to legacy `.kb/config.json`. The package must resolve project
112-
data from the caller's working directory, never from its own install path. Zod validates config;
113-
`RAGMIR_*` env vars override, with `KB_*` kept as legacy aliases.
111+
`.ragmir/config.json`. The package must resolve project data from the caller's working directory,
112+
never from its own install path. Zod validates config; `RAGMIR_*` env vars override config.
114113
- **Two embedding providers, not interchangeable at runtime.** `local-hash` (default) is a 384-dim
115114
sha256 lexical embedding — fully offline, no model, *not semantic*. `transformers` lazily
116-
`import()`s `@huggingface/transformers` with `allowRemoteModels` off by default. `ragmir models pull`
117-
and `ragmir setup --semantic` are the explicit one-time remote-download paths for preloading the
115+
`import()`s `@huggingface/transformers` with `allowRemoteModels` off by default. `rgr models pull`
116+
and `rgr setup --semantic` are the explicit one-time remote-download paths for preloading the
118117
configured embedding model. The two providers produce different vectors, so **switching providers
119-
requires `ragmir ingest --rebuild`**.
118+
requires `rgr ingest --rebuild`**.
120119
- **Ingest is incremental by default.** It reuses rows whose checksum, embedding provider, and model
121120
still match, then overwrites the LanceDB table with reused + rebuilt rows. Use `--rebuild` to force
122121
every supported file through parsing, redaction, chunking, and embedding again.
123122
- **Privacy is a feature, not a side effect.** Redaction runs before embedding, the access log stores
124123
query hashes/metadata only (`access-log.ts`), MCP top-K is clamped to `mcpMaxTopK`, and
125-
`gitignore.ts` keeps `.ragmir/` ignored in target repos. `security-audit` also preserves legacy
126-
warnings when a project still uses `.kb/` or `private/**`. Preserve these guarantees.
124+
`gitignore.ts` keeps `.ragmir/` ignored in target repos. Preserve these guarantees.
127125

128126
Coding conventions (KISS, DRY, YAGNI, SOLID as applied here) live in `AGENTS.md`.
129127

0 commit comments

Comments
 (0)