graphjin 3.18.45 → 3.19.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 (2) hide show
  1. package/README.md +6 -5
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -245,7 +245,7 @@ To use GraphJin with your own databases you have to first create a new GraphJin
245
245
 
246
246
  **Step 1: Create New GraphJin App**
247
247
  ```bash
248
- graphjin new my-app
248
+ graphjin serve new my-app
249
249
  ```
250
250
 
251
251
  **Step 2: Start the GraphJin Service**
@@ -602,14 +602,15 @@ Legacy prompts such as `write_query` and `fix_query_error` are available only wh
602
602
 
603
603
  ## Server-Side Agent
604
604
 
605
- Optional: instead of your client chaining `query_catalog` → `validate_where_clause` → `execute_saved_query`, let GraphJin run the catalog-first discovery loop for you. When enabled, GraphJin exposes one MCP tool `ask_graphjin_agent` and one REST endpoint `POST /api/v1/agent` that take a single instruction and return a typed, evidence-backed answer (`status`, `answer`, `data`, `evidence`, `actions`, `next`).
605
+ Instead of your client chaining `query_catalog` → `validate_where_clause` → `execute_saved_query`, let GraphJin run the catalog-first discovery loop for you. Dev and agentic modes enable the agent and expose `ask_graphjin_agent` alongside the primitive MCP tools by default. The REST endpoint `POST /api/v1/agent` takes the same instruction and returns a typed, evidence-backed answer (`status`, `answer`, `data`, `evidence`, `actions`, `next`).
606
606
 
607
- - **Enable** by loading `agentic.yml` (`GO_ENV=agentic`) with `agent.enabled: true` plus a provider, model, and `api_key_env`.
607
+ - **Zero configuration:** dev and agentic modes also enable a private `.graphjin/artifacts.sqlite3` store, watches (`runner: all`), and stateful MCP HTTP. No application subscription starts until an active, approved watch exists. Production defaults are unchanged.
608
608
  - **Execution control:** there are no per-request agent modes. `agent.read_only: true` forces the server-side agent to reject mutations, including saved-query mutations; otherwise core roles, row-level security, source/table `read_only`, and Go protocol guards decide what can run.
609
609
  - **Caller-scoped:** the agent runs as the caller, so core roles + row-level security enforce access. The caller's role only changes which *guidance* the agent follows, never what it can read or write.
610
610
  - **Grounded:** Go protocol guards keep every answer backed by real catalog/validation/execution evidence and downgrade to `blocked` (with evidence) when a step is skipped.
611
+ - **Semantic-aware discovery:** when semantic catalog search is ready, the agent uses short business-intent phrases and may make one private two-or-three-phrase coverage batch; one Ax request embeds cache misses, and only real catalog relationship paths count as join evidence. Lexical-only prompts and public MCP stay unchanged.
611
612
  - **Machine-actionable refusals:** blocked responses carry a structured `refusal` (code, reasons, unblock steps, `policy_final`/`retryable`) so a calling agent can course-correct in one step instead of guessing.
612
- - **Model sampling:** with `agent.sampling: auto` (or `require`), the agent borrows the calling MCP client's model via MCP sampling no server-side model key needed; caller identity and permissions are unchanged.
613
+ - **Automatic model selection:** a populated environment variable named by `agent.api_key_env` always selects the server provider. Without server credentials, MCP borrows the calling client's model via sampling; a non-sampling client gets `model_sampling_unavailable`, and REST fails because it has no MCP session. `agent.sampling: off` disables client fallback.
613
614
 
614
615
  It is an RLM loop — the model writes JavaScript that calls the discovery tools, and the typed result is parsed from `key: value` output. So it needs a model that is good at **code generation**, not provider tool-calling or structured-output modes; any OpenAI-compatible endpoint works via `agent.base_url`. See [AGENTIC.md](AGENTIC.md#server-side-agent) and [CONFIG.md](CONFIG.md#agent-configuration).
615
616
 
@@ -830,7 +831,7 @@ res, _ := gj.GraphQL(ctx, `{ users { id email } }`, nil, nil)
830
831
  ### Standalone Service
831
832
  ```bash
832
833
  brew install dosco/graphjin/graphjin # Mac
833
- graphjin new myapp && cd myapp
834
+ graphjin serve new myapp && cd myapp
834
835
  graphjin serve
835
836
  ```
836
837
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphjin",
3
- "version": "3.18.45",
3
+ "version": "3.19.0",
4
4
  "description": "GraphJin — one governed graph for AI agents: GraphQL + MCP over your databases, files, APIs, and code",
5
5
  "bin": {
6
6
  "graphjin": "bin/graphjin.js"