inquirex 0.10.0 → 0.11.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -6
- data/README.md +1 -6
- data/lib/inquirex/completion_metadata.rb +1 -1
- data/lib/inquirex/version.rb +1 -1
- metadata +78 -82
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9a4701c7b2bb8ccf5a9da4a5a25e93be1cc4544371f2d9c1f48c478e04a9af75
|
|
4
|
+
data.tar.gz: 3192f545c283e0cfedf7eadec341f02d7984c0551ee1454714b51eb7fb1db250
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 66b1f3c05ad85be1bc8b70f05b669b540cc116b0f9a985393e7715614fa98a0974c631e7ca5cb709b29a2c000fd4f4eb535fea81c14959572e63be817069117d
|
|
7
|
+
data.tar.gz: 957265be4973894ff8d2a5b219a89c68196a880c63179e103c652fafd67cdb71fe1809a68db23e2b403ff72e1d4fc78810694c03bf58cb45aed02dcf13051443
|
data/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [v0.10.0](https://github.com/inquirex/inquirex/tree/v0.10.0) (2026-08-21)
|
|
4
|
+
|
|
5
|
+
[Full Changelog](https://github.com/inquirex/inquirex/compare/v0.9.4...v0.10.0)
|
|
6
|
+
|
|
7
|
+
**Merged pull requests:**
|
|
8
|
+
|
|
9
|
+
- Set the lockstep version to 0.10.0 [#10](https://github.com/inquirex/inquirex/pull/10) ([kigster](https://github.com/kigster))
|
|
10
|
+
- Correct the lockstep set to six and bump to 0.9.6 [#9](https://github.com/inquirex/inquirex/pull/9) ([kigster](https://github.com/kigster))
|
|
11
|
+
- Numeric steps can declare bounds: min, max and step_size [#8](https://github.com/inquirex/inquirex/pull/8) ([kigster](https://github.com/kigster))
|
|
12
|
+
|
|
13
|
+
## [v0.9.4](https://github.com/inquirex/inquirex/tree/v0.9.4) (2026-08-06)
|
|
14
|
+
|
|
15
|
+
[Full Changelog](https://github.com/inquirex/inquirex/compare/v0.8.0...v0.9.4)
|
|
16
|
+
|
|
17
|
+
**Merged pull requests:**
|
|
18
|
+
|
|
19
|
+
- Validate DSL before eval, replace actions with send_email, fix extraction prefill [#6](https://github.com/inquirex/inquirex/pull/6) ([kigster](https://github.com/kigster))
|
|
20
|
+
|
|
21
|
+
## [v0.8.0](https://github.com/inquirex/inquirex/tree/v0.8.0) (2026-08-01)
|
|
22
|
+
|
|
23
|
+
[Full Changelog](https://github.com/inquirex/inquirex/compare/v0.7.0...v0.8.0)
|
|
24
|
+
|
|
3
25
|
## [v0.7.0](https://github.com/inquirex/inquirex/tree/v0.7.0) (2026-07-31)
|
|
4
26
|
|
|
5
27
|
[Full Changelog](https://github.com/inquirex/inquirex/compare/v0.6.1...v0.7.0)
|
|
6
28
|
|
|
7
29
|
**Merged pull requests:**
|
|
8
30
|
|
|
9
|
-
- Add required false and user-initiated Engine
|
|
31
|
+
- Add required false and user-initiated Engine#skip [#4](https://github.com/inquirex/inquirex/pull/4) ([kigster](https://github.com/kigster))
|
|
10
32
|
|
|
11
33
|
## [v0.6.1](https://github.com/inquirex/inquirex/tree/v0.6.1) (2026-07-20)
|
|
12
34
|
|
|
@@ -18,8 +40,8 @@
|
|
|
18
40
|
|
|
19
41
|
**Merged pull requests:**
|
|
20
42
|
|
|
21
|
-
- Support for actions such as email send [
|
|
22
|
-
- Add action DSL verb building emails into Answers
|
|
43
|
+
- Support for actions such as email send [#3](https://github.com/inquirex/inquirex/pull/3) ([kigster](https://github.com/kigster))
|
|
44
|
+
- Add action DSL verb building emails into Answers#outbox [#2](https://github.com/inquirex/inquirex/pull/2) ([kigster](https://github.com/kigster))
|
|
23
45
|
|
|
24
46
|
## [v0.5.0](https://github.com/inquirex/inquirex/tree/v0.5.0) (2026-07-16)
|
|
25
47
|
|
|
@@ -43,12 +65,10 @@
|
|
|
43
65
|
|
|
44
66
|
**Merged pull requests:**
|
|
45
67
|
|
|
46
|
-
- Add accumulators for pricing and scoring [
|
|
68
|
+
- Add accumulators for pricing and scoring [#1](https://github.com/inquirex/inquirex/pull/1) ([kigster](https://github.com/kigster))
|
|
47
69
|
|
|
48
70
|
## [v0.2.0](https://github.com/inquirex/inquirex/tree/v0.2.0) (2026-04-13)
|
|
49
71
|
|
|
50
72
|
[Full Changelog](https://github.com/inquirex/inquirex/compare/a07eeaaa4d459139164e97c622d1d3038b28a5f5...v0.2.0)
|
|
51
73
|
|
|
52
|
-
|
|
53
|
-
|
|
54
74
|
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
data/README.md
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
[](https://badge.fury.io/rb/inquirex) [](https://github.com/inquirex/inquirex/actions/workflows/main.yml) 
|
|
1
|
+
[](https://dl.circleci.com/status-badge/redirect/gh/inquirex/inquirex/tree/main) [](https://badge.fury.io/rb/inquirex) [](https://github.com/inquirex/inquirex/actions/workflows/main.yml) 
|
|
2
2
|
|
|
3
3
|
# Inquirex
|
|
4
4
|
|
|
5
5
|
`inquirex` family of libraries (part Ruby, part JavaScript), is a declarative, rules-driven questionnaire engine for building conditional intake forms, qualification wizards, and branching surveys, which can be AI-enabled, and rendered on your site inside a "copilot" widget window or in a TUI (Terminal UI) all the same.
|
|
6
6
|
|
|
7
7
|
> [!IMPORTANT]
|
|
8
|
-
>
|
|
9
8
|
> Today the ecosystem contains:
|
|
10
9
|
>
|
|
11
10
|
> - [`inquirex`](https://github.com/inquirex/inquirex): the base gem that defines the graph via DSL and provides most of the backend features
|
|
@@ -28,7 +27,6 @@ There are plenty of form building gems, hard-coded branching controllers, React
|
|
|
28
27
|
It provides a rich DSL for creating dynamic user intake forms, with complexity ranging from a simple straight-line forms to multi-branch, conditional forms with dozens of potential branches, *UI widget hints* for various rendering platforms, with *accumulators* that allow computing sums or products based on user's answers (which allow you to compute — for user or for yourself — that the service you are requesting will cost between $X & $Y).
|
|
29
28
|
|
|
30
29
|
> [!NOTE]
|
|
31
|
-
>
|
|
32
30
|
> For technically inclined, Inquirex turns user forms into a directed graph, where nodes are either questions or statements (or UI transitions), while edges are AST-based logical conditions that can be stacked and joined in arbitrarily complex ways, allowing you to move from one question to any other based on the previous answer. See the details below.
|
|
33
31
|
|
|
34
32
|
***Don't want to deal with figuring it out? Head to [Qualified.At](https://qualified.at) and walk through the demo onboarding form, that exists specifically to show you how quickly you can have the same conceptually on your site, tailored to YOUR users.***
|
|
@@ -67,7 +65,6 @@ So, if you ever wanted to ask users who arrive at your site a few simple questio
|
|
|
67
65
|
## Examples
|
|
68
66
|
|
|
69
67
|
> [!NOTE]
|
|
70
|
-
>
|
|
71
68
|
> There are a couple of examples shown in this `README` file, and also in the [`./examples`](./examples) folder. You can read about running them in a [`README.md`](./examples/README.md) inside that folder.
|
|
72
69
|
|
|
73
70
|
## Installation
|
|
@@ -374,7 +371,6 @@ engine.totals # => { price: 700.0, complexity: 4 }
|
|
|
374
371
|
Accumulators serialize predictably, keeping the contract with `inquirex-js` explicit.
|
|
375
372
|
|
|
376
373
|
> [!NOTE]
|
|
377
|
-
>
|
|
378
374
|
> You can convert between Ruby DSL and JSON using the [`inquirex-tty`](https://github.com/inquirex/inquirex-tty) gem.
|
|
379
375
|
|
|
380
376
|
```json
|
|
@@ -554,7 +550,6 @@ On the wire, step JSON carries `"required": false` (omitted when true, like othe
|
|
|
554
550
|
```
|
|
555
551
|
|
|
556
552
|
> [!NOTE]
|
|
557
|
-
>
|
|
558
553
|
> **`skip_if` is not the same thing.** A `skip_if` rule is *flow logic*: the definition elides the step from the path automatically, no default kicks in, and the step is **not** added to `engine.skipped` — it was never presented, so the user cannot have declined it. `Engine#skip` is a *user action* on a question that was presented. See [`docs/design/required-and-skip.md`](docs/design/required-and-skip.md) for the full design.
|
|
559
554
|
|
|
560
555
|
## Completion Metadata
|
|
@@ -32,7 +32,7 @@ module Inquirex
|
|
|
32
32
|
# @param engine [String] rendering front-end name (e.g. "inquirex-tty")
|
|
33
33
|
# @param engine_version [String] rendering front-end version
|
|
34
34
|
# @param extra [Hash] any additional, optional members
|
|
35
|
-
def initialize(engine:, engine_version:, **extra)
|
|
35
|
+
def initialize(engine:, engine_version:, **extra)
|
|
36
36
|
super
|
|
37
37
|
end
|
|
38
38
|
|
data/lib/inquirex/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,107 +1,103 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: inquirex
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.11.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
- Konstantin Gredeskoul
|
|
7
|
+
- Konstantin Gredeskoul
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
|
-
- !ruby/object:Gem::Dependency
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
the graph, collects structured answers, and serializes everything to JSON — making
|
|
30
|
-
it the ideal backbone for cross-platform intake forms where the frontend is a chat
|
|
31
|
-
widget, a terminal, or a mobile app. Framework-agnostic, no third-party dependencies,
|
|
32
|
-
thread-safe immutable definitions.
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: ostruct
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
-
|
|
17
|
+
- ~>
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: "0.6"
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
-
|
|
25
|
+
- ~>
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: "0.6"
|
|
28
|
+
description: "Inquirex lets you define multi-step questionnaires as directed graphs with conditional branching, using a conversational DSL (ask, say, mention) and an AST-based rule system (contains, equals, greater_than, all, any). The engine walks the graph, collects structured answers, and serializes everything to JSON — making it the ideal backbone for cross-platform intake forms where the frontend is a chat widget, a terminal, or a mobile app. Framework-agnostic, no third-party dependencies, thread-safe immutable definitions."
|
|
33
29
|
email:
|
|
34
|
-
- kigster@gmail.com
|
|
30
|
+
- kigster@gmail.com
|
|
35
31
|
executables: []
|
|
36
32
|
extensions: []
|
|
37
33
|
extra_rdoc_files: []
|
|
38
34
|
files:
|
|
39
|
-
- CHANGELOG.md
|
|
40
|
-
- LICENSE.txt
|
|
41
|
-
- README.md
|
|
42
|
-
- lib/inquirex.rb
|
|
43
|
-
- lib/inquirex/accumulator.rb
|
|
44
|
-
- lib/inquirex/answers.rb
|
|
45
|
-
- lib/inquirex/completion_metadata.rb
|
|
46
|
-
- lib/inquirex/definition.rb
|
|
47
|
-
- lib/inquirex/dsl.rb
|
|
48
|
-
- lib/inquirex/dsl/flow_builder.rb
|
|
49
|
-
- lib/inquirex/dsl/rule_helpers.rb
|
|
50
|
-
- lib/inquirex/dsl/send_email_builder.rb
|
|
51
|
-
- lib/inquirex/dsl/step_builder.rb
|
|
52
|
-
- lib/inquirex/engine.rb
|
|
53
|
-
- lib/inquirex/engine/state_serializer.rb
|
|
54
|
-
- lib/inquirex/errors.rb
|
|
55
|
-
- lib/inquirex/evaluator.rb
|
|
56
|
-
- lib/inquirex/graph/mermaid_exporter.rb
|
|
57
|
-
- lib/inquirex/node.rb
|
|
58
|
-
- lib/inquirex/rules/all.rb
|
|
59
|
-
- lib/inquirex/rules/any.rb
|
|
60
|
-
- lib/inquirex/rules/base.rb
|
|
61
|
-
- lib/inquirex/rules/contains.rb
|
|
62
|
-
- lib/inquirex/rules/equals.rb
|
|
63
|
-
- lib/inquirex/rules/greater_than.rb
|
|
64
|
-
- lib/inquirex/rules/less_than.rb
|
|
65
|
-
- lib/inquirex/rules/not_empty.rb
|
|
66
|
-
- lib/inquirex/safe_source.rb
|
|
67
|
-
- lib/inquirex/safe_source/call_spec.rb
|
|
68
|
-
- lib/inquirex/safe_source/validator.rb
|
|
69
|
-
- lib/inquirex/safe_source/vocabulary.rb
|
|
70
|
-
- lib/inquirex/send_email.rb
|
|
71
|
-
- lib/inquirex/template.rb
|
|
72
|
-
- lib/inquirex/transcript.rb
|
|
73
|
-
- lib/inquirex/transition.rb
|
|
74
|
-
- lib/inquirex/validation/adapter.rb
|
|
75
|
-
- lib/inquirex/validation/null_adapter.rb
|
|
76
|
-
- lib/inquirex/version.rb
|
|
77
|
-
- lib/inquirex/widget_hint.rb
|
|
78
|
-
- lib/inquirex/widget_registry.rb
|
|
79
|
-
homepage: https://github.com/inquirex/inquirex
|
|
35
|
+
- CHANGELOG.md
|
|
36
|
+
- LICENSE.txt
|
|
37
|
+
- README.md
|
|
38
|
+
- lib/inquirex.rb
|
|
39
|
+
- lib/inquirex/accumulator.rb
|
|
40
|
+
- lib/inquirex/answers.rb
|
|
41
|
+
- lib/inquirex/completion_metadata.rb
|
|
42
|
+
- lib/inquirex/definition.rb
|
|
43
|
+
- lib/inquirex/dsl.rb
|
|
44
|
+
- lib/inquirex/dsl/flow_builder.rb
|
|
45
|
+
- lib/inquirex/dsl/rule_helpers.rb
|
|
46
|
+
- lib/inquirex/dsl/send_email_builder.rb
|
|
47
|
+
- lib/inquirex/dsl/step_builder.rb
|
|
48
|
+
- lib/inquirex/engine.rb
|
|
49
|
+
- lib/inquirex/engine/state_serializer.rb
|
|
50
|
+
- lib/inquirex/errors.rb
|
|
51
|
+
- lib/inquirex/evaluator.rb
|
|
52
|
+
- lib/inquirex/graph/mermaid_exporter.rb
|
|
53
|
+
- lib/inquirex/node.rb
|
|
54
|
+
- lib/inquirex/rules/all.rb
|
|
55
|
+
- lib/inquirex/rules/any.rb
|
|
56
|
+
- lib/inquirex/rules/base.rb
|
|
57
|
+
- lib/inquirex/rules/contains.rb
|
|
58
|
+
- lib/inquirex/rules/equals.rb
|
|
59
|
+
- lib/inquirex/rules/greater_than.rb
|
|
60
|
+
- lib/inquirex/rules/less_than.rb
|
|
61
|
+
- lib/inquirex/rules/not_empty.rb
|
|
62
|
+
- lib/inquirex/safe_source.rb
|
|
63
|
+
- lib/inquirex/safe_source/call_spec.rb
|
|
64
|
+
- lib/inquirex/safe_source/validator.rb
|
|
65
|
+
- lib/inquirex/safe_source/vocabulary.rb
|
|
66
|
+
- lib/inquirex/send_email.rb
|
|
67
|
+
- lib/inquirex/template.rb
|
|
68
|
+
- lib/inquirex/transcript.rb
|
|
69
|
+
- lib/inquirex/transition.rb
|
|
70
|
+
- lib/inquirex/validation/adapter.rb
|
|
71
|
+
- lib/inquirex/validation/null_adapter.rb
|
|
72
|
+
- lib/inquirex/version.rb
|
|
73
|
+
- lib/inquirex/widget_hint.rb
|
|
74
|
+
- lib/inquirex/widget_registry.rb
|
|
75
|
+
homepage: "https://github.com/inquirex/inquirex"
|
|
80
76
|
licenses:
|
|
81
|
-
- MIT
|
|
77
|
+
- MIT
|
|
82
78
|
metadata:
|
|
83
|
-
allowed_push_host: https://rubygems.org
|
|
84
|
-
homepage_uri: https://qualified.at
|
|
85
|
-
source_code_uri: https://github.com/inquirex/inquirex
|
|
86
|
-
changelog_uri: https://github.com/inquirex/inquirex/blob/main/CHANGELOG.md
|
|
87
|
-
rubygems_mfa_required:
|
|
79
|
+
allowed_push_host: "https://rubygems.org"
|
|
80
|
+
homepage_uri: "https://qualified.at"
|
|
81
|
+
source_code_uri: "https://github.com/inquirex/inquirex"
|
|
82
|
+
changelog_uri: "https://github.com/inquirex/inquirex/blob/main/CHANGELOG.md"
|
|
83
|
+
rubygems_mfa_required: "true"
|
|
88
84
|
rdoc_options: []
|
|
89
85
|
require_paths:
|
|
90
|
-
- lib
|
|
86
|
+
- lib
|
|
91
87
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
88
|
requirements:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
89
|
+
-
|
|
90
|
+
- ">="
|
|
91
|
+
- !ruby/object:Gem::Version
|
|
92
|
+
version: 4.0.0
|
|
96
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
94
|
requirements:
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
95
|
+
-
|
|
96
|
+
- ">="
|
|
97
|
+
- !ruby/object:Gem::Version
|
|
98
|
+
version: "0"
|
|
101
99
|
requirements: []
|
|
102
|
-
rubygems_version: 4.0.
|
|
100
|
+
rubygems_version: 4.1.0.beta2
|
|
103
101
|
specification_version: 4
|
|
104
|
-
summary: A declarative, rules-driven questionnaire engine for building conditionally-branching
|
|
105
|
-
intake forms, qualification wizards, and surveys in pure Ruby, with additional plugins
|
|
106
|
-
providing LLM/AI support. See inquirex-llm.
|
|
102
|
+
summary: "A declarative, rules-driven questionnaire engine for building conditionally-branching intake forms, qualification wizards, and surveys in pure Ruby, with additional plugins providing LLM/AI support. See inquirex-llm."
|
|
107
103
|
test_files: []
|