parse-stack-next 4.5.0 → 5.0.1
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/.bundle/config +2 -0
- data/.env.sample +17 -3
- data/.github/workflows/codeql.yml +44 -0
- data/.github/workflows/docs.yml +39 -0
- data/.github/workflows/release.yml +32 -0
- data/.github/workflows/ruby.yml +8 -6
- data/.gitignore +4 -0
- data/.vscode/settings.json +3 -0
- data/CHANGELOG.md +305 -72
- data/Gemfile.lock +10 -3
- data/LICENSE.txt +1 -1
- data/README.md +190 -219
- data/Rakefile +1 -1
- data/SECURITY.md +30 -0
- data/assets/parse-stack-next-avatar.png +0 -0
- data/assets/parse-stack-next-avatar.svg +37 -0
- data/assets/parse-stack-next-banner.png +0 -0
- data/assets/parse-stack-next-banner.svg +45 -0
- data/assets/parse-stack-next-social-preview.png +0 -0
- data/docs/atlas_vector_search_guide.md +511 -0
- data/docs/client_sdk_guide.md +1320 -0
- data/docs/mcp_guide.md +225 -104
- data/docs/mongodb_direct_guide.md +21 -4
- data/docs/usage_guide.md +585 -0
- data/examples/transaction_example.rb +28 -28
- data/lib/parse/acl_scope.rb +2 -2
- data/lib/parse/agent/mcp_rack_app.rb +184 -16
- data/lib/parse/agent/metadata_dsl.rb +16 -16
- data/lib/parse/agent/pipeline_validator.rb +28 -1
- data/lib/parse/agent/prompts.rb +5 -5
- data/lib/parse/agent/tools.rb +287 -14
- data/lib/parse/agent.rb +209 -12
- data/lib/parse/api/analytics.rb +27 -5
- data/lib/parse/api/files.rb +6 -2
- data/lib/parse/api/push.rb +21 -4
- data/lib/parse/api/server.rb +59 -0
- data/lib/parse/api/users.rb +26 -2
- data/lib/parse/atlas_search/index_manager.rb +84 -0
- data/lib/parse/atlas_search.rb +37 -9
- data/lib/parse/cache/pool.rb +88 -0
- data/lib/parse/cache/redis.rb +249 -0
- data/lib/parse/client/body_builder.rb +94 -0
- data/lib/parse/client/caching.rb +109 -9
- data/lib/parse/client/response.rb +27 -0
- data/lib/parse/client.rb +74 -3
- data/lib/parse/console.rb +203 -0
- data/lib/parse/embeddings/cohere.rb +484 -0
- data/lib/parse/embeddings/fixture.rb +130 -0
- data/lib/parse/embeddings/jina.rb +454 -0
- data/lib/parse/embeddings/local_http.rb +492 -0
- data/lib/parse/embeddings/openai.rb +520 -0
- data/lib/parse/embeddings/provider.rb +264 -0
- data/lib/parse/embeddings/qwen.rb +431 -0
- data/lib/parse/embeddings/voyage.rb +550 -0
- data/lib/parse/embeddings.rb +225 -0
- data/lib/parse/graphql/scalars.rb +53 -0
- data/lib/parse/graphql/type_generator.rb +264 -0
- data/lib/parse/graphql.rb +48 -0
- data/lib/parse/live_query/client.rb +24 -5
- data/lib/parse/live_query/subscription.rb +17 -6
- data/lib/parse/live_query.rb +9 -4
- data/lib/parse/model/associations/collection_proxy.rb +2 -2
- data/lib/parse/model/associations/has_many.rb +32 -1
- data/lib/parse/model/associations/has_one.rb +17 -0
- data/lib/parse/model/associations/pointer_collection_proxy.rb +3 -3
- data/lib/parse/model/classes/user.rb +307 -11
- data/lib/parse/model/clp.rb +1 -1
- data/lib/parse/model/core/create_lock.rb +14 -2
- data/lib/parse/model/core/embed_managed.rb +296 -0
- data/lib/parse/model/core/fetching.rb +4 -4
- data/lib/parse/model/core/indexing.rb +53 -14
- data/lib/parse/model/core/parse_reference.rb +3 -3
- data/lib/parse/model/core/properties.rb +70 -1
- data/lib/parse/model/core/querying.rb +57 -1
- data/lib/parse/model/core/vector_searchable.rb +285 -0
- data/lib/parse/model/file.rb +16 -4
- data/lib/parse/model/model.rb +26 -10
- data/lib/parse/model/object.rb +63 -6
- data/lib/parse/model/pointer.rb +16 -2
- data/lib/parse/model/shortnames.rb +2 -0
- data/lib/parse/model/validations/uniqueness_validator.rb +3 -3
- data/lib/parse/model/vector.rb +102 -0
- data/lib/parse/mongodb.rb +90 -8
- data/lib/parse/pipeline_security.rb +59 -2
- data/lib/parse/query/constraints.rb +16 -14
- data/lib/parse/query/ordering.rb +1 -1
- data/lib/parse/query.rb +137 -64
- data/lib/parse/stack/generators/templates/model.erb +2 -2
- data/lib/parse/stack/generators/templates/model_installation.rb +1 -1
- data/lib/parse/stack/generators/templates/model_role.rb +1 -1
- data/lib/parse/stack/generators/templates/model_session.rb +1 -1
- data/lib/parse/stack/generators/templates/parse.rb +1 -1
- data/lib/parse/stack/generators/templates/webhooks.rb +1 -1
- data/lib/parse/stack/version.rb +1 -1
- data/lib/parse/stack.rb +375 -73
- data/lib/parse/two_factor_auth/user_extension.rb +5 -2
- data/lib/parse/vector_search.rb +341 -0
- data/parse-stack-next.gemspec +10 -9
- data/scripts/docker/docker-compose.test.yml +18 -0
- data/scripts/start-parse.sh +6 -0
- data/scripts/vector_prototype/create_vector_index.js +105 -0
- data/scripts/vector_prototype/fetch_embeddings.py +241 -0
- data/scripts/vector_prototype/fixture_manifest.json +9 -0
- data/scripts/vector_prototype/query_prototype.rb +84 -0
- data/scripts/vector_prototype/run.sh +34 -0
- metadata +77 -5
- data/parse-stack.png +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fa424fed1ae3d44678d301ca6fca95d383deda63edfcc645f1bfaafd030a24f3
|
|
4
|
+
data.tar.gz: b96f56fea9dbbeb76650736bee52be70546c02180be8ead3ef0ef392c041884f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1c176aa65bd1694c281f2566e69a554ee2d80d090e69969ee5f26e093d11558bbbcbb6da052b9c56e3b9fe95e9c488657b570bb500bf0e5ed3b3cbd72e9f3da8
|
|
7
|
+
data.tar.gz: 9895c24fdb645b06a1cb799da8ded92dc2a1cb5647d34ea5b0f0fd5bef849ff6768ec16098cb70c7b33a5a53f1773ea5487055f8ad1766ffecfe83a9964548d3
|
data/.bundle/config
CHANGED
data/.env.sample
CHANGED
|
@@ -34,11 +34,9 @@ PARSE_MASTER_KEY=myMasterKey
|
|
|
34
34
|
# PARSE_TIMEOUT=30
|
|
35
35
|
# PARSE_REQUIRE_HTTPS=true
|
|
36
36
|
|
|
37
|
-
# Optional service URLs (only if you split webhooks/
|
|
37
|
+
# Optional service URLs (only if you split webhooks/hooks endpoints):
|
|
38
38
|
# PARSE_LIVE_QUERY_URL=
|
|
39
|
-
# CONFIG_URL=
|
|
40
39
|
# HOOKS_URL=
|
|
41
|
-
# HYPERDRIVE_URL=
|
|
42
40
|
|
|
43
41
|
# ===========================================================================
|
|
44
42
|
# Webhooks
|
|
@@ -110,3 +108,19 @@ PARSE_MASTER_KEY=myMasterKey
|
|
|
110
108
|
# LLM_ENDPOINT=http://localhost:1234/v1
|
|
111
109
|
# OPENAI_API_KEY=
|
|
112
110
|
# ANTHROPIC_API_KEY=
|
|
111
|
+
|
|
112
|
+
# ===========================================================================
|
|
113
|
+
# Embedding providers (Parse::Embeddings)
|
|
114
|
+
#
|
|
115
|
+
# Used by `Parse::Embeddings.register(...)` in initializers / tests for the
|
|
116
|
+
# text-only providers shipped in v5.0: OpenAI, Cohere, Voyage, Jina, Qwen.
|
|
117
|
+
# LocalHTTP providers (Ollama, LM Studio, vLLM, self-hosted voyage-4-nano /
|
|
118
|
+
# Qwen3-Embedding) read no env var by default — their api_key (if any) is
|
|
119
|
+
# passed at registration time.
|
|
120
|
+
# ===========================================================================
|
|
121
|
+
|
|
122
|
+
# OPENAI_API_KEY=sk-...
|
|
123
|
+
# COHERE_API_KEY=
|
|
124
|
+
# VOYAGE_API_KEY=pa-...
|
|
125
|
+
# JINA_API_KEY=jina_...
|
|
126
|
+
# DASHSCOPE_API_KEY=sk-... # Alibaba Cloud DashScope (Qwen 3 embeddings)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: "CodeQL Advanced"
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ "main" ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ "main" ]
|
|
8
|
+
schedule:
|
|
9
|
+
- cron: '32 23 * * 1'
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
analyze:
|
|
13
|
+
name: Analyze (${{ matrix.language }})
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
permissions:
|
|
16
|
+
security-events: write
|
|
17
|
+
packages: read
|
|
18
|
+
actions: read
|
|
19
|
+
contents: read
|
|
20
|
+
|
|
21
|
+
strategy:
|
|
22
|
+
fail-fast: false
|
|
23
|
+
matrix:
|
|
24
|
+
include:
|
|
25
|
+
- language: actions
|
|
26
|
+
build-mode: none
|
|
27
|
+
- language: ruby
|
|
28
|
+
build-mode: none
|
|
29
|
+
|
|
30
|
+
steps:
|
|
31
|
+
- name: Checkout repository
|
|
32
|
+
uses: actions/checkout@v4
|
|
33
|
+
|
|
34
|
+
- name: Initialize CodeQL
|
|
35
|
+
uses: github/codeql-action/init@v4
|
|
36
|
+
with:
|
|
37
|
+
languages: ${{ matrix.language }}
|
|
38
|
+
build-mode: ${{ matrix.build-mode }}
|
|
39
|
+
queries: security-extended,security-and-quality
|
|
40
|
+
|
|
41
|
+
- name: Perform CodeQL Analysis
|
|
42
|
+
uses: github/codeql-action/analyze@v4
|
|
43
|
+
with:
|
|
44
|
+
category: "/language:${{matrix.language}}"
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Publish YARD Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
pages: write
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: pages
|
|
15
|
+
cancel-in-progress: false
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
- uses: ruby/setup-ruby@afeafc3d1ab54a631816aba4c914a0081c12ff2f # v1.310.0
|
|
23
|
+
with:
|
|
24
|
+
ruby-version: '3.4'
|
|
25
|
+
bundler-cache: true
|
|
26
|
+
- name: Build YARD docs
|
|
27
|
+
run: bundle exec rake yard
|
|
28
|
+
- uses: actions/upload-pages-artifact@v3
|
|
29
|
+
with:
|
|
30
|
+
path: doc/parse-stack-next
|
|
31
|
+
deploy:
|
|
32
|
+
needs: build
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
environment:
|
|
35
|
+
name: github-pages
|
|
36
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
37
|
+
steps:
|
|
38
|
+
- id: deployment
|
|
39
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Release Gem
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
push:
|
|
10
|
+
name: Push to RubyGems
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
environment: rubygems
|
|
13
|
+
permissions:
|
|
14
|
+
id-token: write
|
|
15
|
+
contents: read
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
# bundler-cache (next step) writes --local path / --local
|
|
20
|
+
# deployment into the tracked `.bundle/config`, which would leave
|
|
21
|
+
# the working tree dirty and trip `rake release`'s
|
|
22
|
+
# `release:guard_clean` check. Tell git to ignore worktree
|
|
23
|
+
# mutations to this file so guard_clean passes while still
|
|
24
|
+
# letting Bundler resolve vendor/bundle in the next step.
|
|
25
|
+
- run: git update-index --skip-worktree .bundle/config
|
|
26
|
+
|
|
27
|
+
- uses: ruby/setup-ruby@v1
|
|
28
|
+
with:
|
|
29
|
+
ruby-version: "3.4"
|
|
30
|
+
bundler-cache: true
|
|
31
|
+
|
|
32
|
+
- uses: rubygems/release-gem@v1
|
data/.github/workflows/ruby.yml
CHANGED
|
@@ -9,9 +9,12 @@ name: Gem Tests
|
|
|
9
9
|
|
|
10
10
|
on:
|
|
11
11
|
push:
|
|
12
|
-
branches: [
|
|
12
|
+
branches: [main]
|
|
13
13
|
pull_request:
|
|
14
|
-
branches: [
|
|
14
|
+
branches: [main]
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
15
18
|
|
|
16
19
|
jobs:
|
|
17
20
|
test:
|
|
@@ -26,11 +29,10 @@ jobs:
|
|
|
26
29
|
- name: Set up Ruby
|
|
27
30
|
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
|
28
31
|
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
|
29
|
-
uses: ruby/setup-ruby@v1
|
|
30
|
-
# uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
|
|
32
|
+
uses: ruby/setup-ruby@afeafc3d1ab54a631816aba4c914a0081c12ff2f # v1.310.0
|
|
31
33
|
with:
|
|
32
34
|
ruby-version: ${{ matrix.ruby }}
|
|
33
35
|
- name: Install dependencies
|
|
34
36
|
run: bundle install
|
|
35
|
-
- name: Run tests
|
|
36
|
-
run: bundle exec rake
|
|
37
|
+
- name: Run unit tests
|
|
38
|
+
run: bundle exec rake test:unit
|
data/.gitignore
CHANGED