parse-stack-next 4.5.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 (178) hide show
  1. checksums.yaml +7 -0
  2. data/.bundle/config +2 -0
  3. data/.env.sample +112 -0
  4. data/.env.test +10 -0
  5. data/.github/workflows/ruby.yml +36 -0
  6. data/.gitignore +49 -0
  7. data/.ruby-version +1 -0
  8. data/.solargraph.yml +22 -0
  9. data/CHANGELOG.md +5816 -0
  10. data/Gemfile +30 -0
  11. data/Gemfile.lock +175 -0
  12. data/LICENSE.txt +23 -0
  13. data/Makefile +63 -0
  14. data/README.md +5655 -0
  15. data/Rakefile +573 -0
  16. data/bin/console +38 -0
  17. data/bin/parse-console +136 -0
  18. data/bin/server +17 -0
  19. data/bin/setup +7 -0
  20. data/config/parse-config.json +12 -0
  21. data/docs/TEST_SERVER.md +271 -0
  22. data/docs/_config.yml +1 -0
  23. data/docs/mcp_guide.md +3484 -0
  24. data/docs/mongodb_direct_guide.md +1348 -0
  25. data/docs/mongodb_index_optimization_guide.md +631 -0
  26. data/examples/transaction_example.rb +219 -0
  27. data/lib/parse/acl_scope.rb +728 -0
  28. data/lib/parse/agent/cancellation_token.rb +80 -0
  29. data/lib/parse/agent/constraint_translator.rb +480 -0
  30. data/lib/parse/agent/describe.rb +420 -0
  31. data/lib/parse/agent/errors.rb +133 -0
  32. data/lib/parse/agent/mcp_client.rb +557 -0
  33. data/lib/parse/agent/mcp_dispatcher.rb +1023 -0
  34. data/lib/parse/agent/mcp_rack_app.rb +1143 -0
  35. data/lib/parse/agent/mcp_server.rb +376 -0
  36. data/lib/parse/agent/metadata_audit.rb +259 -0
  37. data/lib/parse/agent/metadata_dsl.rb +733 -0
  38. data/lib/parse/agent/metadata_registry.rb +794 -0
  39. data/lib/parse/agent/pipeline_validator.rb +82 -0
  40. data/lib/parse/agent/prompts.rb +351 -0
  41. data/lib/parse/agent/rate_limiter.rb +158 -0
  42. data/lib/parse/agent/relation_graph.rb +162 -0
  43. data/lib/parse/agent/result_formatter.rb +453 -0
  44. data/lib/parse/agent/tools.rb +5489 -0
  45. data/lib/parse/agent.rb +3249 -0
  46. data/lib/parse/api/aggregate.rb +79 -0
  47. data/lib/parse/api/all.rb +26 -0
  48. data/lib/parse/api/analytics.rb +18 -0
  49. data/lib/parse/api/batch.rb +33 -0
  50. data/lib/parse/api/cloud_functions.rb +58 -0
  51. data/lib/parse/api/config.rb +125 -0
  52. data/lib/parse/api/files.rb +29 -0
  53. data/lib/parse/api/hooks.rb +117 -0
  54. data/lib/parse/api/objects.rb +146 -0
  55. data/lib/parse/api/path_segment.rb +75 -0
  56. data/lib/parse/api/push.rb +20 -0
  57. data/lib/parse/api/schema.rb +49 -0
  58. data/lib/parse/api/server.rb +50 -0
  59. data/lib/parse/api/sessions.rb +24 -0
  60. data/lib/parse/api/users.rb +250 -0
  61. data/lib/parse/atlas_search/index_manager.rb +353 -0
  62. data/lib/parse/atlas_search/result.rb +204 -0
  63. data/lib/parse/atlas_search/search_builder.rb +604 -0
  64. data/lib/parse/atlas_search/session.rb +253 -0
  65. data/lib/parse/atlas_search.rb +995 -0
  66. data/lib/parse/client/authentication.rb +97 -0
  67. data/lib/parse/client/batch.rb +234 -0
  68. data/lib/parse/client/body_builder.rb +240 -0
  69. data/lib/parse/client/caching.rb +203 -0
  70. data/lib/parse/client/logging.rb +293 -0
  71. data/lib/parse/client/profiling.rb +181 -0
  72. data/lib/parse/client/protocol.rb +91 -0
  73. data/lib/parse/client/request.rb +233 -0
  74. data/lib/parse/client/response.rb +208 -0
  75. data/lib/parse/client.rb +1104 -0
  76. data/lib/parse/clp_scope.rb +361 -0
  77. data/lib/parse/live_query/circuit_breaker.rb +256 -0
  78. data/lib/parse/live_query/client.rb +1001 -0
  79. data/lib/parse/live_query/configuration.rb +224 -0
  80. data/lib/parse/live_query/event.rb +115 -0
  81. data/lib/parse/live_query/event_queue.rb +272 -0
  82. data/lib/parse/live_query/health_monitor.rb +214 -0
  83. data/lib/parse/live_query/logging.rb +149 -0
  84. data/lib/parse/live_query/subscription.rb +294 -0
  85. data/lib/parse/live_query.rb +163 -0
  86. data/lib/parse/lookup_rewriter.rb +445 -0
  87. data/lib/parse/model/acl.rb +968 -0
  88. data/lib/parse/model/associations/belongs_to.rb +275 -0
  89. data/lib/parse/model/associations/collection_proxy.rb +435 -0
  90. data/lib/parse/model/associations/has_many.rb +597 -0
  91. data/lib/parse/model/associations/has_one.rb +158 -0
  92. data/lib/parse/model/associations/pointer_collection_proxy.rb +134 -0
  93. data/lib/parse/model/associations/relation_collection_proxy.rb +177 -0
  94. data/lib/parse/model/bytes.rb +62 -0
  95. data/lib/parse/model/classes/audience.rb +262 -0
  96. data/lib/parse/model/classes/installation.rb +363 -0
  97. data/lib/parse/model/classes/job_schedule.rb +153 -0
  98. data/lib/parse/model/classes/job_status.rb +264 -0
  99. data/lib/parse/model/classes/product.rb +75 -0
  100. data/lib/parse/model/classes/push_status.rb +263 -0
  101. data/lib/parse/model/classes/role.rb +751 -0
  102. data/lib/parse/model/classes/session.rb +201 -0
  103. data/lib/parse/model/classes/user.rb +943 -0
  104. data/lib/parse/model/clp.rb +544 -0
  105. data/lib/parse/model/core/actions.rb +1268 -0
  106. data/lib/parse/model/core/builder.rb +139 -0
  107. data/lib/parse/model/core/create_lock.rb +386 -0
  108. data/lib/parse/model/core/describe.rb +382 -0
  109. data/lib/parse/model/core/enhanced_change_tracking.rb +159 -0
  110. data/lib/parse/model/core/errors.rb +38 -0
  111. data/lib/parse/model/core/fetching.rb +566 -0
  112. data/lib/parse/model/core/field_guards.rb +220 -0
  113. data/lib/parse/model/core/indexing.rb +382 -0
  114. data/lib/parse/model/core/parse_reference.rb +407 -0
  115. data/lib/parse/model/core/properties.rb +809 -0
  116. data/lib/parse/model/core/querying.rb +491 -0
  117. data/lib/parse/model/core/schema.rb +202 -0
  118. data/lib/parse/model/core/search_indexing.rb +174 -0
  119. data/lib/parse/model/date.rb +88 -0
  120. data/lib/parse/model/email.rb +213 -0
  121. data/lib/parse/model/file.rb +527 -0
  122. data/lib/parse/model/geojson.rb +271 -0
  123. data/lib/parse/model/geopoint.rb +261 -0
  124. data/lib/parse/model/model.rb +260 -0
  125. data/lib/parse/model/object.rb +2068 -0
  126. data/lib/parse/model/phone.rb +520 -0
  127. data/lib/parse/model/pointer.rb +443 -0
  128. data/lib/parse/model/polygon.rb +406 -0
  129. data/lib/parse/model/push.rb +975 -0
  130. data/lib/parse/model/shortnames.rb +8 -0
  131. data/lib/parse/model/time_zone.rb +141 -0
  132. data/lib/parse/model/validations/uniqueness_validator.rb +97 -0
  133. data/lib/parse/model/validations.rb +96 -0
  134. data/lib/parse/mongodb.rb +2300 -0
  135. data/lib/parse/pipeline_security.rb +554 -0
  136. data/lib/parse/query/constraint.rb +198 -0
  137. data/lib/parse/query/constraints.rb +3279 -0
  138. data/lib/parse/query/cursor.rb +434 -0
  139. data/lib/parse/query/n_plus_one_detector.rb +445 -0
  140. data/lib/parse/query/operation.rb +104 -0
  141. data/lib/parse/query/ordering.rb +66 -0
  142. data/lib/parse/query.rb +7028 -0
  143. data/lib/parse/schema/index_migrator.rb +291 -0
  144. data/lib/parse/schema/search_index_migrator.rb +289 -0
  145. data/lib/parse/schema.rb +494 -0
  146. data/lib/parse/stack/generators/rails.rb +40 -0
  147. data/lib/parse/stack/generators/templates/model.erb +51 -0
  148. data/lib/parse/stack/generators/templates/model_installation.rb +4 -0
  149. data/lib/parse/stack/generators/templates/model_role.rb +4 -0
  150. data/lib/parse/stack/generators/templates/model_session.rb +4 -0
  151. data/lib/parse/stack/generators/templates/model_user.rb +11 -0
  152. data/lib/parse/stack/generators/templates/parse.rb +12 -0
  153. data/lib/parse/stack/generators/templates/webhooks.rb +10 -0
  154. data/lib/parse/stack/railtie.rb +18 -0
  155. data/lib/parse/stack/tasks.rb +563 -0
  156. data/lib/parse/stack/version.rb +11 -0
  157. data/lib/parse/stack.rb +455 -0
  158. data/lib/parse/two_factor_auth/user_extension.rb +449 -0
  159. data/lib/parse/two_factor_auth.rb +310 -0
  160. data/lib/parse/webhooks/payload.rb +360 -0
  161. data/lib/parse/webhooks/registration.rb +199 -0
  162. data/lib/parse/webhooks/replay_protection.rb +189 -0
  163. data/lib/parse/webhooks.rb +510 -0
  164. data/lib/parse-stack-next.rb +5 -0
  165. data/lib/parse-stack.rb +5 -0
  166. data/parse-stack-next.gemspec +82 -0
  167. data/parse-stack.png +0 -0
  168. data/scripts/debug-ips.js +35 -0
  169. data/scripts/docker/Dockerfile.parse +13 -0
  170. data/scripts/docker/atlas-init.js +284 -0
  171. data/scripts/docker/docker-compose.atlas.yml +76 -0
  172. data/scripts/docker/docker-compose.test.yml +106 -0
  173. data/scripts/docker/mongo-init.js +21 -0
  174. data/scripts/eval_mcp_with_lm_studio.rb +274 -0
  175. data/scripts/start-parse.sh +90 -0
  176. data/scripts/start_mcp_server.rb +78 -0
  177. data/scripts/test_server_connection.rb +82 -0
  178. metadata +377 -0
