Spaces:
Sleeping
Sleeping
Commit
·
4915594
1
Parent(s):
490f00f
final project submission
Browse files- README.md +103 -1
- data/finetuning/eval_dataset.jsonl +1 -0
- data/finetuning/test_dataset.jsonl +1 -0
- data/finetuning/training_dataset.jsonl +1 -0
- fine_tune_embeddings.py +216 -0
- pyproject.toml +8 -0
- test_dataset.jsonl +1 -0
- training_dataset.jsonl +0 -0
- uv.lock +243 -9
- val_dataset.jsonl +1 -0
README.md
CHANGED
@@ -8,4 +8,106 @@ pinned: false
|
|
8 |
license: mit
|
9 |
---
|
10 |
|
11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
license: mit
|
9 |
---
|
10 |
|
11 |
+
## AIE 5 Mid Term
|
12 |
+
|
13 |
+
### Defining your Problem and Audience
|
14 |
+
|
15 |
+
1. Write a succinct 1-sentence description of the problem
|
16 |
+
|
17 |
+
> Shopify Flow is a powerful and complex automation tool that can save Shopify merchants a significant mount time and money by handling repetitive tasks. However, the complexity of the tool can be overwhelming for non-technical merchants, often resulting in needing to hire expensive domain experts to automate and manage their business.
|
18 |
+
|
19 |
+
2. Write 1-2 paragraphs on why this is a problem for your specific user
|
20 |
+
> Smaller Shopify merchants are often non-technical and may not have the resources to hire domain experts to automate their business processes. This can result in a significant loss of time and money, as they are unable to take full advantage of the automation capabilities of Shopify Flow. By generating Shopify Flow automations from natural language, we can help Shopify merchants save time and money, and focus on growing their business.
|
21 |
+
|
22 |
+
### Propose a Solution
|
23 |
+
|
24 |
+
1. Write 1-2 paragraphs on your proposed solution. How will it look and feel to the user?
|
25 |
+
|
26 |
+
> Shopify Flow automations can be imported and exported in a standardized JSON format that represent a directed acyclic graph (DAG) of triggers, conditions and actions. By fine-tuning a base model to output JSON objects that satisfy Shopify Flow's project format, we can generate these Shopify Flow JSON objects from natural language, eliminating the need to hire expensive domain experts to automate and manage their business.
|
27 |
+
>
|
28 |
+
> Shopify merchants will describe the automation they need to create in natural language. The model will ask additional questions to gather requirements and important considerations. With this information our model will generate the necessary Shopify Flow JSON object to satisfy the merchants automation request. The merchant can import this JSON file into Shopify Flow and simply activate the automation. The can perform this first in a development environment to test the automation before deploying it to their production environment.
|
29 |
+
|
30 |
+
2. Describe the tools you plan to use in each part of your stack. Write one sentence on why you made each tooling choice.
|
31 |
+
|
32 |
+
1. LLM
|
33 |
+
> We will use a fine-tuned Language Model (LLM) to generate Shopify Flow JSON objects from natural language. We will need to fine-tune a powerful reasoning model (likely Deekseek R1) to understand the complex requirements and translate them into a logical flow diagram.
|
34 |
+
2. Embedding Model
|
35 |
+
> We will use a fine-tuned embedding model to find the most relevant Shopify Flow JSON objects to the help generated final JSON object.
|
36 |
+
3. Orchestration
|
37 |
+
> We will use LangGraph to orchestrate the LLM and Embedding Model to generate the final Shopify Flow JSON object.
|
38 |
+
4. Vector Database
|
39 |
+
> We will use Qdrant to store the Shopify Flow JSON objects and embeddings for quick retrieval and comparison.
|
40 |
+
5. Monitoring
|
41 |
+
> I haven't thought about this yet as it has not been covered in class AFAIK. I will need to do some research and learn more about monitoring.
|
42 |
+
6. Evaluation
|
43 |
+
> We will use RAGAS to evaluate the quality of the generated Shopify Flow JSON objects.
|
44 |
+
7. User Interface
|
45 |
+
> We will use Chainlit to implement a simple chat bot interface for the merchant to describe the automation they need to create, and answer questions form the agent. It will produce a file to download that contains the generated Shopify Flow JSON object.
|
46 |
+
8. (Optional) Serving & Inference
|
47 |
+
> I'm not sure yet as I don't know much about hosting my own fine-tuned models for inference. Need to learn more and do some research.
|
48 |
+
|
49 |
+
3. Where will you use an agent or agents? What will you use “agentic reasoning” for in your app?
|
50 |
+
|
51 |
+
> Because we are generating Shopify Flow JSON objects from natural language, we will use an agent to interact with the merchant to gather requirements and important considerations. The agent will use agentic reasoning to ask clarifying questions and ensure the generated Shopify Flow JSON object satisfies the merchant's automation request. We will need to fine-tune a powerful reasoning model (likely Deekseek R1) to understand the complex requirements and translate them into a logical flow diagram.
|
52 |
+
|
53 |
+
### Dealing with the Data
|
54 |
+
|
55 |
+
1. Describe all of your data sources and external APIs, and describe what you’ll use them for.
|
56 |
+
|
57 |
+
> I don't believe I will need external APIs because I don't need real-time data. All of my data will come from documents. I will need a library of annotated Shopify Flow JSON objects to fine-tune the LLM and Embedding Model. I will need to use these examples and SDG to synthetically generate additional examples to fine-tune and evaluate the models.
|
58 |
+
|
59 |
+
2. Describe the default chunking strategy that you will use. Why did you make this decision?
|
60 |
+
|
61 |
+
> I will start with a default chunking strategy of ~1000 tokens with 500 token overlap. I will tweak these numbers as I test for different scenarios, but it felt like a good place to start.
|
62 |
+
|
63 |
+
3. [Optional] Will you need specific data for any other part of your application? If so, explain.
|
64 |
+
> Yes I will need to use lots of examples of Shopify Flow JSON objects to fine-tune the LLM and Embedding Model. I will also need to use these examples and SDG to synthetically generate additional examples to fine-tune and evaluate the models.
|
65 |
+
|
66 |
+
### Building a Quick End-to-End Prototype
|
67 |
+
|
68 |
+
1. Build an end-to-end prototype and deploy it to a Hugging Face Space (or other endpoint)
|
69 |
+
> The initial prototype just answers general questions about Shopify Flow and is trained on the publicly available documentation at [https://shopify.dev/docs/flow](https://shopify.dev/docs/flow). It is available here: [https://huggingface.co/spaces/thomfoolery/AIE5-MidTerm](https://huggingface.co/spaces/thomfoolery/AIE5-MidTerm). It is meant to satisfy the requirements of the midterm and is not very useful in its current state.
|
70 |
+
>
|
71 |
+
> I plan to work on the getting it to generate Shopify Flow JSON objects from natural language next.
|
72 |
+
|
73 |
+
### Creating a Golden Test Data Set
|
74 |
+
|
75 |
+
1. Assess your pipeline using the RAGAS framework including key metrics faithfulness, response relevance, context precision, and context recall. Provide a table of your output results.
|
76 |
+
|
77 |
+
> | Metric | Value |
|
78 |
+
> | -------------------------- | ------------ |
|
79 |
+
> | Context Recall | 0.8069444444 |
|
80 |
+
> | Faithfulness | 0.9318181818 |
|
81 |
+
> | Factual Correctness | 0.373 |
|
82 |
+
> | Answer Relevancy | 0.9581163434 |
|
83 |
+
> | Context Entity Recall | 0.3598076345 |
|
84 |
+
> | Noise Sensitivity Relevant | 0.3017243635 |
|
85 |
+
|
86 |
+
2. What conclusions can you draw about the performance and effectiveness of your pipeline with this information?
|
87 |
+
|
88 |
+
> I found that my RAG application performs well except for the metrics of Factual Correctness and Context Entity Recall. I'm not sure if 0.3 is bad for Noise Sensitivity Relevant but it seems OK to me. Poor factual correctness is concerning, I wonder if fine-tuned embeddings will improve this metric. I will need to investigate further. I also wonder if a smaller chunk size and overlap could help with context entity recall.
|
89 |
+
|
90 |
+
### Fine-Tuning Open-Source Embeddings
|
91 |
+
|
92 |
+
1. Swap out your existing embedding model for the new fine-tuned version. Provide a link to your fine-tuned embedding model on the Hugging Face Hub.
|
93 |
+
|
94 |
+
> My fine-tuned embedding model is available here: [https://huggingface.co/thomfoolery/AIE5-MidTerm-finetuned-embeddings](https://huggingface.co/thomfoolery/AIE5-MidTerm-finetuned-embeddings)
|
95 |
+
|
96 |
+
### Assessing Performance
|
97 |
+
|
98 |
+
1. How does the performance compare to your original RAG application? Test the fine-tuned embedding model using the RAGAS frameworks to quantify any improvements.
|
99 |
+
|
100 |
+
> Provide results in a table.
|
101 |
+
>
|
102 |
+
> | Metric | Original Value | Fine-Tuned Value |
|
103 |
+
> | -------------------------- | -------------- | ---------------- |
|
104 |
+
> | Context Recall | 0.8069444444 | 0.7104166667 |
|
105 |
+
> | Faithfulness | 0.9318181818 | 0.8851135006 |
|
106 |
+
> | Factual Correctness | 0.373 | 0.4325 |
|
107 |
+
> | Answer Relevancy | 0.9581163434 | 0.9614896608 |
|
108 |
+
> | Context Entity Recall | 0.3598076345 | 0.3135290494 |
|
109 |
+
> | Noise Sensitivity Relevant | 0.3017243635 | 0.2666666667 |
|
110 |
+
|
111 |
+
2. Articulate the changes that you expect to make to your app in the second half of the course. How will you improve your application?
|
112 |
+
|
113 |
+
> Context Entity Recall, Context Recall and Faithfulness dropped significantly. Factual Correctness, Answer Relevancy and Noise Sensitivity improved slightly. Overall I think this is a good start but I need to try a few variation to see if I can improve the metrics across the board. I assume chunk size and overlap is having a negative impact, so I will try a few different values to see if I can improve the metrics.
|
data/finetuning/eval_dataset.jsonl
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"questions": {"96de1324-e2da-4911-af78-f99f19926363": "What command is used to import extensions in Shopify CLI with a specific client ID?", "3ffc15fe-0ffe-49ae-9ab0-f2faf5a32a07": "What is the recommended approach before deploying extensions to a production app?", "b6a4eb37-6d38-4f79-8968-0ae6ce67bebf": "What command should you run to start deploying your extensions using Shopify CLI?", "07b3080c-da9c-4085-b1cf-6c3a0120111b": "What is recommended before deploying changes to a production app?", "af9abd11-43ee-4377-a88b-ddc786ec34a5": "What steps must be taken before an app can receive communication from Flow actions?", "74f11ea4-5ba2-4d2e-a198-8c704cc3e87b": "What information should be reviewed for each API endpoint to ensure proper functionality?", "a34abb76-fa30-4ce3-901f-a85150b7fe9d": "What is the purpose of the endpoint where the automation tool sends an action's payload?", "fc1f58b1-446d-4b97-ab36-0405f2dc577d": "What are the general endpoint requirements for Shopify Flow action endpoints?", "a9f6f6fa-eed6-4944-a07a-a626218b6f47": "What are the security mechanisms required for Shopify Flow action endpoints?", "0e3d82a8-469f-40ec-8dcf-0e84e8bf6929": "What type of content format is specified for the API in the general endpoint requirements?", "72df95f6-2d2e-45c1-bc67-50f664cde708": "What is the purpose of defining a return type schema in Flow workflows?", "8fa7c3d1-7955-4c60-b4c4-9b25b53da76c": "How can you link a schema file to your extension's TOML definition?", "81e7b2d0-0a6b-4896-a1f7-9928aeb97b1c": "What types does Flow support when defining complex types in actions and triggers?", "a0b861b6-28c9-415d-8d9f-d2e7eed9adfd": "How does Flow derive the description of the return value for a field in the schema?", "bedb7ee1-088e-426e-b7a6-733a64916a6b": "What is the purpose of the description placed in double quotes above the field in Flow?", "8955671c-9938-4a7d-9062-7e86e6ab4bba": "How many types can be defined as the return type for an action in the schema?", "8bbbbaf5-fe6f-48a2-a683-11927fad0db1": "What information is represented by the `Bid` type in the auction context?", "b12cb077-e9a5-41e8-a144-8c05617efb36": "What are the possible statuses defined in the `Status` enum for an auction?", "df27261e-dd6b-4b89-b5ab-0c40eb86ae68": "What is the purpose of the `shopify.extensions.toml` file in the folder structure?", "b116e4d1-fb2d-4162-a95e-d5dfa1147d02": "How can a schema file be referenced in an action extension's TOML?", "b362dafa-39be-46d2-853d-c1dc9f7e0ca1": "How can a schema file be referenced in an action extension's TOML?", "f17e6fac-367e-4525-a8f4-41d00a2ed7b1": "What property values need to be set to reference the return type schema in a trigger extension's TOML?", "aa301e55-07ae-46a2-9e5a-653a50a32272": "How can a schema file be referenced in a trigger extension's TOML?", "c5a1f747-bba0-4df0-91c0-02c109f036f5": "What must the return_value object in a JSON response match in order to respond to an action request from Flow?"}, "relevant_contexts": {"96de1324-e2da-4911-af78-f99f19926363": ["49b4ebb3-42ee-4f69-8753-43a41b8a0001"], "3ffc15fe-0ffe-49ae-9ab0-f2faf5a32a07": ["49b4ebb3-42ee-4f69-8753-43a41b8a0001"], "b6a4eb37-6d38-4f79-8968-0ae6ce67bebf": ["4982c070-b26d-4b17-819c-6b4284494bed"], "07b3080c-da9c-4085-b1cf-6c3a0120111b": ["4982c070-b26d-4b17-819c-6b4284494bed"], "af9abd11-43ee-4377-a88b-ddc786ec34a5": ["4b3b00ad-1183-493c-a079-a2a982aafd99"], "74f11ea4-5ba2-4d2e-a198-8c704cc3e87b": ["4b3b00ad-1183-493c-a079-a2a982aafd99"], "a34abb76-fa30-4ce3-901f-a85150b7fe9d": ["d2ddd758-06df-40dd-8aa9-0b41c39878be"], "fc1f58b1-446d-4b97-ab36-0405f2dc577d": ["d2ddd758-06df-40dd-8aa9-0b41c39878be"], "a9f6f6fa-eed6-4944-a07a-a626218b6f47": ["2eb8cf54-3a9e-43c8-81fa-e0a13982aca4"], "0e3d82a8-469f-40ec-8dcf-0e84e8bf6929": ["2eb8cf54-3a9e-43c8-81fa-e0a13982aca4"], "72df95f6-2d2e-45c1-bc67-50f664cde708": ["cb5665b1-132a-41be-995a-3c4878683298"], "8fa7c3d1-7955-4c60-b4c4-9b25b53da76c": ["cb5665b1-132a-41be-995a-3c4878683298"], "81e7b2d0-0a6b-4896-a1f7-9928aeb97b1c": ["b2c319dc-dac9-4c74-84ed-1a1aad091e38"], "a0b861b6-28c9-415d-8d9f-d2e7eed9adfd": ["b2c319dc-dac9-4c74-84ed-1a1aad091e38"], "bedb7ee1-088e-426e-b7a6-733a64916a6b": ["70cd9cd1-0b7d-4417-be91-8b5cbb908aa1"], "8955671c-9938-4a7d-9062-7e86e6ab4bba": ["70cd9cd1-0b7d-4417-be91-8b5cbb908aa1"], "8bbbbaf5-fe6f-48a2-a683-11927fad0db1": ["725cfef2-0ab7-4ddc-ae3b-3832128a97d4"], "b12cb077-e9a5-41e8-a144-8c05617efb36": ["725cfef2-0ab7-4ddc-ae3b-3832128a97d4"], "df27261e-dd6b-4b89-b5ab-0c40eb86ae68": ["be9a3d74-609d-4302-8e9d-e7c226fbc393"], "b116e4d1-fb2d-4162-a95e-d5dfa1147d02": ["be9a3d74-609d-4302-8e9d-e7c226fbc393"], "b362dafa-39be-46d2-853d-c1dc9f7e0ca1": ["00cbfb99-f3a6-46f4-8fa2-37db2db64394"], "f17e6fac-367e-4525-a8f4-41d00a2ed7b1": ["00cbfb99-f3a6-46f4-8fa2-37db2db64394"], "aa301e55-07ae-46a2-9e5a-653a50a32272": ["31b52bf6-5aff-4809-8ea6-fd452b5cb201"], "c5a1f747-bba0-4df0-91c0-02c109f036f5": ["31b52bf6-5aff-4809-8ea6-fd452b5cb201"]}, "corpus": {"49b4ebb3-42ee-4f69-8753-43a41b8a0001": "text\n/my-flow-extension\n shopify.extension.toml\n\nTo learn more about the extensions file structure, refer to App structure and the documentation for your extension type.\n\nAvailable Flags\n\nclient_id\n\nAn application\u2019s client_id. The ID enables you to target a specific application when running the import command.\n\n```bash\n\n!/bin/bash\n\nshopify app import-extensions --client_id abc123\n```\n\nStep 2: Migrate your extension\n\nAfter you've imported the extension, you can migrate your extension by using Shopify CLI's deploy command.\n\nNote:\nDeploying extensions using the app deploy command also publishes the extensions. We recommend testing changes by using app dev or deploying to a test app before deploying them to a production app.\n\nUse Shopify CLI to deploy your extensions:\n\nNavigate to your app directory.\n\nRun the following command to start deploying your extension(s):\n\n```bash\n\n!/bin/bash\n\nshopify app deploy\n```\n\nFollow the prompts.", "4982c070-b26d-4b17-819c-6b4284494bed": "Note:\nDeploying extensions using the app deploy command also publishes the extensions. We recommend testing changes by using app dev or deploying to a test app before deploying them to a production app.\n\nUse Shopify CLI to deploy your extensions:\n\nNavigate to your app directory.\n\nRun the following command to start deploying your extension(s):\n\n```bash\n\n!/bin/bash\n\nshopify app deploy\n```\n\nFollow the prompts.\n\nWhen you receive confirmation that the deploy was successful, your extensions have been released.", "4b3b00ad-1183-493c-a079-a2a982aafd99": "Before your app can receive communication from Flow actions, you need to create one or more standardized API endpoints on your web server. Review the information for each endpoint to understand its requirements, the format of the payload, and the expected response. You'll also learn how to avoid processing duplicate requests, identify an action by its ID, and verify requests for security purposes.", "d2ddd758-06df-40dd-8aa9-0b41c39878be": "Endpoint Purpose Flow action execution The endpoint where the automation tool sends your action's payload. The payload contains data that you can use to execute the action in your app. Custom configuration page preview An endpoint that provides data about your custom configuration page to display in the automation tool. This endpoint is required if you want to use a custom configuration page. Custom validation An endpoint that validates the contents of merchant-configurable properties in an action payload when an action is saved. This endpoint is required if you want to use a custom configuration page.\n\nGeneral endpoint requirements\n\nThe requirements for Shopify Flow action endpoints are as follows:\n\nRule / concern Type / requirement API format REST Content type JSON Security mechanism HMAC / Signed requests Protocol HTTPS (app domain requires valid SSL certificate)\n\nFlow action execution", "2eb8cf54-3a9e-43c8-81fa-e0a13982aca4": "General endpoint requirements\n\nThe requirements for Shopify Flow action endpoints are as follows:\n\nRule / concern Type / requirement API format REST Content type JSON Security mechanism HMAC / Signed requests Protocol HTTPS (app domain requires valid SSL certificate)\n\nFlow action execution\n\nWhen a workflow that contains your action is executed, Flow sends an HTTP request to your Flow action execution endpoint (runtime URL). The request contains a payload that matches the payload schema that you configured for your action.\n\nRequest", "cb5665b1-132a-41be-995a-3c4878683298": "Triggers and actions can both provide data to Flow workflows. This data can be simple, such as a string or a number, or complex, such as an object or a list of objects. This guide explains how to define complex data types in your extension's TOML and how to send and receive complex data types at runtime.\n\nDefining a return type schema\n\nTo return data from an action or complex objects from a trigger, you must provide a schema for the return type using GraphQL's type system (SDL). This schema is used by Flow to provide the return object in the workflow editor. The schema can be defined in any file and linked to from your extension's TOML definition. For example, a file called schema.graphql which contains the SDL for the types used in your action or trigger, can be made in the same directory as the extension.\n\nSDL file\n\nWhen you're using complex types in Flow actions and triggers, consider the following:", "b2c319dc-dac9-4c74-84ed-1a1aad091e38": "SDL file\n\nWhen you're using complex types in Flow actions and triggers, consider the following:\n\nFlow supports defining types using basic types (String, Int, Float, Boolean, and ID) as well as enums, objects, lists, and the non-nullable flag !.\n\nFlow doesn't currently support the entire SDL spec when defining action return types. Unions, interfaces, custom scalars, and directives are currently not supported. The action HTTP payload doesn't utilize any arguments defined on types in this schema.\n\nFlow derives the description of the return value from the comment on the type, which is placed in double quotes above the field. This description displays to merchants in the Flow editor when selecting the field.\n\nThe same schema file can be referenced by multiple extensions as long as the relative paths are defined correctly.", "70cd9cd1-0b7d-4417-be91-8b5cbb908aa1": "Flow derives the description of the return value from the comment on the type, which is placed in double quotes above the field. This description displays to merchants in the Flow editor when selecting the field.\n\nThe same schema file can be referenced by multiple extensions as long as the relative paths are defined correctly.\n\nThe following SDL defines two types: a Bid and an Auction which contains a list of bids. The schema can contain multiple types that reference each other but only one type can be defined as the return type for the action. In the following example we're referencing the Bid type in the Auction type.\n\n```graphql\n\"Represents a bid placed on an auction\"\ntype Bid {\n \"ID of the bid\"\n id: ID!\n \"Customer that placed the bid\"\n customerId: ID!\n \"Amount of the bid\"\n amount: Float!\n}\n\nenum Status {\n COMPLETE\n IN_PROGRESS\n CANCELLED\n}", "725cfef2-0ab7-4ddc-ae3b-3832128a97d4": "```graphql\n\"Represents a bid placed on an auction\"\ntype Bid {\n \"ID of the bid\"\n id: ID!\n \"Customer that placed the bid\"\n customerId: ID!\n \"Amount of the bid\"\n amount: Float!\n}\n\nenum Status {\n COMPLETE\n IN_PROGRESS\n CANCELLED\n}\n\n\"Represents an auction\"\ntype Auction {\n \"ID of the auction\"\n id: ID!\n \"Name of the auction\"\n name: String\n \"Status of the auction\"\n status: Status!\n \"List of bids placed on the auction\"\n bids: [Bid!]!\n}\n```\n\nFor more information on SDL, refer to the GraphQL documentation.\n\nFolder structure\n\n/my-extension-name\n shopify.extensions.toml\n schema.graphql\n\nshopify.extension.toml file\n\nbash\n[[extensions]]\nname = \"Place auction bid\"\ntype = \"flow_action\"\nhandle = \"auction-bid\"\ndescription = \"My description\"\nruntime_url = \"https://{url}.com/api/execute\"\nschema = \"./schema.graphql\"\nreturn_type_ref = \"Auction\"\n\nReferencing the return type schema in an action extension's TOML", "be9a3d74-609d-4302-8e9d-e7c226fbc393": "For more information on SDL, refer to the GraphQL documentation.\n\nFolder structure\n\n/my-extension-name\n shopify.extensions.toml\n schema.graphql\n\nshopify.extension.toml file\n\nbash\n[[extensions]]\nname = \"Place auction bid\"\ntype = \"flow_action\"\nhandle = \"auction-bid\"\ndescription = \"My description\"\nruntime_url = \"https://{url}.com/api/execute\"\nschema = \"./schema.graphql\"\nreturn_type_ref = \"Auction\"\n\nReferencing the return type schema in an action extension's TOML\n\nAfter a schema file has been defined, it can be referenced in the action extension's TOML by setting extensions.schema to the relative path of the schema file, and extension.return_type_ref to a type defined in the referenced schema file. The schema defined above can be referenced by setting the following fields:\n\nProperty Name Property value extensions.schema ./schema.graphql extensions.return_type_ref Auction\n\nReferencing the return type schema in a trigger extension's TOML", "00cbfb99-f3a6-46f4-8fa2-37db2db64394": "After a schema file has been defined, it can be referenced in the action extension's TOML by setting extensions.schema to the relative path of the schema file, and extension.return_type_ref to a type defined in the referenced schema file. The schema defined above can be referenced by setting the following fields:\n\nProperty Name Property value extensions.schema ./schema.graphql extensions.return_type_ref Auction\n\nReferencing the return type schema in a trigger extension's TOML\n\nAfter a schema file has been defined, it can be referenced in the trigger extension's TOML by setting extensions.schema to the relative path of the schema file, and setting the type of a field to schema.<type>. The schema defined above can be referenced by setting the following fields:\n\nProperty Name Property value extensions.schema ./schema.graphql extensions.settings.fields[0].type schema.Auction\n\nReturning data from an action at runtime", "31b52bf6-5aff-4809-8ea6-fd452b5cb201": "After a schema file has been defined, it can be referenced in the trigger extension's TOML by setting extensions.schema to the relative path of the schema file, and setting the type of a field to schema.<type>. The schema defined above can be referenced by setting the following fields:\n\nProperty Name Property value extensions.schema ./schema.graphql extensions.settings.fields[0].type schema.Auction\n\nReturning data from an action at runtime\n\nWhen responding to an action request from Flow you can add the return type in the JSON response as a field called return_value. The return_value object must match the return type defined in the extension. The return type used in our example must be an auction object, like the following:"}}
|
data/finetuning/test_dataset.jsonl
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"questions": {"86964144-7a7a-47b8-98bb-6ae5512e9823": "What is the purpose of the return_value field in the JSON response when responding to an action request from Flow?", "40748fb9-987f-4cee-8793-dc38d320a35c": "What type of object must the return_value match according to the extension defined in the context?", "38323f7b-fbc6-4636-b29c-e761b6e962d3": "What is the status of the auction with ID \"auction1\"?", "9db6ac1e-3ff3-44b0-9f35-b675f7bbe217": "How many bids are associated with the auction named \"My first auction\"?", "f1691779-f421-4806-bba1-c52d6feebf8a": "What happens if a workflow uses a non-nullable field that is missing from the payload?", "ec553091-3b8c-472b-a4bc-142067adbc0f": "What is the maximum response size allowed for an action before it results in a transient failure?", "c1c9f4c0-6720-4f3c-bb52-44012b0b11b7": "What is the purpose of configuring a lifecycle callback for triggers in Shopify Flow?", "b1e5006b-aa5d-4026-bd2b-57b9e490c5c9": "What happens if an app does not respond promptly to a lifecycle callback from Shopify Flow?", "419ef8a0-a408-4bc7-b649-49e469d32e88": "What happens if a merchant tries to enable a workflow that uses a trigger but the app does not respond promptly to the lifecycle callback?", "e1ce96ab-51d1-4685-bc99-e12132b754d4": "Why are legacy trigger discovery webhook extensions created using the Partner Dashboard considered deprecated?", "1fb55e84-fd92-4cae-b872-35d4ef4292fe": "What must be done with legacy trigger discovery webhook extensions created using the Partner Dashboard before they can be edited?", "9ab1e47c-34d9-4366-b55a-c9af560d4cbc": "What information do trigger lifecycle callbacks contain regarding the trigger and the store using it?", "4e0e41f2-8c5d-44bf-98fa-2192e47507af": "What is the purpose of the `flow_trigger_definition_id` in the context of Shopify Flow?", "0dc3a955-d70d-4c62-a8e8-13dc25ef8add": "How should notifications be handled based on the timestamp provided in the payload?", "feb94780-bd76-4f44-b276-66c83be528f9": "What does the \"has_enabled_flow\" field indicate in the usage notification request?", "1002eb12-deac-4179-9bbd-63851a2ab87e": "When does Shopify Flow send a callback with \"has_enabled_flow\" set to true?", "479b36fc-ba8a-49c5-b879-3b26adc040bd": "What information does the callback contain when a merchant activates a workflow that uses a trigger in Shopify Flow?", "5d8ab8a2-42d9-4469-83e2-67ae804beb22": "What happens if a merchant's web server does not respond within five seconds when trying to enable a workflow?", "49637980-9ec8-485e-beb3-2e7886c82d40": "What should you configure your web server to listen for in relation to Shopify Flow callbacks?", "87ffc412-7a08-4a60-af7d-bdaf933573e9": "How can you ensure that you do not overwrite existing entries in your datastore when processing callback data?", "a3c46e9c-7eca-4a3a-9c9d-300bb78bdbe5": "What is the maximum response time configured for the web server when it receives a trigger lifecycle callback?", "9b144c41-e5be-49e9-beb2-73e51027b63c": "How should the application be edited to ensure triggers are sent only to stores that are using them?", "83d6dc07-7ec3-425b-b9ac-c299757781b3": "What command should be run in the CLI to generate the extension for the callback configuration?", "fd1fb6f8-504f-4262-9875-1518af9d6e25": "What should be changed in the generated TOML after selecting the Flow trigger lifecycle callback?"}, "relevant_contexts": {"86964144-7a7a-47b8-98bb-6ae5512e9823": ["bebdad0f-3bd7-4628-9395-133375e7d7a3"], "40748fb9-987f-4cee-8793-dc38d320a35c": ["bebdad0f-3bd7-4628-9395-133375e7d7a3"], "38323f7b-fbc6-4636-b29c-e761b6e962d3": ["60328d77-94e1-4efc-8463-0d5fe55d9e3f"], "9db6ac1e-3ff3-44b0-9f35-b675f7bbe217": ["60328d77-94e1-4efc-8463-0d5fe55d9e3f"], "f1691779-f421-4806-bba1-c52d6feebf8a": ["81535f7a-0952-4a8e-af13-dca47503ae5a"], "ec553091-3b8c-472b-a4bc-142067adbc0f": ["81535f7a-0952-4a8e-af13-dca47503ae5a"], "c1c9f4c0-6720-4f3c-bb52-44012b0b11b7": ["e8b1e96a-60ec-4ff5-877c-b11a5496b354"], "b1e5006b-aa5d-4026-bd2b-57b9e490c5c9": ["e8b1e96a-60ec-4ff5-877c-b11a5496b354"], "419ef8a0-a408-4bc7-b649-49e469d32e88": ["4a0cba38-6e2e-4a1f-91a9-b38127b20935"], "e1ce96ab-51d1-4685-bc99-e12132b754d4": ["4a0cba38-6e2e-4a1f-91a9-b38127b20935"], "1fb55e84-fd92-4cae-b872-35d4ef4292fe": ["fae32e4c-6f9c-4914-89ca-0f289b020c45"], "9ab1e47c-34d9-4366-b55a-c9af560d4cbc": ["fae32e4c-6f9c-4914-89ca-0f289b020c45"], "4e0e41f2-8c5d-44bf-98fa-2192e47507af": ["054ad566-0e3e-4592-adcf-0e6372ae044d"], "0dc3a955-d70d-4c62-a8e8-13dc25ef8add": ["054ad566-0e3e-4592-adcf-0e6372ae044d"], "feb94780-bd76-4f44-b276-66c83be528f9": ["d5c2ae5c-dfac-43a3-bc53-bd8dff6f68ef"], "1002eb12-deac-4179-9bbd-63851a2ab87e": ["d5c2ae5c-dfac-43a3-bc53-bd8dff6f68ef"], "479b36fc-ba8a-49c5-b879-3b26adc040bd": ["543754e3-8847-4811-a022-d0ab36da9f02"], "5d8ab8a2-42d9-4469-83e2-67ae804beb22": ["543754e3-8847-4811-a022-d0ab36da9f02"], "49637980-9ec8-485e-beb3-2e7886c82d40": ["f6f2fe3b-0422-4c4c-95cf-f97465290ec6"], "87ffc412-7a08-4a60-af7d-bdaf933573e9": ["f6f2fe3b-0422-4c4c-95cf-f97465290ec6"], "a3c46e9c-7eca-4a3a-9c9d-300bb78bdbe5": ["97fa4e99-25be-4a89-ab25-f9b9975d929c"], "9b144c41-e5be-49e9-beb2-73e51027b63c": ["97fa4e99-25be-4a89-ab25-f9b9975d929c"], "83d6dc07-7ec3-425b-b9ac-c299757781b3": ["97fd086a-290a-49aa-8376-4da9163454de"], "fd1fb6f8-504f-4262-9875-1518af9d6e25": ["97fd086a-290a-49aa-8376-4da9163454de"]}, "corpus": {"bebdad0f-3bd7-4628-9395-133375e7d7a3": "Property Name Property value extensions.schema ./schema.graphql extensions.settings.fields[0].type schema.Auction\n\nReturning data from an action at runtime\n\nWhen responding to an action request from Flow you can add the return type in the JSON response as a field called return_value. The return_value object must match the return type defined in the extension. The return type used in our example must be an auction object, like the following:\n\njson\n{\n \"return_value\": {\n \"id\": \"auction1\",\n \"name\": \"My first auction\",\n \"status\": \"COMPLETE\",\n \"bids\": [\n {\n \"id\": \"bid1\",\n \"customerId\": \"gid://shopify/Customer/1\",\n \"amount\": 100.00\n },\n {\n \"id\": \"bid2\",\n \"customerId\": \"gid://shopify/Customer/2\",\n \"amount\": 103.11\n }\n ]\n }\n}", "60328d77-94e1-4efc-8463-0d5fe55d9e3f": "json\n{\n \"return_value\": {\n \"id\": \"auction1\",\n \"name\": \"My first auction\",\n \"status\": \"COMPLETE\",\n \"bids\": [\n {\n \"id\": \"bid1\",\n \"customerId\": \"gid://shopify/Customer/1\",\n \"amount\": 100.00\n },\n {\n \"id\": \"bid2\",\n \"customerId\": \"gid://shopify/Customer/2\",\n \"amount\": 103.11\n }\n ]\n }\n}\n\nIf a workflow is using a non-nullable field that's defined in the extension schema but is missing from the payload or there's a type mismatch between fields, then the action transiently fails.\n\nThe response size of the action must also be less than 50KB exceeding this limit will also result in a transient failure. Actions that transiently fail will be retried at increasing intervals for up to 24 hours.\n\nSending complex objects in a trigger at runtime", "81535f7a-0952-4a8e-af13-dca47503ae5a": "If a workflow is using a non-nullable field that's defined in the extension schema but is missing from the payload or there's a type mismatch between fields, then the action transiently fails.\n\nThe response size of the action must also be less than 50KB exceeding this limit will also result in a transient failure. Actions that transiently fail will be retried at increasing intervals for up to 24 hours.\n\nSending complex objects in a trigger at runtime\n\nWhen you execute the flowTriggerReceive mutation with one or more complex object fields, the payload must include a JSON representation of the complex object(s) matching the schema. For example, if the trigger has a field with key Winning Bid of type Bid, then the payload should include the following structure:\n\njson\n\"payload\": {\n \"Winning Bid\": {\n \"id\": \"bid1\",\n \"customerId\": \"gid://shopify/Customer/1\",\n \"amount\": 100.00\n }\n}", "e8b1e96a-60ec-4ff5-877c-b11a5496b354": "This guide explains how to configure your app to receive trigger lifecycle callbacks from Shopify Flow.\n\nWhen creating a trigger, configuring a lifecycle callback enables your app to receive notifications from Shopify Flow about stores using the trigger and communicate changes in workflow status (e.g., enabling or disabling a workflow) back to the app. This helps optimize app performance by ensuring that trigger-related operations are only performed for stores that actually need them.\n\nApps must be properly configured to respond to trigger lifecycle callbacks. When a merchant attempts to enable a workflow that uses the trigger, Shopify Flow sends a lifecycle callback to the app's web server. If it doesn't promptly receive a response or receives a response with an HTTP status code that isn't 2xx, then the merchant can't enable the workflow and make use of the trigger.", "4a0cba38-6e2e-4a1f-91a9-b38127b20935": "Apps must be properly configured to respond to trigger lifecycle callbacks. When a merchant attempts to enable a workflow that uses the trigger, Shopify Flow sends a lifecycle callback to the app's web server. If it doesn't promptly receive a response or receives a response with an HTTP status code that isn't 2xx, then the merchant can't enable the workflow and make use of the trigger.\n\nNote:\nLegacy trigger discovery webhook extensions created using the Partner Dashboard are deprecated and must migrate to the CLI before they can be edited.\n\nHow trigger lifecycle callbacks work\n\nTrigger lifecycle callbacks contain identifying information about the trigger and the store using it and indicate whether the trigger is being used. You can use this information to track the stores that are currently using your triggers and then send trigger requests to only those stores.\n\nProperties", "fae32e4c-6f9c-4914-89ca-0f289b020c45": "Note:\nLegacy trigger discovery webhook extensions created using the Partner Dashboard are deprecated and must migrate to the CLI before they can be edited.\n\nHow trigger lifecycle callbacks work\n\nTrigger lifecycle callbacks contain identifying information about the trigger and the store using it and indicate whether the trigger is being used. You can use this information to track the stores that are currently using your triggers and then send trigger requests to only those stores.\n\nProperties\n\nThe trigger lifecycle callback (HTTP POST request) is formatted in JSON and it contains the following properties:", "054ad566-0e3e-4592-adcf-0e6372ae044d": "Property Data type Description Example flow_trigger_definition_id String The unique identifier for your Shopify Flow trigger. Add row to spreadsheet has_enabled_flow Boolean Whether the store has an enabled workflow that uses your trigger. Valid values: true : There is at least one workflow that is enabled and that uses your trigger. false : There are no enabled workflows that use your trigger. true shop_id Number The unique identifier for the Shopify store. 690933842 shopify_domain String The myshopify domain of the Shopify store. johnsapparel.myshopify.com timestamp ISO 8601 date and timestamp The time when the notification was created. Notifications with newer timestamps should take precedence. If you already have a timestamp in your datastore and you receive a newer timestamp, then overwrite this payload's information in your datastore. Conversely, if you receive a timestamp that is older than the information in your datastore, then ignore this payload. 2019-01-25T16:44:10.999Z", "d5c2ae5c-dfac-43a3-bc53-bd8dff6f68ef": "The following is an example body of a usage notification (HTTP POST) request:\n\njson\n{\n \"flow_trigger_definition_id\": \"Add row to spreadsheet\",\n \"has_enabled_flow\": false,\n \"shop_id\": \"690933842\",\n \"shopify_domain\": \"johnapparel.myshopify.com\",\n \"timestamp\": \"2019-01-25T16:44:10.999Z\"\n}\n\nCallback events\n\nShopify Flow sends trigger lifecycle callbacks when the following events occur:\n\nWhen a merchant activates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": true.\n\nWhen a merchant deactivates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": false.\n\nWeb server response time and status codes", "543754e3-8847-4811-a022-d0ab36da9f02": "Callback events\n\nShopify Flow sends trigger lifecycle callbacks when the following events occur:\n\nWhen a merchant activates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": true.\n\nWhen a merchant deactivates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": false.\n\nWeb server response time and status codes\n\nWhen a merchant tries to enable a workflow that uses your trigger, Shopify Flow sends a trigger lifecycle callback to your web server. If your web server doesn't respond within five seconds, or if it responds with a different status code, then the merchant can't enable that workflow. The merchant receives a notification in the Shopify Flow app that tells them to try enabling the workflow at a later time.\n\n1. Configure your web server\n\nTo begin, configure your web server to listen for Shopify Flow callbacks.\n\nConfigure a URL in your web server to listen for the trigger lifecycle callbacks from Shopify Flow.", "f6f2fe3b-0422-4c4c-95cf-f97465290ec6": "1. Configure your web server\n\nTo begin, configure your web server to listen for Shopify Flow callbacks.\n\nConfigure a URL in your web server to listen for the trigger lifecycle callbacks from Shopify Flow.\n\nConfigure your web server to verify the HMAC header in the trigger lifecycle callback with your client secret.\nThe HMAC header is located in the following HTTP header: x-shopify-hmac-sha256. If you are using a Ruby-based web framework, then the header is http-x-shopify-hmac-sha256.\n\nConfigure your web server to respond within 5 seconds when it receives a trigger lifecycle callback.\n\n2. Process and store callback data\n\nAfter you've added support to listen for Shopify Flow callbacks, you can configure your web server to process and store the callback data.\n\nSave the list of stores that are using your triggers in a persistent datastore. Use the timestamp property to make sure that you don't overwrite an existing entry with older information.", "97fa4e99-25be-4a89-ab25-f9b9975d929c": "Configure your web server to respond within 5 seconds when it receives a trigger lifecycle callback.\n\n2. Process and store callback data\n\nAfter you've added support to listen for Shopify Flow callbacks, you can configure your web server to process and store the callback data.\n\nSave the list of stores that are using your triggers in a persistent datastore. Use the timestamp property to make sure that you don't overwrite an existing entry with older information.\n\nEdit your application to send your triggers only to stores that are using your triggers.\n\n3. Configure the callback\n\nFinally, configure the callback in the CLI:\n\nRun shopify app generate extension.\n\nSelect Flow trigger lifecycle callback.\n\nChange the URL in the generated TOML to the URL configured on the web server.\n\nRun shopify app deploy.\n\nNext steps\n\nFamiliarize yourself with Shopify Flow and learn about building connectors.\n\nConnect your app to Shopify Flow so that events that occur in your app can trigger workflows.", "97fd086a-290a-49aa-8376-4da9163454de": "3. Configure the callback\n\nFinally, configure the callback in the CLI:\n\nRun shopify app generate extension.\n\nSelect Flow trigger lifecycle callback.\n\nChange the URL in the generated TOML to the URL configured on the web server.\n\nRun shopify app deploy.\n\nNext steps\n\nFamiliarize yourself with Shopify Flow and learn about building connectors.\n\nConnect your app to Shopify Flow so that events that occur in your app can trigger workflows.\n\nConnect your app to Shopify Flow so that your app receives data and information when a workflow action runs."}}
|
data/finetuning/training_dataset.jsonl
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"questions": {"042479dd-e71c-4a10-82f5-9c2028cff9bc": "What is an action in the context of Shopify Flow?", "b6b235f6-a027-4b68-b43c-67a813203b41": "Where can you find a guide to create and test a Flow action?", "b0254b35-9e48-45cf-bbaf-3175eceec264": "What information must be included in the action that merchants add to their workflows?", "87e4ff42-a1e2-4dd3-a32a-85eee9362b9d": "What are the requirements for setting up a test environment to create an action for Shopify Flow?", "dd61b02f-ec73-46ca-98c9-d0ca0758f5db": "What guidelines should be followed to name a Flow action in Shopify?", "c389702d-bc5a-47c4-9529-4a5b3851a0d9": "What command is used to generate a new extension using the Shopify CLI?", "76b82504-ae39-4a39-a1d4-33fec9d38dc3": "What is the format for naming a Flow action in Shopify?", "d7cc551a-f9c5-44b9-a42f-5fcf1051dc50": "What command is used to generate a new extension using the Shopify CLI?", "b5e39a20-9786-4a98-afa2-793517155cb2": "What type of extension should be selected when creating a new Flow Action in Shopify?", "89639741-d0e8-4a81-87e2-e5dc1ecd12fa": "Where can you find the file representation of your extension after using Shopify CLI?", "5e1ccfd0-3583-4a28-aa1c-301bdf468c3c": "What steps must be taken in the Partner Dashboard to add a Shopify Flow action to an app?", "74ee3cab-7fbd-4c64-86dc-b8683cf19087": "What information is required in the Extension name field when creating a Flow action?", "a15054f9-3259-4a43-9f1a-f89b3939747a": "What should you change the description to when customizing a Flow action configuration file?", "18f54fc9-aa6f-48df-95a3-a0c54b5e7bc5": "What type should the second settings.fields field be updated to in the Flow action configuration?", "52e1f8f6-574e-43a4-9dd1-9ff5fd59ed39": "What is the purpose of the `runtime_url` in the auction bid configuration?", "c414899e-4b34-42f3-94fd-94583c5e69ee": "What type of data is expected for the `Bid Amount` field in the auction bid settings?", "9fa645f4-61cf-413e-8093-a29e860bc3d4": "What type of field is required for customer reference in the settings?", "c487f9f6-dcf5-4267-bba9-52e90bd8b7cd": "What is the purpose of the \"Bid Amount\" field in the settings?", "08b3e51b-125b-4c2f-ad4e-f78d71a875a6": "What is the purpose of the endpoint for flow action execution in a Shopify Flow action?", "a31a84fb-d60d-43a9-9360-87f2619214a1": "Why is a custom validation endpoint required when using a custom configuration page in Shopify Flow?", "61c988dc-7a04-491f-a272-26b730aa96e3": "What should you refer to in order to learn about the endpoint requirements for your server?", "11646a99-b098-4347-a575-93d8d91f3984": "How can you identify draft versions of a task in your development store?", "cfe70901-846c-4ad5-85ec-12a46db80703": "What command should you run to start using draft versions of your extension(s) in your app directory?", "9c5c3fe2-ec1e-4bf7-9dfe-ef5f3a9486e8": "What should you ensure about the custom configuration page after creating an action in the Partner Dashboard?", "31b1c4a8-10aa-49c8-96a9-771260d45e0a": "What should you ensure about the custom configuration page after creating it?", "b70023f2-874a-422f-85fa-25bad9ebeaf3": "What command is recommended to deploy your extensions using Shopify CLI?", "f54a6f7c-aabd-4ae1-8249-f876de957783": "What command is used to deploy extensions using Shopify CLI?", "28b03ccb-38ce-41be-965a-c90e86491f73": "Why is it recommended to test changes using app dev or a test app before deploying to a production app?", "7790aa1f-cf40-4ea7-ada1-b1b9b94aeece": "What elements should be verified in each request for security reasons?", "59171bde-5d56-47dc-b396-fb9848d6308d": "How can you connect your app to Shopify Flow to trigger workflows based on events?", "fe3adb11-eaa1-42db-b3d8-4bb1b9937fc9": "What is generated when you create a new trigger extension using Shopify CLI?", "35bc41c0-8e47-4345-9d28-89fd4c1505c3": "What should developers expect as the Flow's CLI capabilities continue to evolve?", "f533ed4b-82db-434d-a37e-1e9dac1d15db": "What is the purpose of the TOML configuration file structure when creating Flow extensions using Shopify CLI?", "f1ce9350-565f-49b0-9a02-f7feea84d37a": "What are the key components included in the example TOML configuration for a trigger extension?", "c0145730-dd14-4a72-9709-5b94521dfe7a": "What is the purpose of the properties listed in the [[extensions]] section of the TOML configuration file for a trigger extension in Shopify CLI?", "0a69bcd5-480e-4544-97ac-a8de6cafb2d5": "What types of fields are defined in the settings section of the TOML configuration file example provided?", "b7f4a54a-b761-4180-b577-9105ac1fa7ff": "What is the required type that must be set for Flow triggers in the extension properties?", "78423aba-d463-4a13-b8d3-21427f6f9478": "What are the rules for the 'handle' property in the trigger extension properties?", "f2a25315-fecf-4f76-99de-1258a6113c25": "What section are trigger extension fields listed in, and what header is used for each field?", "f5ae7c2c-c2f2-4070-b8eb-bfc7c0dc12bf": "What are the requirements for the 'key' property in trigger extension fields?", "91d82b64-8470-4ff1-b0eb-901252acd90a": "What are the two types of fields that can be added when creating a trigger for Shopify Flow?", "188bc6e2-6983-4442-8767-74585fff3555": "How does a reference field benefit merchants when building workflows in Shopify Flow?", "4f259595-9624-4fdc-9315-5e27d3548288": "What are the conditions that a merchant can create in Shopify Flow using customer data?", "6d8d3093-ac24-4b83-8c2a-11f2b31e1622": "How can a merchant include customer template variables in their actions within Shopify Flow?", "242d2bd9-7594-49b0-937d-8fe815598bfa": "What is the purpose of the `customer_reference` field in the provided context?", "715f8157-d02a-4de9-8734-a20b4916878a": "What are the available custom field types mentioned in the context?", "2f0cfe7f-1ad9-4547-9911-91b57959504f": "What is the purpose of including the payload key when making a request to Flow?", "03de9e67-164d-44b4-b56e-8bc90a596c40": "Can you provide an example of a custom field type and its corresponding value?", "5e4a77fe-fd8f-44cc-93a8-06b6fdc0f9ce": "What are the available custom field types mentioned in the context?", "46375155-47ae-44e1-86ee-292557f8f8c8": "How should custom field names be formatted when referring to them in the payload sent to Shopify Flow?", "d238d076-4494-4d3c-8ab0-e3f8f811e3c6": "What format should custom field names follow to ensure they are self-describing and readable?", "87e0fb69-44b0-4a1e-afdf-98a53563228b": "How does Shopify Flow convert key properties when used as template variables in the editor?", "20d51f28-dfd3-4862-b779-dfebafdc92e4": "How does Shopify Flow convert key properties when used as template variables in custom fields?", "6be4a1f1-8aff-4f05-951a-0cbe70f5494f": "What is the purpose of the `flowTriggerReceive` mutation in the Shopify Flow editor?", "07236236-55fd-4387-8ed7-f95daa37be85": "What is the purpose of the `handle` property in the `flowTriggerReceive` mutation?", "424b4258-3b11-47ea-96fe-99c82b870350": "What are the limitations regarding the size and content of the payload sent to Shopify Flow?", "1eab2184-adab-43f5-b1d4-2270cc6e1fb4": "What is the purpose of the shopify.extension.toml file in a Flow template extension?", "a6472045-3ccb-4cc0-a75d-15be50b6096d": "What are the categories specified in the example TOML configuration for the Flow template extension?", "cb09fb7e-28d3-455c-8600-4fdfbb1ee139": "What is the required property that serves as a globally-unique identifier for your extension in a flow template?", "afb5db91-859e-48b1-aece-11f9af6f2255": "How many categories must be chosen for a template, and what is the maximum number of categories recommended?", "ac77a0c7-f951-4e4c-af52-7a68696d113a": "What are the valid categories that can be used to describe the function of a template?", "e68adc20-7d65-40aa-8977-a1c3cf173f6e": "What does the 'require_app' property determine regarding the visibility of a template?", "43014a30-1840-4c80-88ca-81e7e26b6a28": "What are the optional parameters that can be set for a template in the extension's folder?", "12836fa9-89a0-4efa-8e32-bd2821eb516a": "How does the 'require_app' parameter affect the visibility of a template to merchants?", "7b7fca7a-6243-4239-87e3-2860bb574a58": "What are the benefits of localizing a template for a wider audience?", "f0ad48ce-3d23-425d-8f85-f88efaa45501": "How can you add new locales for a template according to the provided context?", "bb36a986-1568-4c8b-bed9-ab8cb05da60e": "What is the purpose of adding new .json files prefixed with the locale in the workflow?", "5d04df46-b082-42a1-a8d4-a83e23e2703f": "How can you provide translated custom step descriptions in the workflow?", "f1c1582f-5f95-4518-95cb-0c99e1a68ab2": "What should be included in the step description field to provide translated custom step descriptions?", "2b680ebe-44be-4715-bb7b-9389ba8d53a4": "What is an example of a workflow that provides value or solves a problem in the approval process?", "7282502c-dec1-4878-9460-a1ad0673a64e": "What criteria must a template extension meet before it can be submitted for approval?", "74de61d8-a329-4028-97bc-99262f03b952": "Why is it important for the template extension to include a default localization and an English translation?", "9b5f5da1-b8d2-487c-a609-93cc24b4d0dd": "What format should titles use when creating templates?", "103d7612-dac9-4e79-ac24-b0ad6ec953a6": "What is the maximum number of templates that can be submitted for each app?", "f841c365-c6ca-4f24-a667-105b4f153eda": "What is a trigger in the context of Shopify Flow?", "67c05255-d353-4b11-82e4-2f30e6c2f568": "What file format is used to specify details about a trigger in a trigger extension?", "e0448d71-384e-42b8-aca6-f3178562118f": "What is the purpose of a template in Shopify Flow?", "04d2d62e-83de-4995-8153-ce0af568ec75": "What are the requirements needed to create a workflow template for Shopify Flow?", "885560e6-7f4a-4752-89f9-c84dc12acf3f": "What is the first step to create a workflow in Shopify Flow according to the provided context?", "03f49e5c-f36e-4b58-8cae-20a89d68b2da": "What should you do with shop-specific test data when exporting a workflow in Shopify Flow?", "b4643d80-e959-47f7-b673-3d4689839a7e": "What should you do with shop-specific test data when preparing a workflow for export?", "ca67f26d-92de-4bce-87f3-370cc5faedba": "How can you create a new Flow template extension using the Shopify CLI?", "9f27d0b5-867b-4d05-871a-7d61dc12130c": "What command should you run to generate a new Flow template extension using the Shopify CLI?", "a96e299e-26df-47ef-bb87-4ffc35cb6b7f": "What guidelines should you follow when naming your Flow template extension?", "7ac493bd-6bf1-427d-bbca-db6d53d83219": "What directory does Shopify CLI generate the extension's file representation in", "301c86d4-7287-407e-8dda-ad25c98e442e": "How many templates can each Flow template extension contain", "c01ffeed-9f66-4136-9d19-599380e1b7c7": "What files are included in the file structure of the extension as described in the context?", "d81d5866-53d3-4aed-8132-34df6540697b": "What command should be run in Shopify CLI to preview the template extension before deployment?", "9c17690d-c6ff-420a-97af-14d59bc549f4": "What command should be run in Shopify CLI to preview the template extension before deployment?", "b4b4c895-6aca-4e42-a15f-fe0a9dce5b63": "Where can you find the workflow, template card, and custom step descriptions for previewing in your development store's Shopify admin?", "09545d65-f768-4f7d-8d29-62b014fdf9ba": "What command is used to start deploying your extension in Shopify CLI?", "0bc98a06-ac29-499f-b304-082e0c521d60": "Where can you preview your workflow, template card, and custom step descriptions in your development store's Shopify admin?", "d98629a6-fb2d-4415-bf6a-17e3258f3863": "What is the required format for naming a Flow action in Shopify Flow?", "96799302-7763-4d0d-896a-11e086025194": "What permissions must your application have to build a trigger using a customer reference?", "9858fb15-04eb-4a9d-9f74-f2f45b88b34d": "What format should be used for naming a Flow action in Shopify?", "82034c0f-f611-465f-a5c5-21ed03c9293e": "What command is used to generate a new extension using Shopify CLI?", "281dc403-76e7-4f3c-aa0b-a60d5ab8cd87": "What command should you run to generate a new extension in your app directory?", "f0fab32f-d48a-4811-a692-740d70eb2f8b": "Where can you find the file representation of your generated extension after using the Shopify CLI?", "b6c60005-4c91-4742-8c5f-7016e00382b8": "What is the file structure required for the auction-bid-placed extension?", "0c5cf060-e40f-485e-8448-87ae771dcf1f": "How do you add a Shopify Flow trigger to your app using the Partner Dashboard?", "3e858995-3034-417a-9d78-2e972e8b8e69": "What is the purpose of copying the GraphQL endpoint in the trigger configuration process?", "914dcfdf-3eeb-415a-8eeb-febd6b22f06e": "What changes need to be made to the description and type in the trigger configuration file?", "adfb599f-f0fd-4ed6-b5a8-5e365d5a78ff": "What is the purpose of changing the description in the flow trigger configuration file?", "25f97118-036a-4f63-a689-c6703a3c4838": "What command is used to enable the draft version of your trigger in the development store?", "b175efdb-8114-4116-8377-6f66c7434de0": "What is the purpose of the \"Auction Bid Placed\" trigger in the context provided?", "012f1515-adb8-4761-af71-328201bba6e3": "How can a developer identify the draft version of a task in their development store?", "2a96eedc-2a23-4d28-a823-b9cad4f4626e": "What happens to the visibility of the draft version of a task when \"Development store preview\" is enabled?", "188ed718-5d78-400b-98c0-4f1823c3bab6": "How can you view the deployed version of a task in your development store?", "6144957d-3198-406c-bc89-3d47f7ae7dd0": "What command should you run to start using draft versions of your extension(s) in your app directory?", "193f95f3-4096-4491-b9c4-50cfe92444d8": "What is the maximum size limit for the payload when sending a flowTriggerReceive mutation using the Admin GraphQL API?", "7cf03b92-77e3-429c-9606-21f5df7dee19": "What is the maximum size limit for the payload in a trigger request to Shopify?", "466d69d7-c2b4-4e4d-abc8-dab0f5f8b657": "What error message does Shopify return if the properties body exceeds the size limit?", "12b5ad69-5ed6-40ce-b403-845a25864d9a": "What is the purpose of the `flowTriggerReceive` mutation in the provided context?", "34093abc-88c8-4408-8207-128266e2db07": "How is the `flowTriggerReceive` mutation structured in the curl request example?", "be0f1b54-3fe3-441b-8bee-ff6d2dc6c7e7": "What command is used to deploy extensions in Shopify CLI?", "9075e472-5f10-450f-8a8c-a8e9f0f90814": "What should you do before deploying changes to a production app?", "0ccfee15-101f-440e-beb2-347a59689a05": "What is the purpose of templates in Shopify Flow?", "0b7304b0-1bba-48de-9658-daa39002f429": "How can merchants utilize the template library in Shopify Flow?", "f45be964-99e4-4043-8941-aae13ec1b8a5": "What are some examples of actions that merchants can automate using the Review created trigger in Shopify Flow?", "6b1bd4b9-67fd-4002-bdb5-f69fe84fa1cf": "How can integrating with Shopify Flow increase the value of an app for merchants?", "aa888de3-a9f1-4735-a5e1-7c24b293d1d8": "How does building for Flow enhance the value of an app for merchants?", "6c73a242-fc5a-40d9-99bc-af8c562f40ea": "What are the benefits of integrating with Flow instead of creating direct integrations with multiple apps?", "317a2b04-3dd0-4822-b8f2-90403568f9f7": "What benefits does integrating with Flow provide for app developers in terms of development time and features?", "ea9b0dd7-480b-4ec1-a1c0-d3c464d12fc0": "How can merchants discover tasks or templates related to an app that is integrated with Flow?", "09392aa2-b7fe-4adf-a159-3fe7084f13b1": "What is an example of a trigger in a workflow as described in the context?", "18bf2aaa-cb1f-409c-8fd9-6bcf2456f1a3": "What type of plan must a Shopify merchant be on to access the Flow app?", "e7607a61-1311-469d-8e2f-ca9581bd7b1d": "What is the primary difference in Flow features for merchants with a custom app compared to those without?", "ad4c5a02-d66f-4442-bc15-9a370f6fadbf": "How do templates in Shopify Flow assist merchants in automating specific use cases?", "745c2154-f72a-49f9-afee-8bb88c6dc084": "What is the purpose of connecting your app to Shopify Flow in relation to triggers?", "f56fe53d-a0ca-4d2b-8801-6b29c7c05616": "How can you create workflow templates in Shopify Flow?", "5a5f09e1-4db4-4bec-b66f-26aea545a865": "What is the purpose of embedding a page from your app in the Shopify Flow editor?", "6cca6fbf-99ee-40ab-8eb4-c5d62564b1eb": "What resources are required to implement a custom configuration page in Shopify Flow?", "3d67b149-fa42-4eb3-a38b-3350d3e30d4a": "What are the prerequisites for implementing a custom configuration page in Shopify Flow?", "63b32f04-c525-4390-bc12-827d6c431382": "Which tools and components are necessary to build a custom configuration page using Shopify App Bridge?", "e3239ec3-b640-40ad-88d3-4b3bcf240c55": "What is the purpose of using Shopify App Bridge when building a custom configuration page?", "90d819a6-28cb-4090-be01-088ce1592cc9": "How can you access step and property information on the custom configuration page?", "0f301708-b991-4644-8931-57eed578aff4": "What is the purpose of the step_reference search parameter in the context of the custom configuration page for Shopify Flow?", "289b9ed7-9a32-4104-b958-b244b326110f": "How can you access the property data that makes up the action payload schema when integrating Shopify App Bridge?", "48cf32e7-e55e-44e7-b306-33ff0c4edc65": "What is the purpose of the properties object in the action payload schema for Shopify App Bridge?", "7b97ba20-10c7-40d1-9969-f2d5c5a2c97e": "How can you register to the Custom Configuration Page's intent using Shopify App Bridge version 4.X.X and up?", "db5271ff-b40b-40c9-a441-95c8fa95d0a3": "What is the purpose of the `useAppBridge` hook in the provided context?", "5af2e1ba-2ee9-4315-bc21-8d9aac5f4b74": "How does the `finish` method in the intent object function within the Application component?", "2b75d4c6-e0a6-4c9c-81aa-d51a2c7e5f1a": "What does the register method return that can be used when a component is unmounting?", "874926db-8636-454b-a952-879294929e2e": "How can you trigger a redirect to the previous page in the custom configuration page?", "aa65f984-d04c-42d5-b971-24fd350cb8f0": "What elements can be added to the navigation bar using the ui-title-bar element?", "b7ecdda7-224f-4add-b680-4585cf9bacf7": "How can you access property data in a Shopify App Bridge integration?", "a91fe899-fcba-4d17-a00a-be6483eceaa7": "What event must you subscribe to in order to access property data in the provided context?", "1470ceee-8c5d-43ba-8693-7f86788cc1f3": "In the example code, what action is triggered to request the properties after subscribing to the properties event?", "672c9b26-9404-4229-84c2-47726f6fb4dd": "What event does the app subscribe to in the first useEffect hook?", "cd8efe96-4efd-44db-a8f6-4fa521c70544": "How can a redirect to the previous page be triggered in the application?", "a7d536b0-9d74-43a8-8852-67faa286e9ed": "What is the default function of the Exit button on the custom configuration page's title bar?", "4aefddb0-a954-4039-badf-412e4bf9f55e": "How can additional actions be added to the App Bridge title bar using @shopify/app-bridge?", "eaea40b8-85c1-4bd8-a641-5bc83e404bba": "What is the purpose of keeping a reference to the Titlebar instance after its initialization?", "3810428f-625c-4ec5-89b7-87b2ac9a2b2b": "Which actions are supported on the TitleBar when using @shopify/app-bridge-react?", "75d981dd-b780-4d18-8c98-7d863cdaa9c8": "What actions are subscribed to the primary and secondary buttons in the provided code?", "dc40a869-3329-47ae-817f-96cdba2aa5fe": "How is the title bar updated after the initialization in the given context?", "5f07b55f-1f97-4427-8960-2ad6f9cde0ff": "What is the purpose of the `newPrimary` button in the provided context?", "44f3ccaf-3870-4b80-86ba-782e5ef75b1d": "How does the `onAction` property function for the buttons defined in the `Page` component?", "f09fabfb-034d-4d25-b838-cf788d30be60": "What is the purpose of the `primaryAction` and `secondaryActions` in the provided code?", "0932f9d1-d732-4b71-a209-b64eb1770a6b": "What additional steps are required to add a custom configuration page to your Shopify Flow action?", "6f88844b-e1d0-4f42-bd8f-c503b96bb4ef": "What is the purpose of the handle property in the context of Flow extensions imported into Shopify CLI?", "37c21a0c-5e07-4345-9c04-ec2e97c357bd": "What are the requirements for creating a Partner account and using Shopify CLI v3.70.0 or higher?", "e7956b00-334b-4394-b091-1fc7a61abb9b": "What happens to the handle property of extensions after running the dev or deploy commands?", "bd64a3f3-c889-460b-9763-e90f2968ec82": "What is the purpose of the import command in relation to Partner Dashboard extensions?", "ab1f7ff6-56f3-41a5-a9d6-2c0cbab7ae2f": "What command is used to import Flow extensions into your application?", "c8c2306d-1692-4f96-9d6a-f52d6def5063": "Where can you find the generated file representation of your imported extension?", "64c1a061-2efc-40a2-9dcd-f9f4f7571838": "What is the first step to import an extension using Shopify CLI?", "220a077f-3b40-4954-a5fc-eb643f8c14b2": "What file structure should your extension have after importing it into the /extensions directory?"}, "relevant_contexts": {"042479dd-e71c-4a10-82f5-9c2028cff9bc": ["211f415b-8b3c-4249-9d97-5364a1a2e484"], "b6b235f6-a027-4b68-b43c-67a813203b41": ["211f415b-8b3c-4249-9d97-5364a1a2e484"], "b0254b35-9e48-45cf-bbaf-3175eceec264": ["c2c7a729-f33e-4ca5-8a83-50fa9cf68824"], "87e4ff42-a1e2-4dd3-a32a-85eee9362b9d": ["c2c7a729-f33e-4ca5-8a83-50fa9cf68824"], "dd61b02f-ec73-46ca-98c9-d0ca0758f5db": ["f4492c4e-0a37-4fd4-9f1a-117bcde0c058"], "c389702d-bc5a-47c4-9529-4a5b3851a0d9": ["f4492c4e-0a37-4fd4-9f1a-117bcde0c058"], "76b82504-ae39-4a39-a1d4-33fec9d38dc3": ["c9e8c016-17f0-45cf-8820-cc3c624738f4"], "d7cc551a-f9c5-44b9-a42f-5fcf1051dc50": ["c9e8c016-17f0-45cf-8820-cc3c624738f4"], "b5e39a20-9786-4a98-afa2-793517155cb2": ["c199e8db-25fb-421e-888f-a9b3a66b5f2c"], "89639741-d0e8-4a81-87e2-e5dc1ecd12fa": ["c199e8db-25fb-421e-888f-a9b3a66b5f2c"], "5e1ccfd0-3583-4a28-aa1c-301bdf468c3c": ["3b2cc596-1031-4f4d-b7ac-563264861882"], "74ee3cab-7fbd-4c64-86dc-b8683cf19087": ["3b2cc596-1031-4f4d-b7ac-563264861882"], "a15054f9-3259-4a43-9f1a-f89b3939747a": ["62857311-bbe9-4167-9d49-9a770f8aea7d"], "18f54fc9-aa6f-48df-95a3-a0c54b5e7bc5": ["62857311-bbe9-4167-9d49-9a770f8aea7d"], "52e1f8f6-574e-43a4-9dd1-9ff5fd59ed39": ["56783675-0de0-4736-ac84-0990832869f3"], "c414899e-4b34-42f3-94fd-94583c5e69ee": ["56783675-0de0-4736-ac84-0990832869f3"], "9fa645f4-61cf-413e-8093-a29e860bc3d4": ["f9878bb6-a00a-4e17-80d0-22cb18f3d978"], "c487f9f6-dcf5-4267-bba9-52e90bd8b7cd": ["f9878bb6-a00a-4e17-80d0-22cb18f3d978"], "08b3e51b-125b-4c2f-ad4e-f78d71a875a6": ["d517adaa-2fbc-46fb-a488-d4dc6080b0de"], "a31a84fb-d60d-43a9-9360-87f2619214a1": ["d517adaa-2fbc-46fb-a488-d4dc6080b0de"], "61c988dc-7a04-491f-a272-26b730aa96e3": ["a4a9d51b-4e33-493e-99fe-5825baa4bd3b"], "11646a99-b098-4347-a575-93d8d91f3984": ["a4a9d51b-4e33-493e-99fe-5825baa4bd3b"], "cfe70901-846c-4ad5-85ec-12a46db80703": ["0284c311-90ca-48c6-8a0d-7816492df712"], "9c5c3fe2-ec1e-4bf7-9dfe-ef5f3a9486e8": ["0284c311-90ca-48c6-8a0d-7816492df712"], "31b1c4a8-10aa-49c8-96a9-771260d45e0a": ["c3e4a281-b830-4e58-a6a8-e14048252acf"], "b70023f2-874a-422f-85fa-25bad9ebeaf3": ["c3e4a281-b830-4e58-a6a8-e14048252acf"], "f54a6f7c-aabd-4ae1-8249-f876de957783": ["c10969e4-9370-43cf-a3a9-802945cb2a38"], "28b03ccb-38ce-41be-965a-c90e86491f73": ["c10969e4-9370-43cf-a3a9-802945cb2a38"], "7790aa1f-cf40-4ea7-ada1-b1b9b94aeece": ["7289d212-93e6-4702-a84d-03f1fb12b232"], "59171bde-5d56-47dc-b396-fb9848d6308d": ["7289d212-93e6-4702-a84d-03f1fb12b232"], "fe3adb11-eaa1-42db-b3d8-4bb1b9937fc9": ["07c20668-16bb-45b5-8c50-de9fc9aed5e4"], "35bc41c0-8e47-4345-9d28-89fd4c1505c3": ["07c20668-16bb-45b5-8c50-de9fc9aed5e4"], "f533ed4b-82db-434d-a37e-1e9dac1d15db": ["0341663c-d471-4667-8e56-99caa896dd43"], "f1ce9350-565f-49b0-9a02-f7feea84d37a": ["0341663c-d471-4667-8e56-99caa896dd43"], "c0145730-dd14-4a72-9709-5b94521dfe7a": ["482ae85a-c14d-4158-b884-7b70fe5c7e13"], "0a69bcd5-480e-4544-97ac-a8de6cafb2d5": ["482ae85a-c14d-4158-b884-7b70fe5c7e13"], "b7f4a54a-b761-4180-b577-9105ac1fa7ff": ["bad2972a-22ae-419d-ae20-775a5de483b8"], "78423aba-d463-4a13-b8d3-21427f6f9478": ["bad2972a-22ae-419d-ae20-775a5de483b8"], "f2a25315-fecf-4f76-99de-1258a6113c25": ["ef510541-4c64-4c8a-a342-c2bd4778c97b"], "f5ae7c2c-c2f2-4070-b8eb-bfc7c0dc12bf": ["ef510541-4c64-4c8a-a342-c2bd4778c97b"], "91d82b64-8470-4ff1-b0eb-901252acd90a": ["8c49dd71-32bd-407c-abfd-d6445e26ac42"], "188bc6e2-6983-4442-8767-74585fff3555": ["8c49dd71-32bd-407c-abfd-d6445e26ac42"], "4f259595-9624-4fdc-9315-5e27d3548288": ["df74b22b-d326-497b-961c-83e459bb5798"], "6d8d3093-ac24-4b83-8c2a-11f2b31e1622": ["df74b22b-d326-497b-961c-83e459bb5798"], "242d2bd9-7594-49b0-937d-8fe815598bfa": ["28a9aa35-e89f-4dc3-b2d1-c61d6e1e35b9"], "715f8157-d02a-4de9-8734-a20b4916878a": ["28a9aa35-e89f-4dc3-b2d1-c61d6e1e35b9"], "2f0cfe7f-1ad9-4547-9911-91b57959504f": ["6c99d8ea-c168-47be-b1d2-8b6095b0ea90"], "03de9e67-164d-44b4-b56e-8bc90a596c40": ["6c99d8ea-c168-47be-b1d2-8b6095b0ea90"], "5e4a77fe-fd8f-44cc-93a8-06b6fdc0f9ce": ["d5e6a990-7f13-4fc7-bdc3-1f7ca08a9422"], "46375155-47ae-44e1-86ee-292557f8f8c8": ["d5e6a990-7f13-4fc7-bdc3-1f7ca08a9422"], "d238d076-4494-4d3c-8ab0-e3f8f811e3c6": ["8c932011-f4f5-4dae-b38a-4310b009c857"], "87e0fb69-44b0-4a1e-afdf-98a53563228b": ["8c932011-f4f5-4dae-b38a-4310b009c857"], "20d51f28-dfd3-4862-b779-dfebafdc92e4": ["9a2f4755-4700-4c69-99a9-caa719c044a2"], "6be4a1f1-8aff-4f05-951a-0cbe70f5494f": ["9a2f4755-4700-4c69-99a9-caa719c044a2"], "07236236-55fd-4387-8ed7-f95daa37be85": ["f5e08dce-e44c-490a-9253-94a9c7e9804a"], "424b4258-3b11-47ea-96fe-99c82b870350": ["f5e08dce-e44c-490a-9253-94a9c7e9804a"], "1eab2184-adab-43f5-b1d4-2270cc6e1fb4": ["5e919460-3e31-450d-b99f-33229ed51f47"], "a6472045-3ccb-4cc0-a75d-15be50b6096d": ["5e919460-3e31-450d-b99f-33229ed51f47"], "cb09fb7e-28d3-455c-8600-4fdfbb1ee139": ["85aaccf6-fb63-4044-a9e7-093cc648053b"], "afb5db91-859e-48b1-aece-11f9af6f2255": ["85aaccf6-fb63-4044-a9e7-093cc648053b"], "ac77a0c7-f951-4e4c-af52-7a68696d113a": ["a60bc06a-2519-4b93-bd07-1344899a4ce4"], "e68adc20-7d65-40aa-8977-a1c3cf173f6e": ["a60bc06a-2519-4b93-bd07-1344899a4ce4"], "43014a30-1840-4c80-88ca-81e7e26b6a28": ["205c8047-cddd-4446-9821-fc8ed37f4e80"], "12836fa9-89a0-4efa-8e32-bd2821eb516a": ["205c8047-cddd-4446-9821-fc8ed37f4e80"], "7b7fca7a-6243-4239-87e3-2860bb574a58": ["b3dc0a69-cb7e-4973-8dc6-dafc4481b5fb"], "f0ad48ce-3d23-425d-8f85-f88efaa45501": ["b3dc0a69-cb7e-4973-8dc6-dafc4481b5fb"], "bb36a986-1568-4c8b-bed9-ab8cb05da60e": ["ef251142-c6e8-4a6d-9789-f658ad4eff29"], "5d04df46-b082-42a1-a8d4-a83e23e2703f": ["ef251142-c6e8-4a6d-9789-f658ad4eff29"], "f1c1582f-5f95-4518-95cb-0c99e1a68ab2": ["68b3f8e0-c759-4355-8775-ec2394fde4d1"], "2b680ebe-44be-4715-bb7b-9389ba8d53a4": ["68b3f8e0-c759-4355-8775-ec2394fde4d1"], "7282502c-dec1-4878-9460-a1ad0673a64e": ["14518f83-fe79-4306-9bfd-f911434c334b"], "74de61d8-a329-4028-97bc-99262f03b952": ["14518f83-fe79-4306-9bfd-f911434c334b"], "9b5f5da1-b8d2-487c-a609-93cc24b4d0dd": ["bdbcd0a9-c030-4642-b70e-4d953d09989d"], "103d7612-dac9-4e79-ac24-b0ad6ec953a6": ["bdbcd0a9-c030-4642-b70e-4d953d09989d"], "f841c365-c6ca-4f24-a667-105b4f153eda": ["61c3730f-df17-43a0-b966-a6a9be4b3bc1"], "67c05255-d353-4b11-82e4-2f30e6c2f568": ["61c3730f-df17-43a0-b966-a6a9be4b3bc1"], "e0448d71-384e-42b8-aca6-f3178562118f": ["85d455ba-05f2-460d-8878-46ec6918cc22"], "04d2d62e-83de-4995-8153-ce0af568ec75": ["85d455ba-05f2-460d-8878-46ec6918cc22"], "885560e6-7f4a-4752-89f9-c84dc12acf3f": ["c38b6c24-292d-4971-8172-dd7c36cfb66c"], "03f49e5c-f36e-4b58-8cae-20a89d68b2da": ["c38b6c24-292d-4971-8172-dd7c36cfb66c"], "b4643d80-e959-47f7-b673-3d4689839a7e": ["51c6c338-472e-426c-bd5a-fd476cfdeb35"], "ca67f26d-92de-4bce-87f3-370cc5faedba": ["51c6c338-472e-426c-bd5a-fd476cfdeb35"], "9f27d0b5-867b-4d05-871a-7d61dc12130c": ["3427770a-025f-4495-8ccb-b1ee9cd1e5b7"], "a96e299e-26df-47ef-bb87-4ffc35cb6b7f": ["3427770a-025f-4495-8ccb-b1ee9cd1e5b7"], "7ac493bd-6bf1-427d-bbca-db6d53d83219": ["853c693f-b4e1-4c08-83af-4a7b9575c5ec"], "301c86d4-7287-407e-8dda-ad25c98e442e": ["853c693f-b4e1-4c08-83af-4a7b9575c5ec"], "c01ffeed-9f66-4136-9d19-599380e1b7c7": ["bf351a46-e459-468c-83a3-7e9b1626088d"], "d81d5866-53d3-4aed-8132-34df6540697b": ["bf351a46-e459-468c-83a3-7e9b1626088d"], "9c17690d-c6ff-420a-97af-14d59bc549f4": ["5f5869a7-9e59-4254-8971-bca6eeac6199"], "b4b4c895-6aca-4e42-a15f-fe0a9dce5b63": ["5f5869a7-9e59-4254-8971-bca6eeac6199"], "09545d65-f768-4f7d-8d29-62b014fdf9ba": ["39e6a277-d64c-4458-87d1-6c6b6a4becf1"], "0bc98a06-ac29-499f-b304-082e0c521d60": ["39e6a277-d64c-4458-87d1-6c6b6a4becf1"], "d98629a6-fb2d-4415-bf6a-17e3258f3863": ["b5ad9896-928c-4db3-9b24-4d963ed8e918"], "96799302-7763-4d0d-896a-11e086025194": ["b5ad9896-928c-4db3-9b24-4d963ed8e918"], "9858fb15-04eb-4a9d-9f74-f2f45b88b34d": ["df64e40b-abd1-4ebb-ae79-7ee9e71e37af"], "82034c0f-f611-465f-a5c5-21ed03c9293e": ["df64e40b-abd1-4ebb-ae79-7ee9e71e37af"], "281dc403-76e7-4f3c-aa0b-a60d5ab8cd87": ["a070996b-fa1b-47b4-bee7-647ec25011fb"], "f0fab32f-d48a-4811-a692-740d70eb2f8b": ["a070996b-fa1b-47b4-bee7-647ec25011fb"], "b6c60005-4c91-4742-8c5f-7016e00382b8": ["9ae97016-e775-4e05-8d3b-e4cccebe5b12"], "0c5cf060-e40f-485e-8448-87ae771dcf1f": ["9ae97016-e775-4e05-8d3b-e4cccebe5b12"], "3e858995-3034-417a-9d78-2e972e8b8e69": ["0b7be53e-8bd8-4361-9cb2-9ae68e856129"], "914dcfdf-3eeb-415a-8eeb-febd6b22f06e": ["0b7be53e-8bd8-4361-9cb2-9ae68e856129"], "adfb599f-f0fd-4ed6-b5a8-5e365d5a78ff": ["bbebd043-8735-4b24-90e2-8b70e0792866"], "25f97118-036a-4f63-a689-c6703a3c4838": ["bbebd043-8735-4b24-90e2-8b70e0792866"], "b175efdb-8114-4116-8377-6f66c7434de0": ["7bae16e8-f430-4445-8f0d-e2cadd85e159"], "012f1515-adb8-4761-af71-328201bba6e3": ["7bae16e8-f430-4445-8f0d-e2cadd85e159"], "2a96eedc-2a23-4d28-a823-b9cad4f4626e": ["717f441a-011a-4b46-826e-e461e8eb24b1"], "188ed718-5d78-400b-98c0-4f1823c3bab6": ["717f441a-011a-4b46-826e-e461e8eb24b1"], "6144957d-3198-406c-bc89-3d47f7ae7dd0": ["03ccd02e-4a65-4977-a9ef-dabf7212331b"], "193f95f3-4096-4491-b9c4-50cfe92444d8": ["03ccd02e-4a65-4977-a9ef-dabf7212331b"], "7cf03b92-77e3-429c-9606-21f5df7dee19": ["49963418-7afa-448d-ba3c-2d0de56531af"], "466d69d7-c2b4-4e4d-abc8-dab0f5f8b657": ["49963418-7afa-448d-ba3c-2d0de56531af"], "12b5ad69-5ed6-40ce-b403-845a25864d9a": ["99f9a95c-2768-4975-b196-71dd17eea1c3"], "34093abc-88c8-4408-8207-128266e2db07": ["99f9a95c-2768-4975-b196-71dd17eea1c3"], "be0f1b54-3fe3-441b-8bee-ff6d2dc6c7e7": ["308c7d5c-2c26-486b-8c14-60f0d0f33c5b"], "9075e472-5f10-450f-8a8c-a8e9f0f90814": ["308c7d5c-2c26-486b-8c14-60f0d0f33c5b"], "0ccfee15-101f-440e-beb2-347a59689a05": ["af954b8d-01ad-4b64-9420-6898d1d0dda3"], "0b7304b0-1bba-48de-9658-daa39002f429": ["af954b8d-01ad-4b64-9420-6898d1d0dda3"], "f45be964-99e4-4043-8941-aae13ec1b8a5": ["137ae50c-0c86-4b0c-8d52-a71e5adcbb49"], "6b1bd4b9-67fd-4002-bdb5-f69fe84fa1cf": ["137ae50c-0c86-4b0c-8d52-a71e5adcbb49"], "aa888de3-a9f1-4735-a5e1-7c24b293d1d8": ["3d9f5aad-a10a-4348-8d14-fe8bf0f738d3"], "6c73a242-fc5a-40d9-99bc-af8c562f40ea": ["3d9f5aad-a10a-4348-8d14-fe8bf0f738d3"], "317a2b04-3dd0-4822-b8f2-90403568f9f7": ["649f2e63-54f0-4433-8e9a-c8c1390fc7d5"], "ea9b0dd7-480b-4ec1-a1c0-d3c464d12fc0": ["649f2e63-54f0-4433-8e9a-c8c1390fc7d5"], "09392aa2-b7fe-4adf-a159-3fe7084f13b1": ["02cfb2d5-5b99-431b-b93e-0c3681d2c320"], "18bf2aaa-cb1f-409c-8fd9-6bcf2456f1a3": ["02cfb2d5-5b99-431b-b93e-0c3681d2c320"], "e7607a61-1311-469d-8e2f-ca9581bd7b1d": ["07d3ed66-b529-409c-90ed-1807dcf71cdf"], "ad4c5a02-d66f-4442-bc15-9a370f6fadbf": ["07d3ed66-b529-409c-90ed-1807dcf71cdf"], "745c2154-f72a-49f9-afee-8bb88c6dc084": ["b68c20ec-cf0b-4214-867d-6dd3c65f10de"], "f56fe53d-a0ca-4d2b-8801-6b29c7c05616": ["b68c20ec-cf0b-4214-867d-6dd3c65f10de"], "5a5f09e1-4db4-4bec-b66f-26aea545a865": ["7398e41e-5642-468e-8ab5-8d5727928add"], "6cca6fbf-99ee-40ab-8eb4-c5d62564b1eb": ["7398e41e-5642-468e-8ab5-8d5727928add"], "3d67b149-fa42-4eb3-a38b-3350d3e30d4a": ["e86716b2-d31d-4fb1-9958-8c2f5aba0eb1"], "63b32f04-c525-4390-bc12-827d6c431382": ["e86716b2-d31d-4fb1-9958-8c2f5aba0eb1"], "e3239ec3-b640-40ad-88d3-4b3bcf240c55": ["3a0de40a-1585-4ac8-8099-e2a793a3cb24"], "90d819a6-28cb-4090-be01-088ce1592cc9": ["3a0de40a-1585-4ac8-8099-e2a793a3cb24"], "0f301708-b991-4644-8931-57eed578aff4": ["e0895ecc-94e1-43ca-b344-9a54f02ecef6"], "289b9ed7-9a32-4104-b958-b244b326110f": ["e0895ecc-94e1-43ca-b344-9a54f02ecef6"], "48cf32e7-e55e-44e7-b306-33ff0c4edc65": ["263a9e12-05ae-48c4-ad83-3fe728b6061c"], "7b97ba20-10c7-40d1-9969-f2d5c5a2c97e": ["263a9e12-05ae-48c4-ad83-3fe728b6061c"], "db5271ff-b40b-40c9-a441-95c8fa95d0a3": ["078165cb-c00b-49b3-928a-e7d8880c4e54"], "5af2e1ba-2ee9-4315-bc21-8d9aac5f4b74": ["078165cb-c00b-49b3-928a-e7d8880c4e54"], "2b75d4c6-e0a6-4c9c-81aa-d51a2c7e5f1a": ["7bc3bb98-0fc6-4dfa-aaf2-ed9a455bdb3d"], "874926db-8636-454b-a952-879294929e2e": ["7bc3bb98-0fc6-4dfa-aaf2-ed9a455bdb3d"], "aa65f984-d04c-42d5-b971-24fd350cb8f0": ["3cb10444-80f9-4d71-bcc0-d0893d18c043"], "b7ecdda7-224f-4add-b680-4585cf9bacf7": ["3cb10444-80f9-4d71-bcc0-d0893d18c043"], "a91fe899-fcba-4d17-a00a-be6483eceaa7": ["e421afe2-66df-4500-bfb4-5aef35192aa0"], "1470ceee-8c5d-43ba-8693-7f86788cc1f3": ["e421afe2-66df-4500-bfb4-5aef35192aa0"], "672c9b26-9404-4229-84c2-47726f6fb4dd": ["e895a16b-6865-4697-89cf-1dcdfa04d39c"], "cd8efe96-4efd-44db-a8f6-4fa521c70544": ["e895a16b-6865-4697-89cf-1dcdfa04d39c"], "a7d536b0-9d74-43a8-8852-67faa286e9ed": ["ad88b9df-a8af-468c-86b2-d01950ff2d52"], "4aefddb0-a954-4039-badf-412e4bf9f55e": ["ad88b9df-a8af-468c-86b2-d01950ff2d52"], "eaea40b8-85c1-4bd8-a641-5bc83e404bba": ["4fb2b7f6-30aa-4866-b8e4-168189663932"], "3810428f-625c-4ec5-89b7-87b2ac9a2b2b": ["4fb2b7f6-30aa-4866-b8e4-168189663932"], "75d981dd-b780-4d18-8c98-7d863cdaa9c8": ["d67d51ff-6769-4880-907f-de867355ecc7"], "dc40a869-3329-47ae-817f-96cdba2aa5fe": ["d67d51ff-6769-4880-907f-de867355ecc7"], "5f07b55f-1f97-4427-8960-2ad6f9cde0ff": ["84a2336d-6482-4ad0-9bf2-663fa3f0207f"], "44f3ccaf-3870-4b80-86ba-782e5ef75b1d": ["84a2336d-6482-4ad0-9bf2-663fa3f0207f"], "f09fabfb-034d-4d25-b838-cf788d30be60": ["87d3e4fe-a3f3-46fb-b156-e1273f36a914"], "0932f9d1-d732-4b71-a209-b64eb1770a6b": ["87d3e4fe-a3f3-46fb-b156-e1273f36a914"], "6f88844b-e1d0-4f42-bd8f-c503b96bb4ef": ["8b21ae21-d15f-4201-9f96-9cdfc639dde1"], "37c21a0c-5e07-4345-9c04-ec2e97c357bd": ["8b21ae21-d15f-4201-9f96-9cdfc639dde1"], "e7956b00-334b-4394-b091-1fc7a61abb9b": ["cf311e54-a3c5-4675-9480-e369afdcba5a"], "bd64a3f3-c889-460b-9763-e90f2968ec82": ["cf311e54-a3c5-4675-9480-e369afdcba5a"], "ab1f7ff6-56f3-41a5-a9d6-2c0cbab7ae2f": ["6c8e0ce1-3b57-4297-8923-9b0c72eebae4"], "c8c2306d-1692-4f96-9d6a-f52d6def5063": ["6c8e0ce1-3b57-4297-8923-9b0c72eebae4"], "64c1a061-2efc-40a2-9dcd-f9f4f7571838": ["29e9b3f3-726f-4c6f-9223-c2005bae734e"], "220a077f-3b40-4954-a5fc-eb643f8c14b2": ["29e9b3f3-726f-4c6f-9223-c2005bae734e"]}, "corpus": {"bebdad0f-3bd7-4628-9395-133375e7d7a3": "Property Name Property value extensions.schema ./schema.graphql extensions.settings.fields[0].type schema.Auction\n\nReturning data from an action at runtime\n\nWhen responding to an action request from Flow you can add the return type in the JSON response as a field called return_value. The return_value object must match the return type defined in the extension. The return type used in our example must be an auction object, like the following:\n\njson\n{\n \"return_value\": {\n \"id\": \"auction1\",\n \"name\": \"My first auction\",\n \"status\": \"COMPLETE\",\n \"bids\": [\n {\n \"id\": \"bid1\",\n \"customerId\": \"gid://shopify/Customer/1\",\n \"amount\": 100.00\n },\n {\n \"id\": \"bid2\",\n \"customerId\": \"gid://shopify/Customer/2\",\n \"amount\": 103.11\n }\n ]\n }\n}", "60328d77-94e1-4efc-8463-0d5fe55d9e3f": "json\n{\n \"return_value\": {\n \"id\": \"auction1\",\n \"name\": \"My first auction\",\n \"status\": \"COMPLETE\",\n \"bids\": [\n {\n \"id\": \"bid1\",\n \"customerId\": \"gid://shopify/Customer/1\",\n \"amount\": 100.00\n },\n {\n \"id\": \"bid2\",\n \"customerId\": \"gid://shopify/Customer/2\",\n \"amount\": 103.11\n }\n ]\n }\n}\n\nIf a workflow is using a non-nullable field that's defined in the extension schema but is missing from the payload or there's a type mismatch between fields, then the action transiently fails.\n\nThe response size of the action must also be less than 50KB exceeding this limit will also result in a transient failure. Actions that transiently fail will be retried at increasing intervals for up to 24 hours.\n\nSending complex objects in a trigger at runtime", "81535f7a-0952-4a8e-af13-dca47503ae5a": "If a workflow is using a non-nullable field that's defined in the extension schema but is missing from the payload or there's a type mismatch between fields, then the action transiently fails.\n\nThe response size of the action must also be less than 50KB exceeding this limit will also result in a transient failure. Actions that transiently fail will be retried at increasing intervals for up to 24 hours.\n\nSending complex objects in a trigger at runtime\n\nWhen you execute the flowTriggerReceive mutation with one or more complex object fields, the payload must include a JSON representation of the complex object(s) matching the schema. For example, if the trigger has a field with key Winning Bid of type Bid, then the payload should include the following structure:\n\njson\n\"payload\": {\n \"Winning Bid\": {\n \"id\": \"bid1\",\n \"customerId\": \"gid://shopify/Customer/1\",\n \"amount\": 100.00\n }\n}", "e8b1e96a-60ec-4ff5-877c-b11a5496b354": "This guide explains how to configure your app to receive trigger lifecycle callbacks from Shopify Flow.\n\nWhen creating a trigger, configuring a lifecycle callback enables your app to receive notifications from Shopify Flow about stores using the trigger and communicate changes in workflow status (e.g., enabling or disabling a workflow) back to the app. This helps optimize app performance by ensuring that trigger-related operations are only performed for stores that actually need them.\n\nApps must be properly configured to respond to trigger lifecycle callbacks. When a merchant attempts to enable a workflow that uses the trigger, Shopify Flow sends a lifecycle callback to the app's web server. If it doesn't promptly receive a response or receives a response with an HTTP status code that isn't 2xx, then the merchant can't enable the workflow and make use of the trigger.", "4a0cba38-6e2e-4a1f-91a9-b38127b20935": "Apps must be properly configured to respond to trigger lifecycle callbacks. When a merchant attempts to enable a workflow that uses the trigger, Shopify Flow sends a lifecycle callback to the app's web server. If it doesn't promptly receive a response or receives a response with an HTTP status code that isn't 2xx, then the merchant can't enable the workflow and make use of the trigger.\n\nNote:\nLegacy trigger discovery webhook extensions created using the Partner Dashboard are deprecated and must migrate to the CLI before they can be edited.\n\nHow trigger lifecycle callbacks work\n\nTrigger lifecycle callbacks contain identifying information about the trigger and the store using it and indicate whether the trigger is being used. You can use this information to track the stores that are currently using your triggers and then send trigger requests to only those stores.\n\nProperties", "fae32e4c-6f9c-4914-89ca-0f289b020c45": "Note:\nLegacy trigger discovery webhook extensions created using the Partner Dashboard are deprecated and must migrate to the CLI before they can be edited.\n\nHow trigger lifecycle callbacks work\n\nTrigger lifecycle callbacks contain identifying information about the trigger and the store using it and indicate whether the trigger is being used. You can use this information to track the stores that are currently using your triggers and then send trigger requests to only those stores.\n\nProperties\n\nThe trigger lifecycle callback (HTTP POST request) is formatted in JSON and it contains the following properties:", "054ad566-0e3e-4592-adcf-0e6372ae044d": "Property Data type Description Example flow_trigger_definition_id String The unique identifier for your Shopify Flow trigger. Add row to spreadsheet has_enabled_flow Boolean Whether the store has an enabled workflow that uses your trigger. Valid values: true : There is at least one workflow that is enabled and that uses your trigger. false : There are no enabled workflows that use your trigger. true shop_id Number The unique identifier for the Shopify store. 690933842 shopify_domain String The myshopify domain of the Shopify store. johnsapparel.myshopify.com timestamp ISO 8601 date and timestamp The time when the notification was created. Notifications with newer timestamps should take precedence. If you already have a timestamp in your datastore and you receive a newer timestamp, then overwrite this payload's information in your datastore. Conversely, if you receive a timestamp that is older than the information in your datastore, then ignore this payload. 2019-01-25T16:44:10.999Z", "d5c2ae5c-dfac-43a3-bc53-bd8dff6f68ef": "The following is an example body of a usage notification (HTTP POST) request:\n\njson\n{\n \"flow_trigger_definition_id\": \"Add row to spreadsheet\",\n \"has_enabled_flow\": false,\n \"shop_id\": \"690933842\",\n \"shopify_domain\": \"johnapparel.myshopify.com\",\n \"timestamp\": \"2019-01-25T16:44:10.999Z\"\n}\n\nCallback events\n\nShopify Flow sends trigger lifecycle callbacks when the following events occur:\n\nWhen a merchant activates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": true.\n\nWhen a merchant deactivates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": false.\n\nWeb server response time and status codes", "543754e3-8847-4811-a022-d0ab36da9f02": "Callback events\n\nShopify Flow sends trigger lifecycle callbacks when the following events occur:\n\nWhen a merchant activates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": true.\n\nWhen a merchant deactivates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": false.\n\nWeb server response time and status codes\n\nWhen a merchant tries to enable a workflow that uses your trigger, Shopify Flow sends a trigger lifecycle callback to your web server. If your web server doesn't respond within five seconds, or if it responds with a different status code, then the merchant can't enable that workflow. The merchant receives a notification in the Shopify Flow app that tells them to try enabling the workflow at a later time.\n\n1. Configure your web server\n\nTo begin, configure your web server to listen for Shopify Flow callbacks.\n\nConfigure a URL in your web server to listen for the trigger lifecycle callbacks from Shopify Flow.", "f6f2fe3b-0422-4c4c-95cf-f97465290ec6": "1. Configure your web server\n\nTo begin, configure your web server to listen for Shopify Flow callbacks.\n\nConfigure a URL in your web server to listen for the trigger lifecycle callbacks from Shopify Flow.\n\nConfigure your web server to verify the HMAC header in the trigger lifecycle callback with your client secret.\nThe HMAC header is located in the following HTTP header: x-shopify-hmac-sha256. If you are using a Ruby-based web framework, then the header is http-x-shopify-hmac-sha256.\n\nConfigure your web server to respond within 5 seconds when it receives a trigger lifecycle callback.\n\n2. Process and store callback data\n\nAfter you've added support to listen for Shopify Flow callbacks, you can configure your web server to process and store the callback data.\n\nSave the list of stores that are using your triggers in a persistent datastore. Use the timestamp property to make sure that you don't overwrite an existing entry with older information.", "97fa4e99-25be-4a89-ab25-f9b9975d929c": "Configure your web server to respond within 5 seconds when it receives a trigger lifecycle callback.\n\n2. Process and store callback data\n\nAfter you've added support to listen for Shopify Flow callbacks, you can configure your web server to process and store the callback data.\n\nSave the list of stores that are using your triggers in a persistent datastore. Use the timestamp property to make sure that you don't overwrite an existing entry with older information.\n\nEdit your application to send your triggers only to stores that are using your triggers.\n\n3. Configure the callback\n\nFinally, configure the callback in the CLI:\n\nRun shopify app generate extension.\n\nSelect Flow trigger lifecycle callback.\n\nChange the URL in the generated TOML to the URL configured on the web server.\n\nRun shopify app deploy.\n\nNext steps\n\nFamiliarize yourself with Shopify Flow and learn about building connectors.\n\nConnect your app to Shopify Flow so that events that occur in your app can trigger workflows.", "97fd086a-290a-49aa-8376-4da9163454de": "3. Configure the callback\n\nFinally, configure the callback in the CLI:\n\nRun shopify app generate extension.\n\nSelect Flow trigger lifecycle callback.\n\nChange the URL in the generated TOML to the URL configured on the web server.\n\nRun shopify app deploy.\n\nNext steps\n\nFamiliarize yourself with Shopify Flow and learn about building connectors.\n\nConnect your app to Shopify Flow so that events that occur in your app can trigger workflows.\n\nConnect your app to Shopify Flow so that your app receives data and information when a workflow action runs."}}
|
fine_tune_embeddings.py
CHANGED
@@ -0,0 +1,216 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# this file is a WIP and an attempt to locally recreate https://colab.research.google.com/drive/1-h3rPUzV-j9VzD9Rg7ZLGKEp-jMNFaje?usp=sharing
|
2 |
+
# this script is not working as expected, it is not able to load the training data from the file
|
3 |
+
|
4 |
+
import uuid
|
5 |
+
import tqdm
|
6 |
+
import json
|
7 |
+
import asyncio
|
8 |
+
from pathlib import Path
|
9 |
+
from dotenv import load_dotenv
|
10 |
+
|
11 |
+
from langchain_openai import ChatOpenAI
|
12 |
+
from langchain_core.prompts import ChatPromptTemplate
|
13 |
+
from langchain_community.document_loaders import DirectoryLoader
|
14 |
+
from langchain_community.document_loaders import UnstructuredMarkdownLoader
|
15 |
+
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
16 |
+
|
17 |
+
CHUNK_SIZE = 1000
|
18 |
+
CHUNK_OVERLAP = CHUNK_SIZE // 2
|
19 |
+
|
20 |
+
QA_PROMPT = """\
|
21 |
+
Given the following context, you must generate questions based on only the provided context.
|
22 |
+
|
23 |
+
You are to generate {n_questions} questions which should be provided in the following format:
|
24 |
+
|
25 |
+
1. QUESTION #1
|
26 |
+
2. QUESTION #2
|
27 |
+
...
|
28 |
+
|
29 |
+
Context:
|
30 |
+
{context}
|
31 |
+
"""
|
32 |
+
|
33 |
+
fine_tuning_data_filepath = Path("data/finetuning")
|
34 |
+
fine_tuning_data_filepath.mkdir(parents=True, exist_ok=True)
|
35 |
+
|
36 |
+
async def create_questions(documents, n_questions, question_generation_chain):
|
37 |
+
questions = {}
|
38 |
+
relevant_docs = {}
|
39 |
+
|
40 |
+
for document in tqdm.tqdm(documents):
|
41 |
+
context = document.page_content
|
42 |
+
|
43 |
+
# get questions by invoking the question generation chain
|
44 |
+
response = await question_generation_chain.ainvoke(
|
45 |
+
{"context": context, "n_questions": n_questions}
|
46 |
+
)
|
47 |
+
|
48 |
+
# split the response into two questions
|
49 |
+
[question1, question2] = response.content.split("\n")
|
50 |
+
|
51 |
+
# generate a unique id for the first question
|
52 |
+
id1 = str(uuid.uuid4())
|
53 |
+
while id1 in questions:
|
54 |
+
id1 = str(uuid.uuid4())
|
55 |
+
# store the first question
|
56 |
+
questions[id1] = question1[2:].strip()
|
57 |
+
|
58 |
+
# generate a unique id for the second question
|
59 |
+
id2 = str(uuid.uuid4())
|
60 |
+
while id2 in questions:
|
61 |
+
id2 = str(uuid.uuid4())
|
62 |
+
# store the second question
|
63 |
+
questions[id2] = question2[2:].strip()
|
64 |
+
|
65 |
+
# Store the relevant doc for each questions
|
66 |
+
relevant_docs[id1] = [document.metadata["id"]]
|
67 |
+
relevant_docs[id2] = [document.metadata["id"]]
|
68 |
+
|
69 |
+
return questions, relevant_docs
|
70 |
+
|
71 |
+
async def main():
|
72 |
+
path = "data/scraped/clean"
|
73 |
+
text_loader = DirectoryLoader(path, glob="*.txt", loader_cls=UnstructuredMarkdownLoader)
|
74 |
+
text_splitter = RecursiveCharacterTextSplitter(
|
75 |
+
chunk_size = CHUNK_SIZE,
|
76 |
+
chunk_overlap = CHUNK_OVERLAP,
|
77 |
+
length_function = len
|
78 |
+
)
|
79 |
+
training_documents = text_splitter.split_documents(text_loader.load())
|
80 |
+
|
81 |
+
# Add unique id to each document
|
82 |
+
id_set = set()
|
83 |
+
for document in training_documents:
|
84 |
+
id = str(uuid.uuid4())
|
85 |
+
while id in id_set:
|
86 |
+
id = uuid.uuid4()
|
87 |
+
id_set.add(id)
|
88 |
+
document.metadata["id"] = id
|
89 |
+
|
90 |
+
TRAINING_DOC_LENGTH = len(training_documents)
|
91 |
+
BREAK1 = TRAINING_DOC_LENGTH - 24
|
92 |
+
BREAK2 = TRAINING_DOC_LENGTH - 12
|
93 |
+
|
94 |
+
training_split_documents = training_documents[:TRAINING_DOC_LENGTH - 24]
|
95 |
+
eval_split_documents = training_documents[BREAK1:BREAK2]
|
96 |
+
test_split_documents = training_documents[BREAK2:]
|
97 |
+
|
98 |
+
qa_chat_model = ChatOpenAI(
|
99 |
+
model="gpt-4o-mini",
|
100 |
+
temperature=0
|
101 |
+
)
|
102 |
+
|
103 |
+
qa_prompt_template = ChatPromptTemplate.from_template(QA_PROMPT)
|
104 |
+
question_generation_chain = qa_prompt_template | qa_chat_model
|
105 |
+
|
106 |
+
# try to load training data from file otherwise generate new data
|
107 |
+
try:
|
108 |
+
training_dataset = json.load(open(fine_tuning_data_filepath / "training_dataset.jsonl"))
|
109 |
+
training_questions = training_dataset["questions"]
|
110 |
+
training_relevant_contexts = training_dataset["relevant_contexts"]
|
111 |
+
training_corpus = training_dataset["corpus"]
|
112 |
+
except:
|
113 |
+
training_questions, training_relevant_contexts = await create_questions(training_split_documents, 2, question_generation_chain)
|
114 |
+
training_corpus = {test_item.metadata["id"] : test_item.page_content for test_item in test_split_documents}
|
115 |
+
training_dataset = {
|
116 |
+
"questions" : training_questions,
|
117 |
+
"relevant_contexts" : training_relevant_contexts,
|
118 |
+
"corpus" : training_corpus
|
119 |
+
}
|
120 |
+
with open(fine_tuning_data_filepath /"training_dataset.jsonl", "w") as f:
|
121 |
+
json.dump(training_dataset, f)
|
122 |
+
|
123 |
+
# try to load eval data from file otherwise generate new data
|
124 |
+
try:
|
125 |
+
eval_dataset = json.load(open(fine_tuning_data_filepath / "eval_dataset.jsonl"))
|
126 |
+
eval_questions = eval_dataset["questions"]
|
127 |
+
eval_relevant_contexts = eval_dataset["relevant_contexts"]
|
128 |
+
eval_corpus = eval_dataset["corpus"]
|
129 |
+
except:
|
130 |
+
eval_questions, eval_relevant_contexts = await create_questions(eval_split_documents, 2, question_generation_chain)
|
131 |
+
eval_corpus = {eval_item.metadata["id"] : eval_item.page_content for eval_item in eval_split_documents}
|
132 |
+
eval_dataset = {
|
133 |
+
"questions" : eval_questions,
|
134 |
+
"relevant_contexts" : eval_relevant_contexts,
|
135 |
+
"corpus" : eval_corpus,
|
136 |
+
}
|
137 |
+
with open(fine_tuning_data_filepath /"eval_dataset.jsonl", "w") as f:
|
138 |
+
json.dump(eval_dataset, f)
|
139 |
+
|
140 |
+
# try to load test data from file otherwise generate new data
|
141 |
+
try:
|
142 |
+
test_dataset = json.load(open(fine_tuning_data_filepath / "test_dataset.jsonl"))
|
143 |
+
test_questions = test_dataset["questions"]
|
144 |
+
test_relevant_contexts = test_dataset["relevant_contexts"]
|
145 |
+
test_corpus = test_dataset["corpus"]
|
146 |
+
except:
|
147 |
+
test_questions, test_relevant_contexts = await create_questions(test_split_documents, 2, question_generation_chain)
|
148 |
+
test_corpus = {test_item.metadata["id"] : test_item.page_content for test_item in test_split_documents}
|
149 |
+
test_dataset = {
|
150 |
+
"questions" : test_questions,
|
151 |
+
"relevant_contexts" : test_relevant_contexts,
|
152 |
+
"corpus" : test_corpus,
|
153 |
+
}
|
154 |
+
with open(fine_tuning_data_filepath /"test_dataset.jsonl", "w") as f:
|
155 |
+
json.dump(test_dataset, f)
|
156 |
+
|
157 |
+
import wandb
|
158 |
+
from torch.utils.data import DataLoader
|
159 |
+
from sentence_transformers import InputExample, SentenceTransformer
|
160 |
+
from sentence_transformers.losses import MatryoshkaLoss, MultipleNegativesRankingLoss
|
161 |
+
from sentence_transformers.evaluation import InformationRetrievalEvaluator
|
162 |
+
from huggingface_hub import notebook_login
|
163 |
+
|
164 |
+
BATCH_SIZE = 10
|
165 |
+
MODEL_ID = "Snowflake/snowflake-arctic-embed-l"
|
166 |
+
|
167 |
+
model = SentenceTransformer(MODEL_ID)
|
168 |
+
wandb.init(mode="disabled")
|
169 |
+
|
170 |
+
corpus = training_dataset['corpus']
|
171 |
+
queries = training_dataset['questions']
|
172 |
+
relevant_docs = training_dataset['relevant_contexts']
|
173 |
+
|
174 |
+
examples = []
|
175 |
+
for query_id, query in queries.items():
|
176 |
+
doc_id = relevant_docs[query_id][0]
|
177 |
+
text = corpus[doc_id]
|
178 |
+
example = InputExample(texts=[query, text])
|
179 |
+
examples.append(example)
|
180 |
+
|
181 |
+
loader = DataLoader(
|
182 |
+
examples, batch_size=BATCH_SIZE
|
183 |
+
)
|
184 |
+
|
185 |
+
matryoshka_dimensions = [768, 512, 256, 128, 64]
|
186 |
+
inner_train_loss = MultipleNegativesRankingLoss(model)
|
187 |
+
train_loss = MatryoshkaLoss(
|
188 |
+
model, inner_train_loss, matryoshka_dims=matryoshka_dimensions
|
189 |
+
)
|
190 |
+
|
191 |
+
evaluator = InformationRetrievalEvaluator(queries, corpus, relevant_docs)
|
192 |
+
|
193 |
+
EPOCHS = 10
|
194 |
+
warmup_steps = int(len(loader) * EPOCHS * 0.1)
|
195 |
+
|
196 |
+
model.fit(
|
197 |
+
train_objectives=[(loader, train_loss)],
|
198 |
+
epochs=EPOCHS,
|
199 |
+
warmup_steps=warmup_steps,
|
200 |
+
output_path='AIE5-MidTerm-finetuned-embeddings',
|
201 |
+
show_progress_bar=True,
|
202 |
+
evaluator=evaluator,
|
203 |
+
evaluation_steps=50
|
204 |
+
)
|
205 |
+
|
206 |
+
notebook_login()
|
207 |
+
hf_username = "thomfoolery"
|
208 |
+
model.push_to_hub(f"{hf_username}/AIE5-MidTerm-finetuned-embeddings")
|
209 |
+
|
210 |
+
|
211 |
+
|
212 |
+
|
213 |
+
|
214 |
+
if __name__ == "__main__":
|
215 |
+
load_dotenv()
|
216 |
+
asyncio.run(main())
|
pyproject.toml
CHANGED
@@ -25,4 +25,12 @@ dependencies = [
|
|
25 |
"ragas>=0.2.13",
|
26 |
"langchain-huggingface>=0.1.2",
|
27 |
"langchain-text-splitters>=0.3.6",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
]
|
|
|
25 |
"ragas>=0.2.13",
|
26 |
"langchain-huggingface>=0.1.2",
|
27 |
"langchain-text-splitters>=0.3.6",
|
28 |
+
"markdown>=3.7",
|
29 |
+
"faiss-cpu>=1.10.0",
|
30 |
+
"python-pptx==1.0.2",
|
31 |
+
"nltk==3.9.1",
|
32 |
+
"pymupdf>=1.25.3",
|
33 |
+
"sentence-transformers>=3.4.1",
|
34 |
+
"datasets>=3.3.2",
|
35 |
+
"wandb>=0.19.7",
|
36 |
]
|
test_dataset.jsonl
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"questions": {"864a141a-0ac7-4a6d-990c-428456bb06d7": "What is the purpose of the return_value field in the JSON response when responding to an action request from Flow?", "e116a33d-a0dd-41d5-98df-76b99d6304dd": "What type of object must the return_value match according to the extension definition in the provided context?", "bac7b3d0-90a5-495b-bad0-14c004ae5eb5": "What is the status of the auction with ID \"auction1\"?", "1d9ef97b-f0d5-496c-b36f-c96545358e52": "How many bids are associated with the auction named \"My first auction\"?", "f2adcc67-c72d-4a20-9f25-6a76773cc3e9": "What happens if a workflow uses a non-nullable field that is missing from the payload?", "30c9a1a4-b78a-4a6f-bdcf-83490dc816f3": "What is the maximum response size allowed for an action before it results in a transient failure?", "2b0b7192-0a4e-4a48-a092-194e02e51100": "What is the purpose of configuring a lifecycle callback for triggers in Shopify Flow?", "e881ba0a-4f8c-43b7-a0d1-472ff74cb14f": "What happens if an app does not respond promptly to a lifecycle callback from Shopify Flow?", "d99e7de7-5854-40ab-892f-f4e0ca85957a": "What happens if a merchant tries to enable a workflow that uses a trigger but the app does not respond promptly to the lifecycle callback?", "a103ae44-921b-4f5d-9ca7-6f0afa58e8dc": "Why is it important for apps to be properly configured to respond to trigger lifecycle callbacks in Shopify Flow?", "7530d038-6bc7-4313-bc78-7acd1bc4bf8f": "What must be done with legacy trigger discovery webhook extensions created using the Partner Dashboard before they can be edited?", "64ae465e-a504-4dcf-80f0-cf857a3d7237": "What information do trigger lifecycle callbacks provide regarding the triggers and the stores using them?", "4fb25f86-874d-4840-a8b7-4a4124e30fbb": "What is the purpose of the `flow_trigger_definition_id` in the context of Shopify Flow?", "1b441d1f-a388-4910-87f5-6a0d50e20da2": "How should notifications with timestamps be handled in relation to existing data in the datastore?", "a81cf3a4-1857-49a8-be79-9785e568d161": "What does the \"has_enabled_flow\" field indicate in the usage notification request?", "754be3fd-6938-4233-9bc6-6567a9e9799c": "When does Shopify Flow send a callback with \"has_enabled_flow\" set to true?", "dc9eff43-f153-4311-9c9e-b7d0dc6d5266": "What information does the callback contain when a merchant activates a workflow that uses a trigger in Shopify Flow?", "d86a647a-2f52-4c96-92d5-4a38a0fbfb92": "What happens if a merchant's web server does not respond within five seconds when trying to enable a workflow?", "76ab2241-80a1-4788-bbec-638371b3a355": "What should you configure your web server to listen for in relation to Shopify Flow?", "cd697859-e36f-489b-8b1d-41c78c55f163": "How can you ensure that you do not overwrite existing entries in your datastore when processing callback data?", "f3443400-4ffc-4172-b263-7d684d4314ed": "What is the maximum response time configured for the web server when it receives a trigger lifecycle callback?", "386e2b71-4766-471e-a476-78ff464c0fd6": "How should the application be edited to ensure triggers are sent only to stores that are using them?", "ae92335e-d45e-4475-8a4e-1f55af6ff51f": "What command should be run in the CLI to generate the extension for the callback configuration?", "f2fc614c-4c6a-4f49-b818-935cb6bfbb59": "What should be changed in the generated TOML after selecting the Flow trigger lifecycle callback?"}, "relevant_contexts": {"864a141a-0ac7-4a6d-990c-428456bb06d7": ["3294cf48-20f1-4142-94c2-498fef670bc7"], "e116a33d-a0dd-41d5-98df-76b99d6304dd": ["3294cf48-20f1-4142-94c2-498fef670bc7"], "bac7b3d0-90a5-495b-bad0-14c004ae5eb5": ["10fe08d0-41eb-460b-b0f7-cc2484ce6dce"], "1d9ef97b-f0d5-496c-b36f-c96545358e52": ["10fe08d0-41eb-460b-b0f7-cc2484ce6dce"], "f2adcc67-c72d-4a20-9f25-6a76773cc3e9": ["d87ebf50-4c6c-458f-8cbc-553738d29359"], "30c9a1a4-b78a-4a6f-bdcf-83490dc816f3": ["d87ebf50-4c6c-458f-8cbc-553738d29359"], "2b0b7192-0a4e-4a48-a092-194e02e51100": ["9b1092d4-6d89-4e1b-8e11-4c33ae1b056c"], "e881ba0a-4f8c-43b7-a0d1-472ff74cb14f": ["9b1092d4-6d89-4e1b-8e11-4c33ae1b056c"], "d99e7de7-5854-40ab-892f-f4e0ca85957a": ["12e2a96b-760c-45c6-8ac7-a8ebee7a38bb"], "a103ae44-921b-4f5d-9ca7-6f0afa58e8dc": ["12e2a96b-760c-45c6-8ac7-a8ebee7a38bb"], "7530d038-6bc7-4313-bc78-7acd1bc4bf8f": ["4ea67b9a-2f86-47df-bb22-9ac690cc54fa"], "64ae465e-a504-4dcf-80f0-cf857a3d7237": ["4ea67b9a-2f86-47df-bb22-9ac690cc54fa"], "4fb25f86-874d-4840-a8b7-4a4124e30fbb": ["88845e78-2f9f-42c9-956f-ad88c3479d04"], "1b441d1f-a388-4910-87f5-6a0d50e20da2": ["88845e78-2f9f-42c9-956f-ad88c3479d04"], "a81cf3a4-1857-49a8-be79-9785e568d161": ["49a9d1b4-d86e-4f59-9de3-b9b8823fa236"], "754be3fd-6938-4233-9bc6-6567a9e9799c": ["49a9d1b4-d86e-4f59-9de3-b9b8823fa236"], "dc9eff43-f153-4311-9c9e-b7d0dc6d5266": ["64195474-f858-4a25-ab38-adf3732d7e0f"], "d86a647a-2f52-4c96-92d5-4a38a0fbfb92": ["64195474-f858-4a25-ab38-adf3732d7e0f"], "76ab2241-80a1-4788-bbec-638371b3a355": ["45403ac5-a5e8-4bda-80ba-58b3bb13edbf"], "cd697859-e36f-489b-8b1d-41c78c55f163": ["45403ac5-a5e8-4bda-80ba-58b3bb13edbf"], "f3443400-4ffc-4172-b263-7d684d4314ed": ["4be0f2b4-b6f4-415b-af9b-8018d8fb748b"], "386e2b71-4766-471e-a476-78ff464c0fd6": ["4be0f2b4-b6f4-415b-af9b-8018d8fb748b"], "ae92335e-d45e-4475-8a4e-1f55af6ff51f": ["b04d631d-ccf4-4367-8ede-fbbafc419dda"], "f2fc614c-4c6a-4f49-b818-935cb6bfbb59": ["b04d631d-ccf4-4367-8ede-fbbafc419dda"]}, "corpus": {"3294cf48-20f1-4142-94c2-498fef670bc7": "Property Name Property value extensions.schema ./schema.graphql extensions.settings.fields[0].type schema.Auction\n\nReturning data from an action at runtime\n\nWhen responding to an action request from Flow you can add the return type in the JSON response as a field called return_value. The return_value object must match the return type defined in the extension. The return type used in our example must be an auction object, like the following:\n\njson\n{\n \"return_value\": {\n \"id\": \"auction1\",\n \"name\": \"My first auction\",\n \"status\": \"COMPLETE\",\n \"bids\": [\n {\n \"id\": \"bid1\",\n \"customerId\": \"gid://shopify/Customer/1\",\n \"amount\": 100.00\n },\n {\n \"id\": \"bid2\",\n \"customerId\": \"gid://shopify/Customer/2\",\n \"amount\": 103.11\n }\n ]\n }\n}", "10fe08d0-41eb-460b-b0f7-cc2484ce6dce": "json\n{\n \"return_value\": {\n \"id\": \"auction1\",\n \"name\": \"My first auction\",\n \"status\": \"COMPLETE\",\n \"bids\": [\n {\n \"id\": \"bid1\",\n \"customerId\": \"gid://shopify/Customer/1\",\n \"amount\": 100.00\n },\n {\n \"id\": \"bid2\",\n \"customerId\": \"gid://shopify/Customer/2\",\n \"amount\": 103.11\n }\n ]\n }\n}\n\nIf a workflow is using a non-nullable field that's defined in the extension schema but is missing from the payload or there's a type mismatch between fields, then the action transiently fails.\n\nThe response size of the action must also be less than 50KB exceeding this limit will also result in a transient failure. Actions that transiently fail will be retried at increasing intervals for up to 24 hours.\n\nSending complex objects in a trigger at runtime", "d87ebf50-4c6c-458f-8cbc-553738d29359": "If a workflow is using a non-nullable field that's defined in the extension schema but is missing from the payload or there's a type mismatch between fields, then the action transiently fails.\n\nThe response size of the action must also be less than 50KB exceeding this limit will also result in a transient failure. Actions that transiently fail will be retried at increasing intervals for up to 24 hours.\n\nSending complex objects in a trigger at runtime\n\nWhen you execute the flowTriggerReceive mutation with one or more complex object fields, the payload must include a JSON representation of the complex object(s) matching the schema. For example, if the trigger has a field with key Winning Bid of type Bid, then the payload should include the following structure:\n\njson\n\"payload\": {\n \"Winning Bid\": {\n \"id\": \"bid1\",\n \"customerId\": \"gid://shopify/Customer/1\",\n \"amount\": 100.00\n }\n}", "9b1092d4-6d89-4e1b-8e11-4c33ae1b056c": "This guide explains how to configure your app to receive trigger lifecycle callbacks from Shopify Flow.\n\nWhen creating a trigger, configuring a lifecycle callback enables your app to receive notifications from Shopify Flow about stores using the trigger and communicate changes in workflow status (e.g., enabling or disabling a workflow) back to the app. This helps optimize app performance by ensuring that trigger-related operations are only performed for stores that actually need them.\n\nApps must be properly configured to respond to trigger lifecycle callbacks. When a merchant attempts to enable a workflow that uses the trigger, Shopify Flow sends a lifecycle callback to the app's web server. If it doesn't promptly receive a response or receives a response with an HTTP status code that isn't 2xx, then the merchant can't enable the workflow and make use of the trigger.", "12e2a96b-760c-45c6-8ac7-a8ebee7a38bb": "Apps must be properly configured to respond to trigger lifecycle callbacks. When a merchant attempts to enable a workflow that uses the trigger, Shopify Flow sends a lifecycle callback to the app's web server. If it doesn't promptly receive a response or receives a response with an HTTP status code that isn't 2xx, then the merchant can't enable the workflow and make use of the trigger.\n\nNote:\nLegacy trigger discovery webhook extensions created using the Partner Dashboard are deprecated and must migrate to the CLI before they can be edited.\n\nHow trigger lifecycle callbacks work\n\nTrigger lifecycle callbacks contain identifying information about the trigger and the store using it and indicate whether the trigger is being used. You can use this information to track the stores that are currently using your triggers and then send trigger requests to only those stores.\n\nProperties", "4ea67b9a-2f86-47df-bb22-9ac690cc54fa": "Note:\nLegacy trigger discovery webhook extensions created using the Partner Dashboard are deprecated and must migrate to the CLI before they can be edited.\n\nHow trigger lifecycle callbacks work\n\nTrigger lifecycle callbacks contain identifying information about the trigger and the store using it and indicate whether the trigger is being used. You can use this information to track the stores that are currently using your triggers and then send trigger requests to only those stores.\n\nProperties\n\nThe trigger lifecycle callback (HTTP POST request) is formatted in JSON and it contains the following properties:", "88845e78-2f9f-42c9-956f-ad88c3479d04": "Property Data type Description Example flow_trigger_definition_id String The unique identifier for your Shopify Flow trigger. Add row to spreadsheet has_enabled_flow Boolean Whether the store has an enabled workflow that uses your trigger. Valid values: true : There is at least one workflow that is enabled and that uses your trigger. false : There are no enabled workflows that use your trigger. true shop_id Number The unique identifier for the Shopify store. 690933842 shopify_domain String The myshopify domain of the Shopify store. johnsapparel.myshopify.com timestamp ISO 8601 date and timestamp The time when the notification was created. Notifications with newer timestamps should take precedence. If you already have a timestamp in your datastore and you receive a newer timestamp, then overwrite this payload's information in your datastore. Conversely, if you receive a timestamp that is older than the information in your datastore, then ignore this payload. 2019-01-25T16:44:10.999Z", "49a9d1b4-d86e-4f59-9de3-b9b8823fa236": "The following is an example body of a usage notification (HTTP POST) request:\n\njson\n{\n \"flow_trigger_definition_id\": \"Add row to spreadsheet\",\n \"has_enabled_flow\": false,\n \"shop_id\": \"690933842\",\n \"shopify_domain\": \"johnapparel.myshopify.com\",\n \"timestamp\": \"2019-01-25T16:44:10.999Z\"\n}\n\nCallback events\n\nShopify Flow sends trigger lifecycle callbacks when the following events occur:\n\nWhen a merchant activates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": true.\n\nWhen a merchant deactivates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": false.\n\nWeb server response time and status codes", "64195474-f858-4a25-ab38-adf3732d7e0f": "Callback events\n\nShopify Flow sends trigger lifecycle callbacks when the following events occur:\n\nWhen a merchant activates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": true.\n\nWhen a merchant deactivates a workflow that uses your trigger, the callback contains \"has_enabled_flow\": false.\n\nWeb server response time and status codes\n\nWhen a merchant tries to enable a workflow that uses your trigger, Shopify Flow sends a trigger lifecycle callback to your web server. If your web server doesn't respond within five seconds, or if it responds with a different status code, then the merchant can't enable that workflow. The merchant receives a notification in the Shopify Flow app that tells them to try enabling the workflow at a later time.\n\n1. Configure your web server\n\nTo begin, configure your web server to listen for Shopify Flow callbacks.\n\nConfigure a URL in your web server to listen for the trigger lifecycle callbacks from Shopify Flow.", "45403ac5-a5e8-4bda-80ba-58b3bb13edbf": "1. Configure your web server\n\nTo begin, configure your web server to listen for Shopify Flow callbacks.\n\nConfigure a URL in your web server to listen for the trigger lifecycle callbacks from Shopify Flow.\n\nConfigure your web server to verify the HMAC header in the trigger lifecycle callback with your client secret.\nThe HMAC header is located in the following HTTP header: x-shopify-hmac-sha256. If you are using a Ruby-based web framework, then the header is http-x-shopify-hmac-sha256.\n\nConfigure your web server to respond within 5 seconds when it receives a trigger lifecycle callback.\n\n2. Process and store callback data\n\nAfter you've added support to listen for Shopify Flow callbacks, you can configure your web server to process and store the callback data.\n\nSave the list of stores that are using your triggers in a persistent datastore. Use the timestamp property to make sure that you don't overwrite an existing entry with older information.", "4be0f2b4-b6f4-415b-af9b-8018d8fb748b": "Configure your web server to respond within 5 seconds when it receives a trigger lifecycle callback.\n\n2. Process and store callback data\n\nAfter you've added support to listen for Shopify Flow callbacks, you can configure your web server to process and store the callback data.\n\nSave the list of stores that are using your triggers in a persistent datastore. Use the timestamp property to make sure that you don't overwrite an existing entry with older information.\n\nEdit your application to send your triggers only to stores that are using your triggers.\n\n3. Configure the callback\n\nFinally, configure the callback in the CLI:\n\nRun shopify app generate extension.\n\nSelect Flow trigger lifecycle callback.\n\nChange the URL in the generated TOML to the URL configured on the web server.\n\nRun shopify app deploy.\n\nNext steps\n\nFamiliarize yourself with Shopify Flow and learn about building connectors.\n\nConnect your app to Shopify Flow so that events that occur in your app can trigger workflows.", "b04d631d-ccf4-4367-8ede-fbbafc419dda": "3. Configure the callback\n\nFinally, configure the callback in the CLI:\n\nRun shopify app generate extension.\n\nSelect Flow trigger lifecycle callback.\n\nChange the URL in the generated TOML to the URL configured on the web server.\n\nRun shopify app deploy.\n\nNext steps\n\nFamiliarize yourself with Shopify Flow and learn about building connectors.\n\nConnect your app to Shopify Flow so that events that occur in your app can trigger workflows.\n\nConnect your app to Shopify Flow so that your app receives data and information when a workflow action runs."}}
|
training_dataset.jsonl
ADDED
The diff for this file is too large to render.
See raw diff
|
|
uv.lock
CHANGED
@@ -1,9 +1,12 @@
|
|
1 |
version = 1
|
2 |
requires-python = ">=3.12"
|
3 |
resolution-markers = [
|
4 |
-
"python_full_version >= '3.13'",
|
5 |
-
"python_full_version >= '3.
|
6 |
-
"python_full_version
|
|
|
|
|
|
|
7 |
]
|
8 |
|
9 |
[[package]]
|
@@ -454,6 +457,18 @@ wheels = [
|
|
454 |
{ url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277 },
|
455 |
]
|
456 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
457 |
[[package]]
|
458 |
name = "dotenv"
|
459 |
version = "0.9.9"
|
@@ -474,6 +489,28 @@ wheels = [
|
|
474 |
{ url = "https://files.pythonhosted.org/packages/91/db/a0335710caaa6d0aebdaa65ad4df789c15d89b7babd9a30277838a7d9aac/emoji-2.14.1-py3-none-any.whl", hash = "sha256:35a8a486c1460addb1499e3bf7929d3889b2e2841a57401903699fef595e942b", size = 590617 },
|
475 |
]
|
476 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
477 |
[[package]]
|
478 |
name = "fastapi"
|
479 |
version = "0.115.8"
|
@@ -559,6 +596,30 @@ http = [
|
|
559 |
{ name = "aiohttp" },
|
560 |
]
|
561 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
562 |
[[package]]
|
563 |
name = "googleapis-common-protos"
|
564 |
version = "1.68.0"
|
@@ -1115,6 +1176,15 @@ wheels = [
|
|
1115 |
{ url = "https://files.pythonhosted.org/packages/80/83/8c54533b3576f4391eebea88454738978669a6cad0d8e23266224007939d/lxml-5.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:91fb6a43d72b4f8863d21f347a9163eecbf36e76e2f51068d59cd004c506f332", size = 3814484 },
|
1116 |
]
|
1117 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1118 |
[[package]]
|
1119 |
name = "markupsafe"
|
1120 |
version = "3.0.2"
|
@@ -1376,7 +1446,7 @@ name = "nvidia-cudnn-cu12"
|
|
1376 |
version = "9.1.0.70"
|
1377 |
source = { registry = "https://pypi.org/simple" }
|
1378 |
dependencies = [
|
1379 |
-
{ name = "nvidia-cublas-cu12" },
|
1380 |
]
|
1381 |
wheels = [
|
1382 |
{ url = "https://files.pythonhosted.org/packages/9f/fd/713452cd72343f682b1c7b9321e23829f00b842ceaedcda96e742ea0b0b3/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f", size = 664752741 },
|
@@ -1387,7 +1457,7 @@ name = "nvidia-cufft-cu12"
|
|
1387 |
version = "11.2.1.3"
|
1388 |
source = { registry = "https://pypi.org/simple" }
|
1389 |
dependencies = [
|
1390 |
-
{ name = "nvidia-nvjitlink-cu12" },
|
1391 |
]
|
1392 |
wheels = [
|
1393 |
{ url = "https://files.pythonhosted.org/packages/27/94/3266821f65b92b3138631e9c8e7fe1fb513804ac934485a8d05776e1dd43/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f083fc24912aa410be21fa16d157fed2055dab1cc4b6934a0e03cba69eb242b9", size = 211459117 },
|
@@ -1406,9 +1476,9 @@ name = "nvidia-cusolver-cu12"
|
|
1406 |
version = "11.6.1.9"
|
1407 |
source = { registry = "https://pypi.org/simple" }
|
1408 |
dependencies = [
|
1409 |
-
{ name = "nvidia-cublas-cu12" },
|
1410 |
-
{ name = "nvidia-cusparse-cu12" },
|
1411 |
-
{ name = "nvidia-nvjitlink-cu12" },
|
1412 |
]
|
1413 |
wheels = [
|
1414 |
{ url = "https://files.pythonhosted.org/packages/3a/e1/5b9089a4b2a4790dfdea8b3a006052cfecff58139d5a4e34cb1a51df8d6f/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:19e33fa442bcfd085b3086c4ebf7e8debc07cfe01e11513cc6d332fd918ac260", size = 127936057 },
|
@@ -1419,7 +1489,7 @@ name = "nvidia-cusparse-cu12"
|
|
1419 |
version = "12.3.1.170"
|
1420 |
source = { registry = "https://pypi.org/simple" }
|
1421 |
dependencies = [
|
1422 |
-
{ name = "nvidia-nvjitlink-cu12" },
|
1423 |
]
|
1424 |
wheels = [
|
1425 |
{ url = "https://files.pythonhosted.org/packages/db/f7/97a9ea26ed4bbbfc2d470994b8b4f338ef663be97b8f677519ac195e113d/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ea4f11a2904e2a8dc4b1833cc1b5181cde564edd0d5cd33e3c168eff2d1863f1", size = 207454763 },
|
@@ -1728,6 +1798,15 @@ wheels = [
|
|
1728 |
{ url = "https://files.pythonhosted.org/packages/cf/6c/41c21c6c8af92b9fea313aa47c75de49e2f9a467964ee33eb0135d47eb64/pillow-11.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:67cd427c68926108778a9005f2a04adbd5e67c442ed21d95389fe1d595458756", size = 2377651 },
|
1729 |
]
|
1730 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1731 |
[[package]]
|
1732 |
name = "portalocker"
|
1733 |
version = "2.10.1"
|
@@ -1795,6 +1874,21 @@ wheels = [
|
|
1795 |
{ url = "https://files.pythonhosted.org/packages/fd/b2/ab07b09e0f6d143dfb839693aa05765257bceaa13d03bf1a696b78323e7a/protobuf-5.29.3-py3-none-any.whl", hash = "sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f", size = 172550 },
|
1796 |
]
|
1797 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1798 |
[[package]]
|
1799 |
name = "pyarrow"
|
1800 |
version = "19.0.1"
|
@@ -1946,6 +2040,20 @@ wheels = [
|
|
1946 |
{ url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 },
|
1947 |
]
|
1948 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1949 |
[[package]]
|
1950 |
name = "pypdf"
|
1951 |
version = "5.3.0"
|
@@ -2015,6 +2123,21 @@ wheels = [
|
|
2015 |
{ url = "https://files.pythonhosted.org/packages/13/6b/b60f47101ba2cac66b4a83246630e68ae9bbe2e614cbae5f4465f46dee13/python_multipart-0.0.18-py3-none-any.whl", hash = "sha256:efe91480f485f6a361427a541db4796f9e1591afc0fb8e7a4ba06bfbc6708996", size = 24389 },
|
2016 |
]
|
2017 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018 |
[[package]]
|
2019 |
name = "python-socketio"
|
2020 |
version = "5.12.1"
|
@@ -2326,6 +2449,51 @@ wheels = [
|
|
2326 |
{ url = "https://files.pythonhosted.org/packages/05/89/7eb147a37b7f31d3c815543df539d8b8d0425e93296c875cc87719d65232/sentence_transformers-3.4.1-py3-none-any.whl", hash = "sha256:e026dc6d56801fd83f74ad29a30263f401b4b522165c19386d8bc10dcca805da", size = 275896 },
|
2327 |
]
|
2328 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2329 |
[[package]]
|
2330 |
name = "setuptools"
|
2331 |
version = "75.8.0"
|
@@ -2345,7 +2513,9 @@ dependencies = [
|
|
2345 |
{ name = "aiosignal" },
|
2346 |
{ name = "beautifulsoup4" },
|
2347 |
{ name = "chainlit" },
|
|
|
2348 |
{ name = "dotenv" },
|
|
|
2349 |
{ name = "langchain" },
|
2350 |
{ name = "langchain-community" },
|
2351 |
{ name = "langchain-core" },
|
@@ -2355,10 +2525,16 @@ dependencies = [
|
|
2355 |
{ name = "langchain-text-splitters" },
|
2356 |
{ name = "langgraph" },
|
2357 |
{ name = "lxml" },
|
|
|
|
|
|
|
|
|
2358 |
{ name = "qdrant-client" },
|
2359 |
{ name = "ragas" },
|
|
|
2360 |
{ name = "typing-extensions" },
|
2361 |
{ name = "unstructured" },
|
|
|
2362 |
{ name = "yarl" },
|
2363 |
]
|
2364 |
|
@@ -2369,7 +2545,9 @@ requires-dist = [
|
|
2369 |
{ name = "aiosignal", specifier = ">=1.3.1" },
|
2370 |
{ name = "beautifulsoup4", specifier = ">=4.12.3" },
|
2371 |
{ name = "chainlit", specifier = ">=2.2.1" },
|
|
|
2372 |
{ name = "dotenv", specifier = ">=0.9.9" },
|
|
|
2373 |
{ name = "langchain", specifier = ">=0.3.19" },
|
2374 |
{ name = "langchain-community", specifier = ">=0.3.18" },
|
2375 |
{ name = "langchain-core", specifier = ">=0.3.37" },
|
@@ -2379,10 +2557,16 @@ requires-dist = [
|
|
2379 |
{ name = "langchain-text-splitters", specifier = ">=0.3.6" },
|
2380 |
{ name = "langgraph", specifier = ">=0.2.74" },
|
2381 |
{ name = "lxml", specifier = ">=5.1.0" },
|
|
|
|
|
|
|
|
|
2382 |
{ name = "qdrant-client", specifier = ">=1.13.2" },
|
2383 |
{ name = "ragas", specifier = ">=0.2.13" },
|
|
|
2384 |
{ name = "typing-extensions", specifier = ">=4.12.2" },
|
2385 |
{ name = "unstructured", specifier = ">=0.14.8" },
|
|
|
2386 |
{ name = "yarl", specifier = ">=1.9.4" },
|
2387 |
]
|
2388 |
|
@@ -2407,6 +2591,15 @@ wheels = [
|
|
2407 |
{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 },
|
2408 |
]
|
2409 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2410 |
[[package]]
|
2411 |
name = "sniffio"
|
2412 |
version = "1.3.1"
|
@@ -2798,6 +2991,38 @@ wheels = [
|
|
2798 |
{ url = "https://files.pythonhosted.org/packages/61/14/33a3a1352cfa71812a3a21e8c9bfb83f60b0011f5e36f2b1399d51928209/uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4", size = 62315 },
|
2799 |
]
|
2800 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2801 |
[[package]]
|
2802 |
name = "watchfiles"
|
2803 |
version = "0.20.0"
|
@@ -2876,6 +3101,15 @@ wheels = [
|
|
2876 |
{ url = "https://files.pythonhosted.org/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736", size = 24226 },
|
2877 |
]
|
2878 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2879 |
[[package]]
|
2880 |
name = "xxhash"
|
2881 |
version = "3.5.0"
|
|
|
1 |
version = 1
|
2 |
requires-python = ">=3.12"
|
3 |
resolution-markers = [
|
4 |
+
"python_full_version >= '3.13' and sys_platform == 'linux'",
|
5 |
+
"python_full_version >= '3.13' and sys_platform != 'linux'",
|
6 |
+
"python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform == 'linux'",
|
7 |
+
"python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform != 'linux'",
|
8 |
+
"python_full_version < '3.12.4' and sys_platform == 'linux'",
|
9 |
+
"python_full_version < '3.12.4' and sys_platform != 'linux'",
|
10 |
]
|
11 |
|
12 |
[[package]]
|
|
|
457 |
{ url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277 },
|
458 |
]
|
459 |
|
460 |
+
[[package]]
|
461 |
+
name = "docker-pycreds"
|
462 |
+
version = "0.4.0"
|
463 |
+
source = { registry = "https://pypi.org/simple" }
|
464 |
+
dependencies = [
|
465 |
+
{ name = "six" },
|
466 |
+
]
|
467 |
+
sdist = { url = "https://files.pythonhosted.org/packages/c5/e6/d1f6c00b7221e2d7c4b470132c931325c8b22c51ca62417e300f5ce16009/docker-pycreds-0.4.0.tar.gz", hash = "sha256:6ce3270bcaf404cc4c3e27e4b6c70d3521deae82fb508767870fdbf772d584d4", size = 8754 }
|
468 |
+
wheels = [
|
469 |
+
{ url = "https://files.pythonhosted.org/packages/f5/e8/f6bd1eee09314e7e6dee49cbe2c5e22314ccdb38db16c9fc72d2fa80d054/docker_pycreds-0.4.0-py2.py3-none-any.whl", hash = "sha256:7266112468627868005106ec19cd0d722702d2b7d5912a28e19b826c3d37af49", size = 8982 },
|
470 |
+
]
|
471 |
+
|
472 |
[[package]]
|
473 |
name = "dotenv"
|
474 |
version = "0.9.9"
|
|
|
489 |
{ url = "https://files.pythonhosted.org/packages/91/db/a0335710caaa6d0aebdaa65ad4df789c15d89b7babd9a30277838a7d9aac/emoji-2.14.1-py3-none-any.whl", hash = "sha256:35a8a486c1460addb1499e3bf7929d3889b2e2841a57401903699fef595e942b", size = 590617 },
|
490 |
]
|
491 |
|
492 |
+
[[package]]
|
493 |
+
name = "faiss-cpu"
|
494 |
+
version = "1.10.0"
|
495 |
+
source = { registry = "https://pypi.org/simple" }
|
496 |
+
dependencies = [
|
497 |
+
{ name = "numpy" },
|
498 |
+
{ name = "packaging" },
|
499 |
+
]
|
500 |
+
sdist = { url = "https://files.pythonhosted.org/packages/91/1b/6fe5dbe5be0240cfd82b52bd7c186655c578d935c0ce2e713c100e6f8cce/faiss_cpu-1.10.0.tar.gz", hash = "sha256:5bdca555f24bc036f4d67f8a5a4d6cc91b8d2126d4e78de496ca23ccd46e479d", size = 69159 }
|
501 |
+
wheels = [
|
502 |
+
{ url = "https://files.pythonhosted.org/packages/bd/cc/f6aa1288dbb40b2a4f101d16900885e056541f37d8d08ec70462e92cf277/faiss_cpu-1.10.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:2aca486fe2d680ea64a18d356206c91ff85db99fd34c19a757298c67c23262b1", size = 7720242 },
|
503 |
+
{ url = "https://files.pythonhosted.org/packages/be/56/40901306324a17fbc1eee8a6e86ba67bd99a67e768ce9908f271e648e9e0/faiss_cpu-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c1108a4059c66c37c403183e566ca1ed0974a6af7557c92d49207639aab661bc", size = 3239223 },
|
504 |
+
{ url = "https://files.pythonhosted.org/packages/2e/34/5b1463c450c9a6de3109caf8f38fbf0c329ef940ed1973fcf8c8ec7fa27e/faiss_cpu-1.10.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:449f3eb778d6d937e01a16a3170de4bb8aabfe87c7cb479b458fb790276310c5", size = 3671461 },
|
505 |
+
{ url = "https://files.pythonhosted.org/packages/78/d9/0b78c474289f23b31283d8fb64c8e6a522a7fa47b131a3c6c141c8e6639d/faiss_cpu-1.10.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9899c340f92bd94071d6faf4bef0ccb5362843daea42144d4ba857a2a1f67511", size = 30663859 },
|
506 |
+
{ url = "https://files.pythonhosted.org/packages/17/f0/194727b9e6e282e2877bc001ba886228f6af52e9a6730bbdb223e38591c3/faiss_cpu-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:345a52dbfa980d24b93c94410eadf82d1eef359c6a42e5e0768cca96539f1c3c", size = 13687087 },
|
507 |
+
{ url = "https://files.pythonhosted.org/packages/93/25/23239a83142faa319c4f8c025e25fec6cccc7418995eba3515218a57a45b/faiss_cpu-1.10.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:cb8473d69c3964c1bf3f8eb3e04287bb3275f536e6d9635ef32242b5f506b45d", size = 7720240 },
|
508 |
+
{ url = "https://files.pythonhosted.org/packages/18/f1/0e979277831af337739dbacf386d8a359a05eef9642df23d36e6c7d1b1a9/faiss_cpu-1.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82ca5098de694e7b8495c1a8770e2c08df6e834922546dad0ae1284ff519ced6", size = 3239224 },
|
509 |
+
{ url = "https://files.pythonhosted.org/packages/bd/fa/c2ad85b017a5754f6cdb09c179f8c4f4198d2a264046a8daa7a4d080521f/faiss_cpu-1.10.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:035e4d797e2db7fc0d0c90531d4a655d089ad5d1382b7a49358c1f2307b3a309", size = 3671236 },
|
510 |
+
{ url = "https://files.pythonhosted.org/packages/4f/9b/759962f2c34800058f6a76457df3b0ab93b24f383650ea1ef0231acd322c/faiss_cpu-1.10.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e02af3696a6b9e1f9072e502f48095a305de2163c42ceb1f6f6b1db9e7ffe574", size = 30663948 },
|
511 |
+
{ url = "https://files.pythonhosted.org/packages/2c/9a/6c496e0189897761978653177386452d62f4060579413d109bff05f458f2/faiss_cpu-1.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:e71f7e24d5b02d3a51df47b77bd10f394a1b48a8331d5c817e71e9e27a8a75ac", size = 13687212 },
|
512 |
+
]
|
513 |
+
|
514 |
[[package]]
|
515 |
name = "fastapi"
|
516 |
version = "0.115.8"
|
|
|
596 |
{ name = "aiohttp" },
|
597 |
]
|
598 |
|
599 |
+
[[package]]
|
600 |
+
name = "gitdb"
|
601 |
+
version = "4.0.12"
|
602 |
+
source = { registry = "https://pypi.org/simple" }
|
603 |
+
dependencies = [
|
604 |
+
{ name = "smmap" },
|
605 |
+
]
|
606 |
+
sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 }
|
607 |
+
wheels = [
|
608 |
+
{ url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 },
|
609 |
+
]
|
610 |
+
|
611 |
+
[[package]]
|
612 |
+
name = "gitpython"
|
613 |
+
version = "3.1.44"
|
614 |
+
source = { registry = "https://pypi.org/simple" }
|
615 |
+
dependencies = [
|
616 |
+
{ name = "gitdb" },
|
617 |
+
]
|
618 |
+
sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196 }
|
619 |
+
wheels = [
|
620 |
+
{ url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599 },
|
621 |
+
]
|
622 |
+
|
623 |
[[package]]
|
624 |
name = "googleapis-common-protos"
|
625 |
version = "1.68.0"
|
|
|
1176 |
{ url = "https://files.pythonhosted.org/packages/80/83/8c54533b3576f4391eebea88454738978669a6cad0d8e23266224007939d/lxml-5.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:91fb6a43d72b4f8863d21f347a9163eecbf36e76e2f51068d59cd004c506f332", size = 3814484 },
|
1177 |
]
|
1178 |
|
1179 |
+
[[package]]
|
1180 |
+
name = "markdown"
|
1181 |
+
version = "3.7"
|
1182 |
+
source = { registry = "https://pypi.org/simple" }
|
1183 |
+
sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 }
|
1184 |
+
wheels = [
|
1185 |
+
{ url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 },
|
1186 |
+
]
|
1187 |
+
|
1188 |
[[package]]
|
1189 |
name = "markupsafe"
|
1190 |
version = "3.0.2"
|
|
|
1446 |
version = "9.1.0.70"
|
1447 |
source = { registry = "https://pypi.org/simple" }
|
1448 |
dependencies = [
|
1449 |
+
{ name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" },
|
1450 |
]
|
1451 |
wheels = [
|
1452 |
{ url = "https://files.pythonhosted.org/packages/9f/fd/713452cd72343f682b1c7b9321e23829f00b842ceaedcda96e742ea0b0b3/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f", size = 664752741 },
|
|
|
1457 |
version = "11.2.1.3"
|
1458 |
source = { registry = "https://pypi.org/simple" }
|
1459 |
dependencies = [
|
1460 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" },
|
1461 |
]
|
1462 |
wheels = [
|
1463 |
{ url = "https://files.pythonhosted.org/packages/27/94/3266821f65b92b3138631e9c8e7fe1fb513804ac934485a8d05776e1dd43/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f083fc24912aa410be21fa16d157fed2055dab1cc4b6934a0e03cba69eb242b9", size = 211459117 },
|
|
|
1476 |
version = "11.6.1.9"
|
1477 |
source = { registry = "https://pypi.org/simple" }
|
1478 |
dependencies = [
|
1479 |
+
{ name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" },
|
1480 |
+
{ name = "nvidia-cusparse-cu12", marker = "sys_platform == 'linux'" },
|
1481 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" },
|
1482 |
]
|
1483 |
wheels = [
|
1484 |
{ url = "https://files.pythonhosted.org/packages/3a/e1/5b9089a4b2a4790dfdea8b3a006052cfecff58139d5a4e34cb1a51df8d6f/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:19e33fa442bcfd085b3086c4ebf7e8debc07cfe01e11513cc6d332fd918ac260", size = 127936057 },
|
|
|
1489 |
version = "12.3.1.170"
|
1490 |
source = { registry = "https://pypi.org/simple" }
|
1491 |
dependencies = [
|
1492 |
+
{ name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" },
|
1493 |
]
|
1494 |
wheels = [
|
1495 |
{ url = "https://files.pythonhosted.org/packages/db/f7/97a9ea26ed4bbbfc2d470994b8b4f338ef663be97b8f677519ac195e113d/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ea4f11a2904e2a8dc4b1833cc1b5181cde564edd0d5cd33e3c168eff2d1863f1", size = 207454763 },
|
|
|
1798 |
{ url = "https://files.pythonhosted.org/packages/cf/6c/41c21c6c8af92b9fea313aa47c75de49e2f9a467964ee33eb0135d47eb64/pillow-11.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:67cd427c68926108778a9005f2a04adbd5e67c442ed21d95389fe1d595458756", size = 2377651 },
|
1799 |
]
|
1800 |
|
1801 |
+
[[package]]
|
1802 |
+
name = "platformdirs"
|
1803 |
+
version = "4.3.6"
|
1804 |
+
source = { registry = "https://pypi.org/simple" }
|
1805 |
+
sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 }
|
1806 |
+
wheels = [
|
1807 |
+
{ url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 },
|
1808 |
+
]
|
1809 |
+
|
1810 |
[[package]]
|
1811 |
name = "portalocker"
|
1812 |
version = "2.10.1"
|
|
|
1874 |
{ url = "https://files.pythonhosted.org/packages/fd/b2/ab07b09e0f6d143dfb839693aa05765257bceaa13d03bf1a696b78323e7a/protobuf-5.29.3-py3-none-any.whl", hash = "sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f", size = 172550 },
|
1875 |
]
|
1876 |
|
1877 |
+
[[package]]
|
1878 |
+
name = "psutil"
|
1879 |
+
version = "7.0.0"
|
1880 |
+
source = { registry = "https://pypi.org/simple" }
|
1881 |
+
sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 }
|
1882 |
+
wheels = [
|
1883 |
+
{ url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 },
|
1884 |
+
{ url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 },
|
1885 |
+
{ url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 },
|
1886 |
+
{ url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 },
|
1887 |
+
{ url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 },
|
1888 |
+
{ url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 },
|
1889 |
+
{ url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 },
|
1890 |
+
]
|
1891 |
+
|
1892 |
[[package]]
|
1893 |
name = "pyarrow"
|
1894 |
version = "19.0.1"
|
|
|
2040 |
{ url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 },
|
2041 |
]
|
2042 |
|
2043 |
+
[[package]]
|
2044 |
+
name = "pymupdf"
|
2045 |
+
version = "1.25.3"
|
2046 |
+
source = { registry = "https://pypi.org/simple" }
|
2047 |
+
sdist = { url = "https://files.pythonhosted.org/packages/06/47/b61c1c44b87cbdaeecdec3f43ce524ed6b3c72172bc6184eb82c94fbc43d/pymupdf-1.25.3.tar.gz", hash = "sha256:b640187c64c5ac5d97505a92e836da299da79c2f689f3f94a67a37a493492193", size = 67259841 }
|
2048 |
+
wheels = [
|
2049 |
+
{ url = "https://files.pythonhosted.org/packages/61/9b/98ef4b98309e9db3baa9fe572f0e61b6130bb9852d13189970f35b703499/pymupdf-1.25.3-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:96878e1b748f9c2011aecb2028c5f96b5a347a9a91169130ad0133053d97915e", size = 19343576 },
|
2050 |
+
{ url = "https://files.pythonhosted.org/packages/14/62/4e12126db174c8cfbf692281cda971cc4046c5f5226032c2cfaa6f83e08d/pymupdf-1.25.3-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:6ef753005b72ebfd23470f72f7e30f61e21b0b5e748045ec5b8f89e6e3068d62", size = 18580114 },
|
2051 |
+
{ url = "https://files.pythonhosted.org/packages/52/de/bd1418e31f73d37b8381cd5deacfd681e6be702b8890e123e83724569ee1/pymupdf-1.25.3-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:46d90c4f9e62d1856e8db4b9f04a202ff4a7f086a816af73abdc86adb7f5e25a", size = 19999825 },
|
2052 |
+
{ url = "https://files.pythonhosted.org/packages/42/ee/3c449b0de061440ba1ac984aa845315e9e2dca0ff2003c5adfc6febff203/pymupdf-1.25.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a5de51efdbe4d486b6c1111c84e8a231cbfb426f3d6ff31ab530ad70e6f39756", size = 21123157 },
|
2053 |
+
{ url = "https://files.pythonhosted.org/packages/83/53/71faaaf91c56f2883b13f3dd849bf2697f012eb35eb7b952d62734cff41f/pymupdf-1.25.3-cp39-abi3-win32.whl", hash = "sha256:bca72e6089f985d800596e22973f79cc08af6cbff1d93e5bda9248326a03857c", size = 15094211 },
|
2054 |
+
{ url = "https://files.pythonhosted.org/packages/09/e0/d72e88a1d5e23aa381fd463057dc3d0fb29090e1e7308a870c334716579c/pymupdf-1.25.3-cp39-abi3-win_amd64.whl", hash = "sha256:4fb357438c9129fbf939b5af85323434df64e36759c399c376b62ad6da95498c", size = 16542949 },
|
2055 |
+
]
|
2056 |
+
|
2057 |
[[package]]
|
2058 |
name = "pypdf"
|
2059 |
version = "5.3.0"
|
|
|
2123 |
{ url = "https://files.pythonhosted.org/packages/13/6b/b60f47101ba2cac66b4a83246630e68ae9bbe2e614cbae5f4465f46dee13/python_multipart-0.0.18-py3-none-any.whl", hash = "sha256:efe91480f485f6a361427a541db4796f9e1591afc0fb8e7a4ba06bfbc6708996", size = 24389 },
|
2124 |
]
|
2125 |
|
2126 |
+
[[package]]
|
2127 |
+
name = "python-pptx"
|
2128 |
+
version = "1.0.2"
|
2129 |
+
source = { registry = "https://pypi.org/simple" }
|
2130 |
+
dependencies = [
|
2131 |
+
{ name = "lxml" },
|
2132 |
+
{ name = "pillow" },
|
2133 |
+
{ name = "typing-extensions" },
|
2134 |
+
{ name = "xlsxwriter" },
|
2135 |
+
]
|
2136 |
+
sdist = { url = "https://files.pythonhosted.org/packages/52/a9/0c0db8d37b2b8a645666f7fd8accea4c6224e013c42b1d5c17c93590cd06/python_pptx-1.0.2.tar.gz", hash = "sha256:479a8af0eaf0f0d76b6f00b0887732874ad2e3188230315290cd1f9dd9cc7095", size = 10109297 }
|
2137 |
+
wheels = [
|
2138 |
+
{ url = "https://files.pythonhosted.org/packages/d9/4f/00be2196329ebbff56ce564aa94efb0fbc828d00de250b1980de1a34ab49/python_pptx-1.0.2-py3-none-any.whl", hash = "sha256:160838e0b8565a8b1f67947675886e9fea18aa5e795db7ae531606d68e785cba", size = 472788 },
|
2139 |
+
]
|
2140 |
+
|
2141 |
[[package]]
|
2142 |
name = "python-socketio"
|
2143 |
version = "5.12.1"
|
|
|
2449 |
{ url = "https://files.pythonhosted.org/packages/05/89/7eb147a37b7f31d3c815543df539d8b8d0425e93296c875cc87719d65232/sentence_transformers-3.4.1-py3-none-any.whl", hash = "sha256:e026dc6d56801fd83f74ad29a30263f401b4b522165c19386d8bc10dcca805da", size = 275896 },
|
2450 |
]
|
2451 |
|
2452 |
+
[[package]]
|
2453 |
+
name = "sentry-sdk"
|
2454 |
+
version = "2.22.0"
|
2455 |
+
source = { registry = "https://pypi.org/simple" }
|
2456 |
+
dependencies = [
|
2457 |
+
{ name = "certifi" },
|
2458 |
+
{ name = "urllib3" },
|
2459 |
+
]
|
2460 |
+
sdist = { url = "https://files.pythonhosted.org/packages/81/b6/662988ecd2345bf6c3a5c306a9a3590852742eff91d0a78a143398b816f3/sentry_sdk-2.22.0.tar.gz", hash = "sha256:b4bf43bb38f547c84b2eadcefbe389b36ef75f3f38253d7a74d6b928c07ae944", size = 303539 }
|
2461 |
+
wheels = [
|
2462 |
+
{ url = "https://files.pythonhosted.org/packages/12/7f/0e4459173e9671ba5f75a48dda2442bcc48a12c79e54e5789381c8c6a9bc/sentry_sdk-2.22.0-py2.py3-none-any.whl", hash = "sha256:3d791d631a6c97aad4da7074081a57073126c69487560c6f8bffcf586461de66", size = 325815 },
|
2463 |
+
]
|
2464 |
+
|
2465 |
+
[[package]]
|
2466 |
+
name = "setproctitle"
|
2467 |
+
version = "1.3.5"
|
2468 |
+
source = { registry = "https://pypi.org/simple" }
|
2469 |
+
sdist = { url = "https://files.pythonhosted.org/packages/c4/4d/6a840c8d2baa07b57329490e7094f90aac177a1d5226bc919046f1106860/setproctitle-1.3.5.tar.gz", hash = "sha256:1e6eaeaf8a734d428a95d8c104643b39af7d247d604f40a7bebcf3960a853c5e", size = 26737 }
|
2470 |
+
wheels = [
|
2471 |
+
{ url = "https://files.pythonhosted.org/packages/2b/19/04755958495de57e4891de50f03e77b3fe9ca6716a86de00faa00ad0ee5a/setproctitle-1.3.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:523424b9be4dea97d95b8a584b183f35c7bab2d0a3d995b01febf5b8a8de90e4", size = 17250 },
|
2472 |
+
{ url = "https://files.pythonhosted.org/packages/b9/3d/2ca9df5aa49b975296411dcbbe272cdb1c5e514c43b8be7d61751bb71a46/setproctitle-1.3.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b6ec1d86c1b4d7b5f2bdceadf213310cf24696b82480a2a702194b8a0bfbcb47", size = 11878 },
|
2473 |
+
{ url = "https://files.pythonhosted.org/packages/36/d6/e90e23b4627e016a4f862d4f892be92c9765dd6bf1e27a48e52cd166d4a3/setproctitle-1.3.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea6c505264275a43e9b2acd2acfc11ac33caf52bc3167c9fced4418a810f6b1c", size = 31940 },
|
2474 |
+
{ url = "https://files.pythonhosted.org/packages/15/13/167cdd55e00a8e10b36aad79646c3bf3c23fba0c08a9b8db9b74622c1b13/setproctitle-1.3.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b91e68e6685998e6353f296100ecabc313a6cb3e413d66a03d74b988b61f5ff", size = 33370 },
|
2475 |
+
{ url = "https://files.pythonhosted.org/packages/9b/22/574a110527df133409a75053b7d6ff740993ccf30b8713d042f26840d351/setproctitle-1.3.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc1fda208ae3a2285ad27aeab44c41daf2328abe58fa3270157a739866779199", size = 30628 },
|
2476 |
+
{ url = "https://files.pythonhosted.org/packages/52/79/78b05c7d792c9167b917acdab1773b1ff73b016560f45d8155be2baa1a82/setproctitle-1.3.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:828727d220e46f048b82289018300a64547b46aaed96bf8810c05fe105426b41", size = 31672 },
|
2477 |
+
{ url = "https://files.pythonhosted.org/packages/b0/62/4509735be062129694751ac55d5e1fbb6d86fa46a8689b7d5e2c23dae5b0/setproctitle-1.3.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:83b016221cf80028b2947be20630faa14e3e72a403e35f0ba29550b4e856767b", size = 31378 },
|
2478 |
+
{ url = "https://files.pythonhosted.org/packages/72/e7/b394c55934b89f00c2ef7d5e6f18cca5d8dfa26ef628700c4de0c85e3f3d/setproctitle-1.3.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6d8a411e752e794d052434139ca4234ffeceeb8d8d8ddc390a9051d7942b2726", size = 30370 },
|
2479 |
+
{ url = "https://files.pythonhosted.org/packages/13/ee/e1f27bf52d2bec7060bb6311ab0ccede8de98ed5394e3a59e7a14a453fb5/setproctitle-1.3.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:50cfbf86b9c63a2c2903f1231f0a58edeb775e651ae1af84eec8430b0571f29b", size = 32875 },
|
2480 |
+
{ url = "https://files.pythonhosted.org/packages/6e/08/13b561085d2de53b9becfa5578545d99114e9ff2aa3dc151bcaadf80b17e/setproctitle-1.3.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f3b5e2eacd572444770026c9dd3ddc7543ce427cdf452d40a408d1e95beefb30", size = 30903 },
|
2481 |
+
{ url = "https://files.pythonhosted.org/packages/65/f0/6cd06fffff2553be7b0571447d0c0ef8b727ef44cc2d6a33452677a311c8/setproctitle-1.3.5-cp312-cp312-win32.whl", hash = "sha256:cf4e3ded98027de2596c6cc5bbd3302adfb3ca315c848f56516bb0b7e88de1e9", size = 11468 },
|
2482 |
+
{ url = "https://files.pythonhosted.org/packages/c1/8c/e8a7cb568c4552618838941b332203bfc77ab0f2d67c1cb8f24dee0370ec/setproctitle-1.3.5-cp312-cp312-win_amd64.whl", hash = "sha256:f7a8c01ffd013dda2bed6e7d5cb59fbb609e72f805abf3ee98360f38f7758d9b", size = 12190 },
|
2483 |
+
{ url = "https://files.pythonhosted.org/packages/ab/78/d6b5aa3af2dd64f6c32e78fb85797b9725a3cdcbdf17dffc5838019918c3/setproctitle-1.3.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:162fd76781f57f42ddf27c475e5fef6a8df4fdd69b28dd554e53e2eb2bfe0f95", size = 17238 },
|
2484 |
+
{ url = "https://files.pythonhosted.org/packages/3d/00/14781f0ac28c7a37fe2ba321c276188ddd5ca73d69dab8a0f739d57b776b/setproctitle-1.3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4969d996bdfbe23bbd023cd0bae6c73a27371615c4ec5296a60cecce268659ef", size = 11867 },
|
2485 |
+
{ url = "https://files.pythonhosted.org/packages/f0/22/8430c879a8e3201508924a6cf45dba92b9a7b105fac8eebd0ef62e60fba9/setproctitle-1.3.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd70c95a94473216e7c7a7a1f7d8ecbaca5b16d4ba93ddbfd32050fc485a8451", size = 32001 },
|
2486 |
+
{ url = "https://files.pythonhosted.org/packages/01/f2/b00fe72c20897695f85932d193a5c57ecf94cbf825c0fd4082e3fa3e00bd/setproctitle-1.3.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a887582bfdb6dcbc482db0ef9e630ad23ca95875806ef2b444bf6fbd7b7d7ca", size = 33415 },
|
2487 |
+
{ url = "https://files.pythonhosted.org/packages/11/5b/e497bf702ea5d553a331ca879e73a18bbd8f7d66d18d275cb2324e4144c4/setproctitle-1.3.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:755671c39a9e70834eeec6dc6b61e344399c49881d2e7ea3534a1c69669dd9cc", size = 30606 },
|
2488 |
+
{ url = "https://files.pythonhosted.org/packages/16/99/1bcb837134c71f332bfeaf923e68279566362b7d1504aa106af8046696e8/setproctitle-1.3.5-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ab52b4c2ce056a1b60d439991a81ca90f019488d4b4f64b2779e6badd3677e6", size = 31679 },
|
2489 |
+
{ url = "https://files.pythonhosted.org/packages/77/55/72af3dbb0b1304bad54ea3b7cf1b524a8a2868da0b4c38bc18290f0097f7/setproctitle-1.3.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36178b944019ec7fc52bb967ffeee296a11d373734a7be276755bedb3db5c141", size = 31388 },
|
2490 |
+
{ url = "https://files.pythonhosted.org/packages/f3/08/fa13f2da6bd10ca756a45f8fed2888f439e9ce7d6402258e87ceef2d4c71/setproctitle-1.3.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:269d41cd4f085b69821d1ee6599124f02dbbc79962b256e260b6c9021d037994", size = 30370 },
|
2491 |
+
{ url = "https://files.pythonhosted.org/packages/25/4b/83575bb403967f1069b68a8799979fe7979b5a7c17703d2984965d8f4e92/setproctitle-1.3.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d880630fd81d1b3bde121c352ca7ea2f2ff507ef40c3c011d0928ed491f912c9", size = 32897 },
|
2492 |
+
{ url = "https://files.pythonhosted.org/packages/1a/71/0c1e151ef6899260da4009e7170f56261486d3149e9bad40990b52bdd620/setproctitle-1.3.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8a7fed67ab49f60bd51f3b4cffff3f8d754d1bb0a40e42869911301ec6519b65", size = 30944 },
|
2493 |
+
{ url = "https://files.pythonhosted.org/packages/38/34/a3bdaeaee03e11aef82b45014738f1210f90e37359c41eda3e49b4ce891c/setproctitle-1.3.5-cp313-cp313-win32.whl", hash = "sha256:e9c0d0cfcf715631b10d5950d04a9978f63bc46535724ef7c2eaf1dca9988642", size = 11463 },
|
2494 |
+
{ url = "https://files.pythonhosted.org/packages/ef/f1/a19cde9f3f4054aed7c6077e7fc3420a5151ec6173cf3235fe000722ccb8/setproctitle-1.3.5-cp313-cp313-win_amd64.whl", hash = "sha256:e1d28eb98c91fbebd3e443a45c7da5d84974959851ef304c330eabd654a386f1", size = 12182 },
|
2495 |
+
]
|
2496 |
+
|
2497 |
[[package]]
|
2498 |
name = "setuptools"
|
2499 |
version = "75.8.0"
|
|
|
2513 |
{ name = "aiosignal" },
|
2514 |
{ name = "beautifulsoup4" },
|
2515 |
{ name = "chainlit" },
|
2516 |
+
{ name = "datasets" },
|
2517 |
{ name = "dotenv" },
|
2518 |
+
{ name = "faiss-cpu" },
|
2519 |
{ name = "langchain" },
|
2520 |
{ name = "langchain-community" },
|
2521 |
{ name = "langchain-core" },
|
|
|
2525 |
{ name = "langchain-text-splitters" },
|
2526 |
{ name = "langgraph" },
|
2527 |
{ name = "lxml" },
|
2528 |
+
{ name = "markdown" },
|
2529 |
+
{ name = "nltk" },
|
2530 |
+
{ name = "pymupdf" },
|
2531 |
+
{ name = "python-pptx" },
|
2532 |
{ name = "qdrant-client" },
|
2533 |
{ name = "ragas" },
|
2534 |
+
{ name = "sentence-transformers" },
|
2535 |
{ name = "typing-extensions" },
|
2536 |
{ name = "unstructured" },
|
2537 |
+
{ name = "wandb" },
|
2538 |
{ name = "yarl" },
|
2539 |
]
|
2540 |
|
|
|
2545 |
{ name = "aiosignal", specifier = ">=1.3.1" },
|
2546 |
{ name = "beautifulsoup4", specifier = ">=4.12.3" },
|
2547 |
{ name = "chainlit", specifier = ">=2.2.1" },
|
2548 |
+
{ name = "datasets", specifier = ">=3.3.2" },
|
2549 |
{ name = "dotenv", specifier = ">=0.9.9" },
|
2550 |
+
{ name = "faiss-cpu", specifier = ">=1.10.0" },
|
2551 |
{ name = "langchain", specifier = ">=0.3.19" },
|
2552 |
{ name = "langchain-community", specifier = ">=0.3.18" },
|
2553 |
{ name = "langchain-core", specifier = ">=0.3.37" },
|
|
|
2557 |
{ name = "langchain-text-splitters", specifier = ">=0.3.6" },
|
2558 |
{ name = "langgraph", specifier = ">=0.2.74" },
|
2559 |
{ name = "lxml", specifier = ">=5.1.0" },
|
2560 |
+
{ name = "markdown", specifier = ">=3.7" },
|
2561 |
+
{ name = "nltk", specifier = "==3.9.1" },
|
2562 |
+
{ name = "pymupdf", specifier = ">=1.25.3" },
|
2563 |
+
{ name = "python-pptx", specifier = "==1.0.2" },
|
2564 |
{ name = "qdrant-client", specifier = ">=1.13.2" },
|
2565 |
{ name = "ragas", specifier = ">=0.2.13" },
|
2566 |
+
{ name = "sentence-transformers", specifier = ">=3.4.1" },
|
2567 |
{ name = "typing-extensions", specifier = ">=4.12.2" },
|
2568 |
{ name = "unstructured", specifier = ">=0.14.8" },
|
2569 |
+
{ name = "wandb", specifier = ">=0.19.7" },
|
2570 |
{ name = "yarl", specifier = ">=1.9.4" },
|
2571 |
]
|
2572 |
|
|
|
2591 |
{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 },
|
2592 |
]
|
2593 |
|
2594 |
+
[[package]]
|
2595 |
+
name = "smmap"
|
2596 |
+
version = "5.0.2"
|
2597 |
+
source = { registry = "https://pypi.org/simple" }
|
2598 |
+
sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 }
|
2599 |
+
wheels = [
|
2600 |
+
{ url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 },
|
2601 |
+
]
|
2602 |
+
|
2603 |
[[package]]
|
2604 |
name = "sniffio"
|
2605 |
version = "1.3.1"
|
|
|
2991 |
{ url = "https://files.pythonhosted.org/packages/61/14/33a3a1352cfa71812a3a21e8c9bfb83f60b0011f5e36f2b1399d51928209/uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4", size = 62315 },
|
2992 |
]
|
2993 |
|
2994 |
+
[[package]]
|
2995 |
+
name = "wandb"
|
2996 |
+
version = "0.19.7"
|
2997 |
+
source = { registry = "https://pypi.org/simple" }
|
2998 |
+
dependencies = [
|
2999 |
+
{ name = "click" },
|
3000 |
+
{ name = "docker-pycreds" },
|
3001 |
+
{ name = "gitpython" },
|
3002 |
+
{ name = "platformdirs" },
|
3003 |
+
{ name = "protobuf" },
|
3004 |
+
{ name = "psutil" },
|
3005 |
+
{ name = "pydantic" },
|
3006 |
+
{ name = "pyyaml" },
|
3007 |
+
{ name = "requests" },
|
3008 |
+
{ name = "sentry-sdk" },
|
3009 |
+
{ name = "setproctitle" },
|
3010 |
+
{ name = "setuptools" },
|
3011 |
+
]
|
3012 |
+
sdist = { url = "https://files.pythonhosted.org/packages/ab/76/69b19ab7547dd7abe172f9e87afe099fe1406767019366cb721799ae8208/wandb-0.19.7.tar.gz", hash = "sha256:f4189f353dc41dfa365bb4819aa128e77b050ca4f0e1408865a67c6c2b8de604", size = 39230906 }
|
3013 |
+
wheels = [
|
3014 |
+
{ url = "https://files.pythonhosted.org/packages/ec/21/18434013639bbcb75e4e27ddab96863552597b8088bead8facb0b7c87f67/wandb-0.19.7-py3-none-any.whl", hash = "sha256:01c715d437c129934c3050ff37cdad8aa16c6114f2ee0ca29c6e588a448374d3", size = 6399316 },
|
3015 |
+
{ url = "https://files.pythonhosted.org/packages/ad/ca/425be622d370d5d7c992fb0cb1ab86c6162e3b16001413c481a2a02436ad/wandb-0.19.7-py3-none-macosx_10_14_x86_64.whl", hash = "sha256:e8f30bd4fa1dd1ec25563162c8c95fd73f8402fddf7f82084fe82c2e3ad3d282", size = 20473690 },
|
3016 |
+
{ url = "https://files.pythonhosted.org/packages/e7/f8/eac8534d45510916b47aa38732d2708a64dfd695803708eeb73f878f32c8/wandb-0.19.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d38c64ac2494412eade2544abde9012c9aec689a152540b1253a2a03bb9dcd23", size = 19941904 },
|
3017 |
+
{ url = "https://files.pythonhosted.org/packages/92/b0/09fb898c001e129d34b262614d7036f8d32cd82b5589b10b99a4d6fe0f9c/wandb-0.19.7-py3-none-macosx_11_0_x86_64.whl", hash = "sha256:0f48fa6a2eb77d9f07418497cfa77e8f78d1c753fd06fe304bae0870af83f90c", size = 20471590 },
|
3018 |
+
{ url = "https://files.pythonhosted.org/packages/ca/f3/633979662a8b6217c15c34bd20094fda55212830aa3b9c4073900cbcf2b7/wandb-0.19.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b5b23aa51347fec2bd6a5698b01319c13f78d5b016f7a9c0df68e26924923cd", size = 19457850 },
|
3019 |
+
{ url = "https://files.pythonhosted.org/packages/7d/53/361846bf44dcf3bc5a4be0e0cb662b42c7e6996d71c903c936e191657e0d/wandb-0.19.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f7d71e2110c435b7f6ace6ce0e1164d2a5be9e1b8a4bcd7b90dbc42b55de7e9", size = 20790636 },
|
3020 |
+
{ url = "https://files.pythonhosted.org/packages/a8/7a/3e117006170b71f691260c765be731057aa2a073d7b9d8b050b9c52ac4bd/wandb-0.19.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:fd3b78eef152797499cf87647d890f7309c76c90e7c60959d2986b6baecfd419", size = 19468440 },
|
3021 |
+
{ url = "https://files.pythonhosted.org/packages/7d/8a/df5eb63ba1ecaa39381f73f28746316002ef421a9770fb0004ec2d551849/wandb-0.19.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6f5b85e563864ebf4d3198f385048163de4a94f0b00da7e92ff9db9117773382", size = 20870885 },
|
3022 |
+
{ url = "https://files.pythonhosted.org/packages/52/86/7fed3dcf51604585696572cf5969f01765c368237a0cc13877431facc749/wandb-0.19.7-py3-none-win32.whl", hash = "sha256:1a7af0c7b117a1d53fcc0169c37df2de8c1c07e48e5abb9fe7182e16d4baa9b1", size = 20251332 },
|
3023 |
+
{ url = "https://files.pythonhosted.org/packages/ce/be/020d511f537d3809ffb3fcedb855f5bf1daaf96ce2e0248022d015663332/wandb-0.19.7-py3-none-win_amd64.whl", hash = "sha256:2af68e147c6bf474db82ead643828198bea8a802fa2836ef1a666dfb15ef1d83", size = 20251337 },
|
3024 |
+
]
|
3025 |
+
|
3026 |
[[package]]
|
3027 |
name = "watchfiles"
|
3028 |
version = "0.20.0"
|
|
|
3101 |
{ url = "https://files.pythonhosted.org/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736", size = 24226 },
|
3102 |
]
|
3103 |
|
3104 |
+
[[package]]
|
3105 |
+
name = "xlsxwriter"
|
3106 |
+
version = "3.2.2"
|
3107 |
+
source = { registry = "https://pypi.org/simple" }
|
3108 |
+
sdist = { url = "https://files.pythonhosted.org/packages/a1/08/26f69d1e9264e8107253018de9fc6b96f9219817d01c5f021e927384a8d1/xlsxwriter-3.2.2.tar.gz", hash = "sha256:befc7f92578a85fed261639fb6cde1fd51b79c5e854040847dde59d4317077dc", size = 205202 }
|
3109 |
+
wheels = [
|
3110 |
+
{ url = "https://files.pythonhosted.org/packages/9b/07/df054f7413bdfff5e98f75056e4ed0977d0c8716424011fac2587864d1d3/XlsxWriter-3.2.2-py3-none-any.whl", hash = "sha256:272ce861e7fa5e82a4a6ebc24511f2cb952fde3461f6c6e1a1e81d3272db1471", size = 165121 },
|
3111 |
+
]
|
3112 |
+
|
3113 |
[[package]]
|
3114 |
name = "xxhash"
|
3115 |
version = "3.5.0"
|
val_dataset.jsonl
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"questions": {"f46d74de-5bb3-43be-a6c7-2550f38554a4": "What command is used to import extensions in Shopify CLI with a specific client ID?", "b971d7e8-7143-4946-b801-8d83e052ce3b": "What is the recommended approach for testing changes to extensions before deploying them to a production app?", "38060bec-43d8-4b41-beee-2ad5a8ed37dd": "What command should you run to start deploying your extensions using Shopify CLI?", "41398df6-a851-4fb4-bea2-dab1417fee63": "Why is it recommended to test changes using app dev or a test app before deploying to a production app?", "3cdf4806-951b-4c02-abc1-2c927ed796ca": "What steps must be taken before an app can receive communication from Flow actions?", "b8366d3e-224e-4fc0-acf6-34d3f48546a5": "What information should be reviewed for each API endpoint to ensure proper functionality?", "423ed58d-e977-437a-8194-1b67f5d6c180": "What is the purpose of the endpoint where the automation tool sends an action's payload?", "072d2a58-10e7-4594-8bb4-778f0a4763b5": "What are the general endpoint requirements for Shopify Flow action endpoints?", "9435250e-5d1e-42a2-a240-9c5218676c00": "What are the security mechanisms required for Shopify Flow action endpoints?", "e70a0cd9-9012-4a27-bb7c-f8dfd7948088": "What type of content format is specified for the API in the general endpoint requirements?", "61335b2e-beb9-4e64-bf9a-fd93afe0a26b": "What is the purpose of defining a return type schema in Flow workflows?", "f7772ac0-cc37-471b-9805-a359dc3f5e76": "How can you link a schema file to your extension's TOML definition?", "35689214-9242-405f-9b7d-e7f209e16ac0": "What types does Flow support when defining complex types in actions and triggers?", "303bd936-3223-4f6a-8a54-bb66d6de906a": "How does Flow derive the description of the return value for fields in the schema?", "46d93112-de24-4ce2-b883-fa490bfb0d7d": "What is the purpose of the description placed in double quotes above the field in Flow?", "381fa2c0-eccf-4fcc-8ee4-d3f79674126a": "How many types can be defined as the return type for an action in the schema?", "6529f6f4-de26-4911-a766-6dc30dc3cda3": "What information is represented by the `Bid` type in the auction schema?", "25de0beb-99eb-4ffc-b51a-ce2c336c324b": "What are the possible statuses defined in the `Status` enum for an auction?", "b82a50a8-8055-43de-9b00-11d4843df042": "What is the purpose of the `shopify.extensions.toml` file in the provided folder structure?", "742010b7-6c79-4bad-8cb4-249798f78b0b": "How can a schema file be referenced in an action extension's TOML according to the context?", "44d74c45-5349-491e-80f1-d5bc8c351553": "How can a schema file be referenced in an action extension's TOML?", "cfacaa7e-c619-4267-80ce-0341a0b55f75": "What property values need to be set to reference the return type schema in a trigger extension's TOML?", "c3be74f0-1111-4dfb-8c7b-2d85f66435a8": "How can a schema file be referenced in a trigger extension's TOML?", "d1390966-71a4-48a0-b458-dfc84e7589c4": "What must the return_value object match in order to respond to an action request from Flow?"}, "relevant_contexts": {"f46d74de-5bb3-43be-a6c7-2550f38554a4": ["c5e3e886-91d1-4110-912f-f556af73a8aa"], "b971d7e8-7143-4946-b801-8d83e052ce3b": ["c5e3e886-91d1-4110-912f-f556af73a8aa"], "38060bec-43d8-4b41-beee-2ad5a8ed37dd": ["e8f9d07f-84c9-407d-8e1d-af5c1a5aea15"], "41398df6-a851-4fb4-bea2-dab1417fee63": ["e8f9d07f-84c9-407d-8e1d-af5c1a5aea15"], "3cdf4806-951b-4c02-abc1-2c927ed796ca": ["3af7bab5-2f53-46db-aa4f-546f91199715"], "b8366d3e-224e-4fc0-acf6-34d3f48546a5": ["3af7bab5-2f53-46db-aa4f-546f91199715"], "423ed58d-e977-437a-8194-1b67f5d6c180": ["0c8a55be-0304-4818-ad51-5f978f370170"], "072d2a58-10e7-4594-8bb4-778f0a4763b5": ["0c8a55be-0304-4818-ad51-5f978f370170"], "9435250e-5d1e-42a2-a240-9c5218676c00": ["9f756445-14b3-40f4-ab61-d8eed0e0ec1a"], "e70a0cd9-9012-4a27-bb7c-f8dfd7948088": ["9f756445-14b3-40f4-ab61-d8eed0e0ec1a"], "61335b2e-beb9-4e64-bf9a-fd93afe0a26b": ["afa7be9f-6151-4a04-b858-0ac97b513982"], "f7772ac0-cc37-471b-9805-a359dc3f5e76": ["afa7be9f-6151-4a04-b858-0ac97b513982"], "35689214-9242-405f-9b7d-e7f209e16ac0": ["b3f4199b-1f0b-4413-bfdd-2a1ad835b7d7"], "303bd936-3223-4f6a-8a54-bb66d6de906a": ["b3f4199b-1f0b-4413-bfdd-2a1ad835b7d7"], "46d93112-de24-4ce2-b883-fa490bfb0d7d": ["845079b7-03ad-43f1-a6e9-ed76d6ad9baf"], "381fa2c0-eccf-4fcc-8ee4-d3f79674126a": ["845079b7-03ad-43f1-a6e9-ed76d6ad9baf"], "6529f6f4-de26-4911-a766-6dc30dc3cda3": ["2dc71f0c-acbe-4858-b134-2d1bcfb7dc9f"], "25de0beb-99eb-4ffc-b51a-ce2c336c324b": ["2dc71f0c-acbe-4858-b134-2d1bcfb7dc9f"], "b82a50a8-8055-43de-9b00-11d4843df042": ["4d3ca8f9-e237-415a-a9a5-ab1246e87fd3"], "742010b7-6c79-4bad-8cb4-249798f78b0b": ["4d3ca8f9-e237-415a-a9a5-ab1246e87fd3"], "44d74c45-5349-491e-80f1-d5bc8c351553": ["35c26e50-7daf-45b7-8ca2-f073afd6e9ea"], "cfacaa7e-c619-4267-80ce-0341a0b55f75": ["35c26e50-7daf-45b7-8ca2-f073afd6e9ea"], "c3be74f0-1111-4dfb-8c7b-2d85f66435a8": ["1ebc18db-f57a-44de-a75e-543868f916a8"], "d1390966-71a4-48a0-b458-dfc84e7589c4": ["1ebc18db-f57a-44de-a75e-543868f916a8"]}, "corpus": {"c5e3e886-91d1-4110-912f-f556af73a8aa": "text\n/my-flow-extension\n shopify.extension.toml\n\nTo learn more about the extensions file structure, refer to App structure and the documentation for your extension type.\n\nAvailable Flags\n\nclient_id\n\nAn application\u2019s client_id. The ID enables you to target a specific application when running the import command.\n\n```bash\n\n!/bin/bash\n\nshopify app import-extensions --client_id abc123\n```\n\nStep 2: Migrate your extension\n\nAfter you've imported the extension, you can migrate your extension by using Shopify CLI's deploy command.\n\nNote:\nDeploying extensions using the app deploy command also publishes the extensions. We recommend testing changes by using app dev or deploying to a test app before deploying them to a production app.\n\nUse Shopify CLI to deploy your extensions:\n\nNavigate to your app directory.\n\nRun the following command to start deploying your extension(s):\n\n```bash\n\n!/bin/bash\n\nshopify app deploy\n```\n\nFollow the prompts.", "e8f9d07f-84c9-407d-8e1d-af5c1a5aea15": "Note:\nDeploying extensions using the app deploy command also publishes the extensions. We recommend testing changes by using app dev or deploying to a test app before deploying them to a production app.\n\nUse Shopify CLI to deploy your extensions:\n\nNavigate to your app directory.\n\nRun the following command to start deploying your extension(s):\n\n```bash\n\n!/bin/bash\n\nshopify app deploy\n```\n\nFollow the prompts.\n\nWhen you receive confirmation that the deploy was successful, your extensions have been released.", "3af7bab5-2f53-46db-aa4f-546f91199715": "Before your app can receive communication from Flow actions, you need to create one or more standardized API endpoints on your web server. Review the information for each endpoint to understand its requirements, the format of the payload, and the expected response. You'll also learn how to avoid processing duplicate requests, identify an action by its ID, and verify requests for security purposes.", "0c8a55be-0304-4818-ad51-5f978f370170": "Endpoint Purpose Flow action execution The endpoint where the automation tool sends your action's payload. The payload contains data that you can use to execute the action in your app. Custom configuration page preview An endpoint that provides data about your custom configuration page to display in the automation tool. This endpoint is required if you want to use a custom configuration page. Custom validation An endpoint that validates the contents of merchant-configurable properties in an action payload when an action is saved. This endpoint is required if you want to use a custom configuration page.\n\nGeneral endpoint requirements\n\nThe requirements for Shopify Flow action endpoints are as follows:\n\nRule / concern Type / requirement API format REST Content type JSON Security mechanism HMAC / Signed requests Protocol HTTPS (app domain requires valid SSL certificate)\n\nFlow action execution", "9f756445-14b3-40f4-ab61-d8eed0e0ec1a": "General endpoint requirements\n\nThe requirements for Shopify Flow action endpoints are as follows:\n\nRule / concern Type / requirement API format REST Content type JSON Security mechanism HMAC / Signed requests Protocol HTTPS (app domain requires valid SSL certificate)\n\nFlow action execution\n\nWhen a workflow that contains your action is executed, Flow sends an HTTP request to your Flow action execution endpoint (runtime URL). The request contains a payload that matches the payload schema that you configured for your action.\n\nRequest", "afa7be9f-6151-4a04-b858-0ac97b513982": "Triggers and actions can both provide data to Flow workflows. This data can be simple, such as a string or a number, or complex, such as an object or a list of objects. This guide explains how to define complex data types in your extension's TOML and how to send and receive complex data types at runtime.\n\nDefining a return type schema\n\nTo return data from an action or complex objects from a trigger, you must provide a schema for the return type using GraphQL's type system (SDL). This schema is used by Flow to provide the return object in the workflow editor. The schema can be defined in any file and linked to from your extension's TOML definition. For example, a file called schema.graphql which contains the SDL for the types used in your action or trigger, can be made in the same directory as the extension.\n\nSDL file\n\nWhen you're using complex types in Flow actions and triggers, consider the following:", "b3f4199b-1f0b-4413-bfdd-2a1ad835b7d7": "SDL file\n\nWhen you're using complex types in Flow actions and triggers, consider the following:\n\nFlow supports defining types using basic types (String, Int, Float, Boolean, and ID) as well as enums, objects, lists, and the non-nullable flag !.\n\nFlow doesn't currently support the entire SDL spec when defining action return types. Unions, interfaces, custom scalars, and directives are currently not supported. The action HTTP payload doesn't utilize any arguments defined on types in this schema.\n\nFlow derives the description of the return value from the comment on the type, which is placed in double quotes above the field. This description displays to merchants in the Flow editor when selecting the field.\n\nThe same schema file can be referenced by multiple extensions as long as the relative paths are defined correctly.", "845079b7-03ad-43f1-a6e9-ed76d6ad9baf": "Flow derives the description of the return value from the comment on the type, which is placed in double quotes above the field. This description displays to merchants in the Flow editor when selecting the field.\n\nThe same schema file can be referenced by multiple extensions as long as the relative paths are defined correctly.\n\nThe following SDL defines two types: a Bid and an Auction which contains a list of bids. The schema can contain multiple types that reference each other but only one type can be defined as the return type for the action. In the following example we're referencing the Bid type in the Auction type.\n\n```graphql\n\"Represents a bid placed on an auction\"\ntype Bid {\n \"ID of the bid\"\n id: ID!\n \"Customer that placed the bid\"\n customerId: ID!\n \"Amount of the bid\"\n amount: Float!\n}\n\nenum Status {\n COMPLETE\n IN_PROGRESS\n CANCELLED\n}", "2dc71f0c-acbe-4858-b134-2d1bcfb7dc9f": "```graphql\n\"Represents a bid placed on an auction\"\ntype Bid {\n \"ID of the bid\"\n id: ID!\n \"Customer that placed the bid\"\n customerId: ID!\n \"Amount of the bid\"\n amount: Float!\n}\n\nenum Status {\n COMPLETE\n IN_PROGRESS\n CANCELLED\n}\n\n\"Represents an auction\"\ntype Auction {\n \"ID of the auction\"\n id: ID!\n \"Name of the auction\"\n name: String\n \"Status of the auction\"\n status: Status!\n \"List of bids placed on the auction\"\n bids: [Bid!]!\n}\n```\n\nFor more information on SDL, refer to the GraphQL documentation.\n\nFolder structure\n\n/my-extension-name\n shopify.extensions.toml\n schema.graphql\n\nshopify.extension.toml file\n\nbash\n[[extensions]]\nname = \"Place auction bid\"\ntype = \"flow_action\"\nhandle = \"auction-bid\"\ndescription = \"My description\"\nruntime_url = \"https://{url}.com/api/execute\"\nschema = \"./schema.graphql\"\nreturn_type_ref = \"Auction\"\n\nReferencing the return type schema in an action extension's TOML", "4d3ca8f9-e237-415a-a9a5-ab1246e87fd3": "For more information on SDL, refer to the GraphQL documentation.\n\nFolder structure\n\n/my-extension-name\n shopify.extensions.toml\n schema.graphql\n\nshopify.extension.toml file\n\nbash\n[[extensions]]\nname = \"Place auction bid\"\ntype = \"flow_action\"\nhandle = \"auction-bid\"\ndescription = \"My description\"\nruntime_url = \"https://{url}.com/api/execute\"\nschema = \"./schema.graphql\"\nreturn_type_ref = \"Auction\"\n\nReferencing the return type schema in an action extension's TOML\n\nAfter a schema file has been defined, it can be referenced in the action extension's TOML by setting extensions.schema to the relative path of the schema file, and extension.return_type_ref to a type defined in the referenced schema file. The schema defined above can be referenced by setting the following fields:\n\nProperty Name Property value extensions.schema ./schema.graphql extensions.return_type_ref Auction\n\nReferencing the return type schema in a trigger extension's TOML", "35c26e50-7daf-45b7-8ca2-f073afd6e9ea": "After a schema file has been defined, it can be referenced in the action extension's TOML by setting extensions.schema to the relative path of the schema file, and extension.return_type_ref to a type defined in the referenced schema file. The schema defined above can be referenced by setting the following fields:\n\nProperty Name Property value extensions.schema ./schema.graphql extensions.return_type_ref Auction\n\nReferencing the return type schema in a trigger extension's TOML\n\nAfter a schema file has been defined, it can be referenced in the trigger extension's TOML by setting extensions.schema to the relative path of the schema file, and setting the type of a field to schema.<type>. The schema defined above can be referenced by setting the following fields:\n\nProperty Name Property value extensions.schema ./schema.graphql extensions.settings.fields[0].type schema.Auction\n\nReturning data from an action at runtime", "1ebc18db-f57a-44de-a75e-543868f916a8": "After a schema file has been defined, it can be referenced in the trigger extension's TOML by setting extensions.schema to the relative path of the schema file, and setting the type of a field to schema.<type>. The schema defined above can be referenced by setting the following fields:\n\nProperty Name Property value extensions.schema ./schema.graphql extensions.settings.fields[0].type schema.Auction\n\nReturning data from an action at runtime\n\nWhen responding to an action request from Flow you can add the return type in the JSON response as a field called return_value. The return_value object must match the return type defined in the extension. The return type used in our example must be an auction object, like the following:"}}
|