Commit Graph
233 Commits
Author SHA1 Message Date
stefan-gorules ffdfd807d1 feat: implement slots instead of natural language (#527)
* feat: implement slots instead of natural language

Replace the natural-language projection (`nl`) with engine-owned slot
completion: for a cursor position the engine classifies the slot being
edited (operand, operator, literal, member access, ...) and returns typed
options, literal facts and the expected type, for policies and graphs.

- zen-expression: new `slot` module (classification, literals, operators)
  and a lenient lexer mode for incomplete input; `nl` removed
- Intellisense: typed diagnostic codes with arguments, richer inspect for
  hover, dedicated parser error variants (messages unchanged)
- Engine: `Workspace::cursor_scope`, `slot`, `facts`; `rename_from` and
  `references_from`; editor spans in UTF-16 units; renames reach imported
  policies, `$nodes` reads, child graphs and output column heads; no `$root`
  completion in policies
- Node bindings: `slot`, `facts`, `cursorScope`, `slotBatch` replace
  `nl`, `nlTokenize`, `nlEncodeString`, `nlTokenizeBatch`

No change to expression evaluation: the VM, compiler, functions and the
default lexer path are untouched, and parser error messages keep their text.

* fix: harden slot classification, scopes and graph expectations

- restore master execution order; slot scopes hide writes of the edited
  block and its dependents instead of relying on block ranking
- token-start editing gated by slot state; operator, list and operand
  spans no longer splice into neighbouring tokens
- interval-aware bracket pairing for half-open and reversed intervals
- lenient lexer recovers from unknown characters (slots only)
- graph expected type follows switch and pass-through nodes and merges
  compatible output schemas
- sibling inference caps distinct values and analyses lazily
- deterministic overload return type display

* fix: order policy blocks by entity reads through closures and relationships

- record reads for `#.field` in closures so entity fields read through
  lists become dependencies
- link reads through derived lists (filter/map results) to the entity
  fields they carry and order the list after those fields
- evaluate entity blocks on single relationships, and demand entity
  paths for plain reads through relationships
- slot scopes keep the top-level variable when hiding written fields
2026-09-28 21:47:40 +02:00
stefan-gorules a7157f3448 fix: scope policy evaluation to the import closure (#525)
* fix: scope policy evaluation to the import closure

A policy is now analysed and evaluated together with the policies it
imports (transitively), instead of every policy connected to it by imports
in either direction. Importers and siblings no longer leak into each other:
compiled evaluate() of an imported policy used to run its importers' and
siblings' blocks.

- Evaluation gate analyses the entry's import closure as one unit, so a
  child may read fields and reference entities its importer declares when
  evaluated through that importer
- compile() reports a policy that is only valid through an importer with
  kind "policyImportOnly" instead of failing it as a plain "policy"; errors
  are computed once per key
- Scope diagnostics (duplicate writers, input overrides, data model and
  dictionary collisions, cycles) are reported for the whole closure, and
  conflicts introduced by combining imports are reported on the importer
- Single-entity scope checks run per import closure instead of workspace-wide

* fix: unknown import relationship targets and renames across imports

- An unresolved relationship/reference target inside an imported policy now
  blocks the importer's evaluation and compile(), as on master; the check was
  still limited to the policy being analysed, so the importer compiled and
  the broken child was reported as "policyImportOnly"
- Rename and find-references analyse each policy's expressions in every
  importer's context too, so reads of a field declared by an importer are
  found in the imported policy again
2026-09-28 12:17:12 +02:00
stefan-gorules e095189dd6 fix: return errors instead of panicking in memory loader and v1 functions (#524)
* fix: return errors instead of panicking in memory loader and v1 functions

- MemoryLoader recovers from a poisoned lock. Previously a panic during
  one add() (e.g. a failing content conversion) made every later
  add/get/remove/keys call panic for the rest of the process
- v1 function node returns an error when its JS bootstrap fails instead
  of unwrapping. The 500ms interrupt budget starts before the runtime and
  bundled libraries load, so a slow or loaded host could interrupt the
  bootstrap and panic

* chore: bump setup-android to v3 in uniffi workflow

Only platform-tools is installed; Gradle fetches the platform and build tools the AAR build needs.
2026-09-28 11:24:17 +02:00
GoRules Team 6c0fbabba1 chore(release): publish (#517) 2026-08-22 13:27:31 +02:00
stefan-gorules 692ca2fe6b fix: improve READMEs across bindings (#516)
* fix: improve READMEs across bindings

* add readmes for crates
2026-08-22 13:10:37 +02:00
GoRules TeamandStefan 112b8dbd42 chore(release): publish (#507)
* chore(release): publish

* correct version of expression_repl to v2

* remove release-as property

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-08-20 19:43:55 +02:00
stefan-gorules 0b6c6a709a fix: nested scopes and any cascade (#513) 2026-08-20 17:39:45 +02:00
stefan-gorules c615013a2d feat: graph dt column collect (#505) 2026-08-19 10:44:58 +02:00
GoRules TeamandStefan 0a1c0c3ff5 chore(release): publish (#503)
* chore(release): publish

* correct versions

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-08-19 00:06:21 +02:00
GoRules TeamandStefan 83504fa639 chore(release): publish (#501)
* chore(release): publish

* correct versions

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-08-07 10:51:46 +02:00
stefan-gorules ed0c286d9f fix: v1 behaviour hardening (#502) 2026-08-07 10:30:43 +02:00
stefan-gorules fe43b4c1d7 perf: general performance improvements (#500)
* perf: general performance improvements

* remove unsafe usages, further improve perf

* perf: add table indexing
2026-08-04 11:12:37 +02:00
GoRules TeamandIvan Miletic 32a8f12547 chore(release): publish (#499)
* chore(release): publish

* correct the release

---------

Co-authored-by: Ivan Miletic <vnmiletic@gmail.com>
2026-07-26 14:02:39 +02:00
Ivan Miletic 7b4dc3cfbc fix: graph explain dot (#498) 2026-07-26 13:45:39 +02:00
GoRules TeamandIvan Miletic 6ed91ecb82 chore(release): publish (#497)
* chore(release): publish

---------

Co-authored-by: Ivan Miletic <vnmiletic@gmail.com>
2026-07-24 14:53:46 +02:00
Ivan Miletic 37d5e0baf7 fix: dt no cell defaults to true (#496) 2026-07-24 14:35:55 +02:00
GoRules TeamandStefan e17a808bae chore(release): publish (#495)
* chore(release): publish

* correct the release

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-07-22 16:47:46 +02:00
stefan-gorules c3b9de695b feat: search capability (#494)
* feat: search capability

* reduce false fuzzy matches count
2026-07-22 16:23:40 +02:00
GoRules TeamandStefan ad97b340b3 chore(release): publish (#491)
* chore(release): publish

* fix: correct cascade-bumped prerelease versions

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-07-22 11:38:23 +02:00
stefan-gorules 63b560c526 feat: workspace lints and type fixes (#492)
* feat: workspace lints and type fixes

* fix fmt
2026-07-22 11:17:49 +02:00
stefan-gorules e4c51b7dfc perf: improve workspace performance (#490)
* perf: improve workspace performance

* fix fmt
2026-07-21 22:19:59 +02:00
GoRules Team 717cbf5d80 chore(release): publish (#488) 2026-07-21 12:44:04 +02:00
stefan-gorules 1818371c90 feat: implement new loaders across languages (#487) 2026-07-20 12:20:48 +02:00
GoRules TeamandStefan 7c8f847c6d chore(release): publish (#484)
* chore(release): publish

* fix prerelease versions

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-07-17 11:51:27 +02:00
stefan-gorules 8d1910cc4e feat: graph workspace and static analysis (#483) 2026-07-16 23:42:13 +02:00
GoRules TeamandStefan 48cc2e38d5 chore(release): publish (#482)
* chore(release): publish

* correct release versions

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-07-10 10:42:56 +02:00
stefan-gorules 9a11ae4f48 feat: policy table output type (#481) 2026-07-10 10:13:47 +02:00
GoRules TeamandStefan 68708fa057 chore(release): publish (#480)
* chore(release): publish

* fix incorrect version bump

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-07-08 13:49:07 +02:00
stefan-gorules b4b59eb7c5 feat: policy dictionary (#479)
* feat: policy dictionary

* remove enum references

* improve tests

* reset index.js and package.json
2026-07-08 13:21:03 +02:00
GoRules TeamandStefan d3cd7ccad9 chore(release): publish (#478)
* chore(release): publish

* correct release version

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-07-07 14:54:50 +02:00
stefan-gorules 6858c1bd04 feat: natural language (#477)
* feat: natural language

* fix cargo fmt
2026-07-07 13:12:46 +02:00
aleksej-gorules ae6da41140 Merge pull request #472 from gorules/sccache-s3
chore: add s3 backend for sccache
2026-06-26 14:15:04 +00:00
Aleksej Komnenovic 113b5de2ed fix wording in engine doc comment 2026-06-26 15:23:48 +02:00
GoRules TeamandStefan c064ed0c4c chore(release): publish (#471)
* chore(release): publish

* hotfix version update and remove release-as from config

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-06-26 14:16:28 +02:00
stefan-gorules 355b86a57c fix: trigger release v1.0.0-beta.2 (#470) 2026-06-26 13:39:09 +02:00
stefan-gorules c76e618551 chore: disable gh release for napi (#469) 2026-06-26 13:18:42 +02:00
GoRules TeamandStefan bab9af86e4 chore(release): publish (#468)
* chore(release): publish

* hotfix 1.0.1-beta.0 version to 1.0.0-beta.1

---------

Co-authored-by: Stefan <stefan@gorules.io>
2026-06-26 12:00:10 +02:00
stefan-gorules bb53a5298f fix: switch releases to tag based workflow triggers (#465) 2026-06-25 21:53:52 +02:00
GoRules Team 0aa2a39ebc chore(release): publish (#462) 2026-06-25 15:19:46 +02:00
stefan-gorules 6c0ca51354 feat: policy engine (#450)
* feat: policy engine

* fix: cargo fmt

* fix: resolve issues with miri
2026-06-23 18:51:47 +02:00
stefan-gorules 602d214b96 feat: expression static analysis (#449)
* feat: expression static analysis

* fix: cargo fmt

* fix: python workflow

* fix: python workflow

* fix: python workflow

* fix: ignore miri test bound by clock

* fix: memory leaks
2026-06-22 15:48:05 +02:00
Bot b49c54fff9 chore(release): publish core 2026-05-29 12:27:01 +00:00
bcrevar-gorules 63957b7010 fix(GRL-517): bump reqsign to 0.20 to drop vulnerable jsonwebtoken (#446)
* dep update

* lld fix

* lld fix 2

* lld fix 3

* lld fix 4

* lld fix 6

* lld fix 7

* lld fix 8

* lld fix 9

* lld fix 10
2026-05-29 14:16:48 +02:00
Bot 1194118ad2 chore(release): publish core 2026-03-15 13:44:59 +00:00
Bot a3b39626d7 chore(release): publish core 2026-03-03 16:20:26 +00:00
stefan-gorules 46688a4d4c feat: configurable arbitrary precision (#433)
* feat: configurable arbitrary precision

* fix workflow

* fix workflow

* set version of docker run action to v1

* set arbitrary_precision as opt-in

* revert making arbitrary_precision non-default

* update cargo version action and add features in Cargo.toml for deps

* add tests for arbitrary precision and make it non default. add warnings for compilation when arbitrary precision not enabled

* simplify conversion

* remove build.rs
2026-03-03 16:57:22 +01:00
stefan-gorules 6beecb423f fix: simplify compilation (#429)
* fix: simplify compilation

* improve opcodecache structure
2026-02-11 16:07:34 +01:00
Bot 8ff09e604c chore(release): publish core 2026-01-19 09:53:18 +00:00
Bot 01fa59856c chore(release): publish core 2025-11-24 12:46:07 +00:00
stefan-gorules f054aa876c fix: omit reserved properties in fn return (#417) 2025-11-24 12:44:32 +01:00