data/Gemfile ADDED
@@ -0,0 +1,30 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in parse-stack-next.gemspec
4
+ gemspec name: "parse-stack-next"
5
+
6
+ group :test, :development do
7
+ gem "dotenv"
8
+ gem "redis"
9
+ gem "rake"
10
+ gem "debug", ">= 1.0"
11
+ gem "minitest"
12
+ gem "minitest-mock"
13
+ gem 'minitest-reporters'
14
+ gem "pry"
15
+ gem "yard", ">= 0.9.11"
16
+ gem "redcarpet"
17
+ gem "rufo"
18
+ gem "mongo"
19
+ gem "webrick"
20
+ # MCP integration test infrastructure (v4.1.0+).
21
+ # puma: streaming Rack server, exercises SSE worker thread under realistic
22
+ # flush semantics that WEBrick can't reproduce.
23
+ # sinatra: minimal classic-Rack mount target for verifying the
24
+ # Parse::Agent.rack_app embedding pattern.
25
+ # rack-test: drives Sinatra/Rack envs without an HTTP socket.
26
+ gem "puma"
27
+ gem "sinatra"
28
+ gem "rack-test"
29
+ # gem "thin" # for yard server - disabled due to eventmachine compilation issues
30
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,175 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ parse-stack (4.4.3)
5
+ activemodel (>= 6.1, < 9)
6
+ activesupport (>= 6.1, < 9)
7
+ csv (~> 3.3)
8
+ faraday (~> 2.0)
9
+ faraday-net_http_persistent (~> 2.0)
10
+ moneta (< 2)
11
+ ostruct (~> 0.6)
12
+ parallel (>= 1.6, < 3)
13
+ rack (>= 2.0.6, < 4)
14
+
15
+ GEM
16
+ remote: https://rubygems.org/
17
+ specs:
18
+ activemodel (8.1.3)
19
+ activesupport (= 8.1.3)
20
+ activesupport (8.1.3)
21
+ base64
22
+ bigdecimal
23
+ concurrent-ruby (~> 1.0, >= 1.3.1)
24
+ connection_pool (>= 2.2.5)
25
+ drb
26
+ i18n (>= 1.6, < 2)
27
+ json
28
+ logger (>= 1.4.2)
29
+ minitest (>= 5.1)
30
+ securerandom (>= 0.3)
31
+ tzinfo (~> 2.0, >= 2.0.5)
32
+ uri (>= 0.13.1)
33
+ ansi (1.6.0)
34
+ base64 (0.3.0)
35
+ bigdecimal (4.1.2)
36
+ bson (5.2.0)
37
+ builder (3.3.0)
38
+ coderay (1.1.3)
39
+ concurrent-ruby (1.3.6)
40
+ connection_pool (3.0.2)
41
+ csv (3.3.5)
42
+ date (3.5.1)
43
+ debug (1.11.1)
44
+ irb (~> 1.10)
45
+ reline (>= 0.3.8)
46
+ dotenv (3.2.0)
47
+ drb (2.2.3)
48
+ erb (6.0.4)
49
+ faraday (2.14.2)
50
+ faraday-net_http (>= 2.0, < 3.5)
51
+ json
52
+ logger
53
+ faraday-net_http (3.4.2)
54
+ net-http (~> 0.5)
55
+ faraday-net_http_persistent (2.3.1)
56
+ faraday (~> 2.5)
57
+ net-http-persistent (>= 4.0.4, < 5)
58
+ i18n (1.14.8)
59
+ concurrent-ruby (~> 1.0)
60
+ io-console (0.8.2)
61
+ irb (1.18.0)
62
+ pp (>= 0.6.0)
63
+ prism (>= 1.3.0)
64
+ rdoc (>= 4.0.0)
65
+ reline (>= 0.4.2)
66
+ json (2.19.5)
67
+ logger (1.7.0)
68
+ method_source (1.1.0)
69
+ minitest (6.0.6)
70
+ drb (~> 2.0)
71
+ prism (~> 1.5)
72
+ minitest-mock (5.27.0)
73
+ minitest-reporters (1.8.0)
74
+ ansi
75
+ builder
76
+ minitest (>= 5.0, < 7)
77
+ ruby-progressbar
78
+ moneta (1.6.0)
79
+ mongo (2.24.0)
80
+ base64
81
+ bson (>= 4.14.1, < 6.0.0)
82
+ mustermann (3.1.1)
83
+ net-http (0.9.1)
84
+ uri (>= 0.11.1)
85
+ net-http-persistent (4.0.8)
86
+ connection_pool (>= 2.2.4, < 4)
87
+ nio4r (2.7.5)
88
+ ostruct (0.6.3)
89
+ parallel (2.1.0)
90
+ pp (0.6.3)
91
+ prettyprint
92
+ prettyprint (0.2.0)
93
+ prism (1.9.0)
94
+ pry (0.16.0)
95
+ coderay (~> 1.1)
96
+ method_source (~> 1.0)
97
+ reline (>= 0.6.0)
98
+ psych (5.3.1)
99
+ date
100
+ stringio
101
+ puma (8.0.1)
102
+ nio4r (~> 2.0)
103
+ rack (3.2.6)
104
+ rack-protection (4.2.1)
105
+ base64 (>= 0.1.0)
106
+ logger (>= 1.6.0)
107
+ rack (>= 3.0.0, < 4)
108
+ rack-session (2.1.2)
109
+ base64 (>= 0.1.0)
110
+ rack (>= 3.0.0)
111
+ rack-test (2.2.0)
112
+ rack (>= 1.3)
113
+ rake (13.4.2)
114
+ rdoc (7.2.0)
115
+ erb
116
+ psych (>= 4.0.0)
117
+ tsort
118
+ redcarpet (3.6.1)
119
+ redis (5.4.1)
120
+ redis-client (>= 0.22.0)
121
+ redis-client (0.29.0)
122
+ connection_pool
123
+ reline (0.6.3)
124
+ io-console (~> 0.5)
125
+ ruby-progressbar (1.13.0)
126
+ rufo (0.18.2)
127
+ securerandom (0.4.1)
128
+ sinatra (4.2.1)
129
+ logger (>= 1.6.0)
130
+ mustermann (~> 3.0)
131
+ rack (>= 3.0.0, < 4)
132
+ rack-protection (= 4.2.1)
133
+ rack-session (>= 2.0.0, < 3)
134
+ tilt (~> 2.0)
135
+ stringio (3.2.0)
136
+ tilt (2.7.0)
137
+ tsort (0.2.0)
138
+ tzinfo (2.0.6)
139
+ concurrent-ruby (~> 1.0)
140
+ uri (1.1.1)
141
+ webrick (1.9.2)
142
+ yard (0.9.43)
143
+
144
+ PLATFORMS
145
+ aarch64-linux-gnu
146
+ aarch64-linux-musl
147
+ arm-linux-gnu
148
+ arm-linux-musl
149
+ arm64-darwin
150
+ ruby
151
+ x86_64-darwin
152
+ x86_64-linux-gnu
153
+ x86_64-linux-musl
154
+
155
+ DEPENDENCIES
156
+ debug (>= 1.0)
157
+ dotenv
158
+ minitest
159
+ minitest-mock
160
+ minitest-reporters
161
+ mongo
162
+ parse-stack!
163
+ pry
164
+ puma
165
+ rack-test
166
+ rake
167
+ redcarpet
168
+ redis
169
+ rufo
170
+ sinatra
171
+ webrick
172
+ yard (>= 0.9.11)
173
+
174
+ BUNDLED WITH
175
+ 2.5.23
data/LICENSE.txt ADDED
@@ -0,0 +1,23 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014-2016 Anthony Persaud, Modernistik LLC
4
+ Copyright (c) 2024-2026 Adrian Curtin / Neurosynq
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining
7
+ a copy of this software and associated documentation files (the
8
+ "Software"), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Makefile ADDED
@@ -0,0 +1,63 @@
1
+ # Parse Stack Test Server Makefile
2
+
3
+ .PHONY: test-server test-server-start test-server-stop test-server-restart test-connection test-integration clean help
4
+
5
+ # Start the test server
6
+ test-server-start:
7
+ @echo "Starting Parse Server test containers..."
8
+ docker-compose -f scripts/docker/docker-compose.test.yml up -d
9
+ @echo "Waiting for services to start..."
10
+ @sleep 10
11
+ @echo "Parse Server available at: http://localhost:1337/parse"
12
+ @echo "Parse Dashboard available at: http://localhost:4040"
13
+
14
+ # Stop the test server
15
+ test-server-stop:
16
+ @echo "Stopping Parse Server test containers..."
17
+ docker-compose -f scripts/docker/docker-compose.test.yml down
18
+
19
+ # Restart the test server
20
+ test-server-restart: test-server-stop test-server-start
21
+
22
+ # Test connection to Parse Server
23
+ test-connection:
24
+ @echo "Testing Parse Server connection..."
25
+ ruby scripts/test_server_connection.rb
26
+
27
+ # Run integration tests with test server
28
+ test-integration:
29
+ @echo "Running integration tests..."
30
+ PARSE_TEST_USE_DOCKER=true bundle exec rake test
31
+
32
+ # Clean up containers and volumes
33
+ clean:
34
+ @echo "Cleaning up containers and volumes..."
35
+ docker-compose -f scripts/docker/docker-compose.test.yml down -v
36
+ docker system prune -f
37
+
38
+ # View Parse Server logs
39
+ logs:
40
+ docker logs parse-stack-test-server -f
41
+
42
+ # View all container logs
43
+ logs-all:
44
+ docker-compose -f scripts/docker/docker-compose.test.yml logs -f
45
+
46
+ # Show container status
47
+ status:
48
+ docker-compose -f scripts/docker/docker-compose.test.yml ps
49
+
50
+ # Help
51
+ help:
52
+ @echo "Parse Stack Test Server Commands:"
53
+ @echo ""
54
+ @echo " make test-server-start - Start Parse Server containers"
55
+ @echo " make test-server-stop - Stop Parse Server containers"
56
+ @echo " make test-server-restart - Restart Parse Server containers"
57
+ @echo " make test-connection - Test connection to Parse Server"
58
+ @echo " make test-integration - Run integration tests"
59
+ @echo " make logs - View Parse Server logs"
60
+ @echo " make logs-all - View all container logs"
61
+ @echo " make status - Show container status"
62
+ @echo " make clean - Clean up containers and volumes"
63
+ @echo " make help - Show this help message"