Commit Graph
45 Commits
Author SHA1 Message Date
Ivan Miletic 20d88e398d fix: decision table verification and diagnostic (#537) 2026-10-02 12:20:06 +02:00
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 13722740a1 fix: number out of range panics (#506) 2026-08-19 11:01:36 +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
stefan-gorules c3b9de695b feat: search capability (#494)
* feat: search capability

* reduce false fuzzy matches count
2026-07-22 16:23:40 +02:00
stefan-gorules 8d1910cc4e feat: graph workspace and static analysis (#483) 2026-07-16 23:42:13 +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
stefan-gorules 6858c1bd04 feat: natural language (#477)
* feat: natural language

* fix cargo fmt
2026-07-07 13:12:46 +02:00
stefan-gorules b6fac7c7a6 perf: binding variable conversion (python and nodejs) (#474) 2026-06-29 13:56:52 +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
bcrevar-gorulesandStefan 7bfebd90fe feat: precompile decision content (#401)
* precompile first

* test

* add Opcode cache through Option<T>

* Compiled support for decisionTable,
default compile of new DecisionContent for node.js and py bindings

* format

* DecisionContent refactored to model module

* fmt

* added back BaseDecisionContent

* tests and benchmark

---------

Co-authored-by: Stefan <stefan@gorules.io>
2025-11-21 14:44:24 +01:00
stefan-gorules 0175637b1f fix: wrap async calls in promise (#415) 2025-11-21 12:21:26 +01:00
stefan-gorules bb70da3447 fix: nodejs add dispose method (#413) 2025-11-21 09:41:43 +01:00
stefan-gorulesandIvan Miletic 922a262e98 feat: wasm support (#404)
* feat: wasm support

* add http callback

* streamline structs

* fix: wasm workflow

* fix: wasi path

* fix: wasm

* fix: wasm path

* fix: clang dev

* fix: libclang static

* fix: build

* fix: node

* fix: wasm

* fix: wasm wasi

* fix: npm dirs

* fix: node workflow

* fix: testing

* fix: test

* update version

* fix: targets

* fix: wasm fix

* fix: commit files

---------

Co-authored-by: Ivan Miletic <vnmiletic@gmail.com>
2025-11-13 12:36:59 +01:00
bcrevar-gorules a97e82aab2 Merge pull request #394 from gorules/feat/napi_3
fix: nodejs bindings napi migration to v3
2025-09-18 12:50:40 +02:00
bojancrevar 1d95a865a4 fmt fix 2025-09-12 15:45:44 +02:00
bojancrevar 740b0fd0bc dispose references removed 2025-09-12 15:25:02 +02:00
bojancrevar 23898b5a25 temp test fix 2025-09-11 14:44:14 +02:00
stefan-gorules 013c1312f8 feat: http auth (#393)
* temp: http auth

* add better error handling

* improve Cargo.toml format

* add enable/disable for http auth

* make aws region optional

* add fallback for aws
2025-09-11 09:58:16 +02:00
Stefan 0eca9ff071 switch to weak tsfn references 2025-09-09 17:25:46 +02:00
Stefan 20ca56e998 fix impl 2025-09-09 17:04:16 +02:00
bojancrevar 3ce30cd1c2 first draft 2025-09-09 15:23:59 +02:00
stefan-gorules 91509821be feat: refactor engine (#390)
* temp: refactor engine

* temp

* implement remaining nodes

* resolve snapshot tests

* improve decision graph implementation

* implement changes in bindings

* implement changes in bindings

* fix function impl gaps

* update cargo.toml

* fix issues with trace
2025-09-04 18:54:32 +02:00
stefan-gorulesandbojancrevar 80fe4021c2 feat: compact trace (#384)
* feat: compact trace

* align with changes

* add deserialization

* add tests and deserializer

* fix bindings

* first draft

* mock time; update snapshots

* fix

* Node.js test fix

* fix merge

* fix utc override

* fix cross-env

* fix workflow

* fix

---------

Co-authored-by: bojancrevar <bojan.crevar@gorules.io>
2025-08-25 12:33:07 +02:00
stefan-gorules f36974a8d6 feat: configurable function timeout (#367) 2025-06-18 10:39:53 +02:00
stefan-gorules 3760feb15c fix: napi trace order and performance rounding (#286)
* fix: napi trace order

* fix

* fix file

* fix types

* fix format
2024-12-06 15:29:41 +01:00
stefan-gorulesandIvan Miletic 47812143a0 feat: passthrough nodes (#261)
* feat: passthrough nodes

* update bindings

* update model

* update exclusion

* fix merge strategy

* fix

* fix merge

* add tests

* fix walk

* fix merge

* fix

* fix: add tests

* fix types

---------

Co-authored-by: Ivan Miletic <vnmiletic@gmail.com>
2024-10-23 15:59:31 +02:00
stefan-gorules 91598166ce feat: rc variable (#246)
* feat: rc variable

* feat: implement variable in engine

* add exports

* fix bindings and improve clone accuracy

* fix tests, fix bindings

* fix fmt

* improve code
2024-09-30 18:34:54 +02:00
stefan-gorules cc3d938b2f feat: function v2 (#212)
* feat: function v2

* expose evaluate

* remove async trait, add caching

* fix naming

* add reverse compatibility

* add http module

* update impl

* resolve issues with reqwest

* fix

* fix

* fix ssl

* remove unused deps

* fix: tests

* fix
2024-07-16 11:22:51 +02:00
stefan-gorules 2d1bebab03 feat: improve switch performance (#159)
* fix: improve switch performance

* fix pipeline
2024-05-13 10:11:24 +02:00
stefan-gorules 32d49a06f3 feat: safe nodejs api (#148) 2024-04-12 11:57:54 +02:00
stefan-gorulesandIvan Miletic 2a2d0d35d3 feat: add nodejs dispose function (#146)
* fix: add nodejs dispose function

* fix: readme

---------

Co-authored-by: Ivan Miletic <vnmiletic@gmail.com>
2024-04-11 17:43:34 +02:00
stefan-gorules 921caeb497 feat: improve nodejs bindings (#145) 2024-04-11 11:20:22 +02:00
stefan-gorules ebba323366 fix: rename templates crate (#140)
* fix: rename templates crate

* fix: update workflow
2024-04-03 16:45:22 +02:00
stefan-gorules daecf901e6 feat: custom node (#138)
* feat: custom node

* add zen template, expose $nodes and $root

* add custom handler to go and nodejs

* add support for python, improve bindings, add error to zen template

* fix: correct binding exports for nodejs and python

* fix benchmark

* improve rust api, trim template in zen templates

* update cargo action

* update expression version

* compile action

* fix action format
2024-04-03 16:09:51 +02:00
stefan-gorules 5f423b7910 feat: zen expression rewrite (#107)
* temp: zen-expression rewrite

* rewrite standard parser

* stabilise parser, upgrade dependencies

* implement unary parser

* align builtin behavior

* fix tests and minor bugs

* refactor exports, update docs

* fix expression repl

* cleanup

* cleanup vm

* replace expression with expression-rewrite

* update d.ts file

* fix failing test
2023-12-12 08:50:25 +01:00
stefan-gorules 1b0ff9f6f1 feat: expose expressions through bindings; (#86)
* feat: expose expressions through bindings;

* fix fmt
2023-09-14 16:07:55 +02:00
stefan-gorules f8dc07536f refactor: decision graph; move validation logic to core; (#78) 2023-08-29 15:38:49 +02:00
stefan-gorules a03978fbe7 feat: add bigjs to function node; (#77)
* feat: add bigjs to function node;

* fix test

* fix tests

* fix fmt
2023-08-28 17:21:31 +02:00
stefan-gorules 9277850855 fix: implement serializable errors; improve binding error transparency; (#62) 2023-07-27 21:27:14 +02:00
stefan-gorules adaf3f0b28 fix: napi open handle (#40)
* fix: napi open handle

* clone worker when executing loader
2023-05-27 21:46:43 +02:00
stefan-gorules 23097d0dd8 fix: ts evaluate options; (#37)
* fix: ts evaluate options;

* rename JsDecisionLoader
2023-05-09 21:14:06 +02:00
stefan-gorules d01908d743 fix: error propagation; (#20)
* fix: error propagation;

* disable unsupported miri test
2023-04-24 19:56:29 +02:00
stefan-gorules fe6d1bc47e refactor: flatten zen engine exports (#17)
* refactor: flatten zen-engine exports;

* fix: update bindings and readme

* fix fmt

* fix benchmark
2023-04-07 02:54:43 +02:00
Team GoRules 768175994b Initial commit 2023-03-29 22:14:37 +02:00