diff --git a/code/go/internal/validator/content.go b/code/go/internal/validator/content.go index 68ed81a2c..951ac1c2a 100644 --- a/code/go/internal/validator/content.go +++ b/code/go/internal/validator/content.go @@ -25,6 +25,7 @@ func validateContentType(fsys fs.FS, path string, contentType spectypes.ContentT } } case "application/json": + case "application/x-ndjson": case "text/markdown": case "text/plain": default: diff --git a/code/go/pkg/validator/validator_test.go b/code/go/pkg/validator/validator_test.go index b82751ab6..96fa5ed88 100644 --- a/code/go/pkg/validator/validator_test.go +++ b/code/go/pkg/validator/validator_test.go @@ -44,6 +44,7 @@ func TestValidateFile(t *testing.T) { "custom_ilm_policy": {}, "profiling_symbolizer": {}, "logs_synthetic_mode": {}, + "knowledge_base": {}, "bad_additional_content": { "bad-bad", []string{ @@ -227,6 +228,13 @@ func TestValidateFile(t *testing.T) { `field data_stream.vars.data_stream.dataset: Does not match pattern '^[a-zA-Z0-9]+[a-zA-Z0-9\._]*$'`, }, }, + "bad_knowledge_base": { + "index_data/foo/manifest.yml", + []string{ + `field (root): index is required`, + `field (root): Additional property unknown is not allowed`, + }, + }, } for pkgName, test := range tests { diff --git a/spec/changelog.yml b/spec/changelog.yml index e953eb5da..a1792d07a 100644 --- a/spec/changelog.yml +++ b/spec/changelog.yml @@ -7,6 +7,12 @@ - description: Add support for content packages. type: enhancement link: https://github.com/elastic/package-spec/pull/777 + - description: Add support for "Kibana knowledge base entry" assets. + type: enhancement + link: https://github.com/elastic/package-spec/pull/807 + - description: Add support for semantic_text field definition + type: enhancement + link: https://github.com/elastic/package-spec/pull/807 - version: 3.3.0-next changes: - description: Add support for `slo` assets. diff --git a/spec/content/index_data/manifest.spec.yml b/spec/content/index_data/manifest.spec.yml new file mode 100644 index 000000000..bb7202e38 --- /dev/null +++ b/spec/content/index_data/manifest.spec.yml @@ -0,0 +1,69 @@ +## +## Describes the specification for a Kibana knowledge base entry's manifest.yml file +## +spec: + type: object + additionalProperties: false + properties: + type: + type: string + description: > + Type of the index data. + enum: + - knowledge_base_entry + description: + description: A description of what the index data provides + type: string + + # Conditional properties. + title: true + index: true + retrieval: true + allOf: + - if: + properties: + type: + const: knowledge_base_entry + required: + - type + then: + properties: + title: + description: The title of the knowledge base entry as used by the knowledge base + type: string + index: + type: object + additionalProperties: false + properties: + system: + description: Specify whether the index should be system-managed or not + type: boolean + required: + - system + retrieval: + type: object + additionalProperties: false + properties: + syntactic_fields: + description: List of fields that should be used for syntactic search during retrieval. + type: array + items: + type: string + semantic_fields: + description: List of fields that should be used for semantic search during retrieval. + type: array + items: + type: string + required: + - syntactic_fields + - semantic_fields + required: + - index + - retrieval + else: + not: + required: + - index + - retrieval + required: + - type diff --git a/spec/content/index_data/spec.yml b/spec/content/index_data/spec.yml new file mode 100644 index 000000000..b0e55e33c --- /dev/null +++ b/spec/content/index_data/spec.yml @@ -0,0 +1,33 @@ +spec: + additionalContents: false + totalContentsLimit: 50 + contents: + - description: Folder containing a single index data definition + type: folder + pattern: '^[a-z0-9_]+[a-z0-9]$' + required: true + additionalContents: false + contents: + - description: An index data manifest file + type: file + contentMediaType: "application/x-yaml" + sizeLimit: 2MB + name: "manifest.yml" + required: true + $ref: "./manifest.spec.yml" + - description: Folder containing field definitions for the index + type: folder + name: fields + required: true + $ref: "../../integration/data_stream/fields/spec.yml" + - description: Folder containing content files + type: folder + name: content + required: true + additionalContents: false + contents: + - description: An index data's content file + type: file + sizeLimit: 20MB + contentMediaType: "application/x-ndjson" + pattern: '^content(-[a-z0-9]+)?\.ndjson$' diff --git a/spec/content/spec.yml b/spec/content/spec.yml index f5b23ef5b..1f3eae44c 100644 --- a/spec/content/spec.yml +++ b/spec/content/spec.yml @@ -46,6 +46,11 @@ spec: name: kibana required: false $ref: "./kibana/spec.yml" + - description: Folder containing Index data assets used by the package + type: folder + name: index_data + required: false + $ref: "./index_data/spec.yml" - description: Configuration file to process the results returned from the package validation. This file is just for package validation and it should be ignored when installing or using the package. type: file contentMediaType: "application/x-yaml" diff --git a/spec/integration/data_stream/fields/fields.spec.yml b/spec/integration/data_stream/fields/fields.spec.yml index 36879a81c..a9f28fc96 100644 --- a/spec/integration/data_stream/fields/fields.spec.yml +++ b/spec/integration/data_stream/fields/fields.spec.yml @@ -91,6 +91,7 @@ spec: - version - unsigned_long - counted_keyword + - semantic_text description: description: Short description of field @@ -423,6 +424,12 @@ spec: type: boolean default: true + inference_id: + description: > + For semantic_text fields, this specifies the id of the inference + endpoint associated with the field + type: string + # Conditional properties. default_metric: true metrics: true @@ -590,12 +597,30 @@ spec: - object required: - type + - if: + required: + - inference_id + then: + properties: + type: + enum: + - semantic_text + required: + - type required: - name # JSON patches for newer versions should be placed on top versions: + - before: 3.4.0 + patch: + - op: remove + path: "/items/properties/type/enum/35" #remove semantic_text type + - op: remove + path: "/items/allOf/9" # removing inference_id when type is semantic_text + - op: remove + path: "/items/properties/inference_id" # removing inference_id field - before: 3.2.0 patch: - op: remove diff --git a/spec/integration/kibana/spec.yml b/spec/integration/kibana/spec.yml index 2bded0cc6..a2101df36 100644 --- a/spec/integration/kibana/spec.yml +++ b/spec/integration/kibana/spec.yml @@ -135,7 +135,7 @@ spec: contentMediaType: "application/json" pattern: '^{PACKAGE_NAME}-.+\.json$' forbiddenPatterns: - - '^.+-(ecs|ECS)\.json$' # ECS suffix is forbidden + - '^.+-(ecs|ECS)\.json$' # ECS suffix is forbidden versions: - before: 3.3.0 patch: diff --git a/test/packages/bad_knowledge_base/LICENSE.txt b/test/packages/bad_knowledge_base/LICENSE.txt new file mode 100644 index 000000000..809108b85 --- /dev/null +++ b/test/packages/bad_knowledge_base/LICENSE.txt @@ -0,0 +1,93 @@ +Elastic License 2.0 + +URL: https://www.elastic.co/licensing/elastic-license + +## Acceptance + +By using the software, you agree to all of the terms and conditions below. + +## Copyright License + +The licensor grants you a non-exclusive, royalty-free, worldwide, +non-sublicensable, non-transferable license to use, copy, distribute, make +available, and prepare derivative works of the software, in each case subject to +the limitations and conditions below. + +## Limitations + +You may not provide the software to third parties as a hosted or managed +service, where the service provides users with access to any substantial set of +the features or functionality of the software. + +You may not move, change, disable, or circumvent the license key functionality +in the software, and you may not remove or obscure any functionality in the +software that is protected by the license key. + +You may not alter, remove, or obscure any licensing, copyright, or other notices +of the licensor in the software. Any use of the licensor’s trademarks is subject +to applicable law. + +## Patents + +The licensor grants you a license, under any patent claims the licensor can +license, or becomes able to license, to make, have made, use, sell, offer for +sale, import and have imported the software, in each case subject to the +limitations and conditions in this license. This license does not cover any +patent claims that you cause to be infringed by modifications or additions to +the software. If you or your company make any written claim that the software +infringes or contributes to infringement of any patent, your patent license for +the software granted under these terms ends immediately. If your company makes +such a claim, your patent license ends immediately for work on behalf of your +company. + +## Notices + +You must ensure that anyone who gets a copy of any part of the software from you +also gets a copy of these terms. + +If you modify the software, you must include in any modified copies of the +software prominent notices stating that you have modified the software. + +## No Other Rights + +These terms do not imply any licenses other than those expressly granted in +these terms. + +## Termination + +If you use the software in violation of these terms, such use is not licensed, +and your licenses will automatically terminate. If the licensor provides you +with a notice of your violation, and you cease all violation of this license no +later than 30 days after you receive that notice, your licenses will be +reinstated retroactively. However, if you violate these terms after such +reinstatement, any additional violation of these terms will cause your licenses +to terminate automatically and permanently. + +## No Liability + +*As far as the law allows, the software comes as is, without any warranty or +condition, and the licensor will not be liable to you for any damages arising +out of these terms or the use or nature of the software, under any kind of +legal claim.* + +## Definitions + +The **licensor** is the entity offering these terms, and the **software** is the +software the licensor makes available under these terms, including any portion +of it. + +**you** refers to the individual or entity agreeing to these terms. + +**your company** is any legal entity, sole proprietorship, or other kind of +organization that you work for, plus all organizations that have control over, +are under the control of, or are under common control with that +organization. **control** means ownership of substantially all the assets of an +entity, or the power to direct its management and policies by vote, contract, or +otherwise. Control can be direct or indirect. + +**your licenses** are all the licenses granted to you for the software under +these terms. + +**use** means anything you do with the software requiring one of your licenses. + +**trademark** means trademarks, service marks, and similar rights. diff --git a/test/packages/bad_knowledge_base/changelog.yml b/test/packages/bad_knowledge_base/changelog.yml new file mode 100644 index 000000000..5f5b07933 --- /dev/null +++ b/test/packages/bad_knowledge_base/changelog.yml @@ -0,0 +1,5 @@ +- version: 0.1.0 + changes: + - description: Initial release + type: enhancement + link: https://github.com/elastic/package-spec/pull/807 diff --git a/test/packages/bad_knowledge_base/docs/README.md b/test/packages/bad_knowledge_base/docs/README.md new file mode 100644 index 000000000..1a9dfb44c --- /dev/null +++ b/test/packages/bad_knowledge_base/docs/README.md @@ -0,0 +1 @@ +This is a template for the package README. \ No newline at end of file diff --git a/test/packages/bad_knowledge_base/img/kibana-system.png b/test/packages/bad_knowledge_base/img/kibana-system.png new file mode 100644 index 000000000..8741a5662 Binary files /dev/null and b/test/packages/bad_knowledge_base/img/kibana-system.png differ diff --git a/test/packages/bad_knowledge_base/img/system.svg b/test/packages/bad_knowledge_base/img/system.svg new file mode 100644 index 000000000..0aba96275 --- /dev/null +++ b/test/packages/bad_knowledge_base/img/system.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/packages/bad_knowledge_base/index_data/foo/content/content-0.ndjson b/test/packages/bad_knowledge_base/index_data/foo/content/content-0.ndjson new file mode 100644 index 000000000..478e6308d --- /dev/null +++ b/test/packages/bad_knowledge_base/index_data/foo/content/content-0.ndjson @@ -0,0 +1,2 @@ +{"content_title":"Kibana 8.13.3 | Kibana Guide [8.15] | Elastic","content_body":{"text":"\n\nKibana 8.13.3edit\n\nThe 8.13.3 release includes the following bug fixes.\nBug Fixesedit\n\n\n\n\nAlerting\n\n\n\n\n\n\nManage loading fields at initialization (#180412).\n\n\n\n\n\n\nElastic Security\n\n\n\nFor the Elastic Security 8.13.3 release information, refer to Elastic Security Solution Release Notes.\n\n\n\nFleet\n\n\n\n\n\n\nFixes managed agent policy preconfiguration update (#181624).\n\n\nUse lowercase dataset in template names (#180887).\n\n\nFixes KQL/kuery for getting Fleet Server agent count (#180650).\n\n\n\n\n\n\nIndex Management\n\n\n\n\n\n\nFixes allow_auto_create field in the Index Template form (#178321).\n\n\n\n\n\n\nLens & Visualizations\n\n\n\n\n\n\nFixes controls on fields with custom label (#180615).\n\n\n\n\n\n\nMachine Learning\n\n\n\n\n\n\nFixes deep link for Index data visualizer & ES|QL data visualizer (#180389).\n\n\n\n\n\n\nObservability\n\n\n\n\n\n\nMake anomalyDetectorTypes optional (#180717).\n\n\n\n\n\n\nSharedUX\n\n\n\n\n\n\nRevert change to shared UX markdown component for dashboard vis (#180906).\n\n\n\n\n\n\nSharing\n\n\n\n\n\n\nDefault to saved object description when panel description is not provided (#181177).\n\n\n\n\n\n\n","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3edit\n\nThe 8.13.3 release includes the following bug fixes.\nBug Fixesedit\n\n\n\n\nAlerting\n\n\n\n\n\n\nManage loading fields at initialization (#180412).\n\n\n\n\n\n\nElastic Security\n\n\n\nFor the Elastic Security 8.13.3 release information, refer to Elastic Security Solution Release Notes.\n\n\n\nFleet\n\n\n\n\n\n\nFixes managed agent policy preconfiguration update (#181624).\n\n\nUse lowercase dataset in template names (#180887).\n\n\nFixes KQL/kuery for getting Fleet Server agent count (#180650).\n\n\n\n\n\n\nIndex Management\n\n\n\n\n\n\nFixes allow_auto_create field in the Index Template form (#178321).\n\n\n\n\n\n\nLens & Visualizations\n\n\n\n\n\n\nFixes controls on fields with custom label (#180615).\n\n\n\n\n\n\nMachine Learning\n\n\n\n\n\n\nFixes deep link for Index data visualizer & ES|QL data visualizer (#180389).\n\n\n\n\n\n\nObservability\n\n\n\n\n\n\nMake anomalyDetectorTypes optional (#180717).\n\n\n\n\n\n\nSharedUX\n\n\n\n\n\n\nRevert change to shared UX markdown component for dashboard vis (#180906).\n\n\n\n\n\n\nSharing\n\n\n\n\n\n\nDefault to saved object description when panel description is not provided (#181177).","embeddings":{"3":0.5052793,"8":1.3079101}}]}},"root_type":"documentation","ai_subtitle":{"text":"Kibana 8.13.3 Update; Critical Bug Fixes in Alerting, Fleet, Index Management, Visualizations, ML, Observability, SharedUX, Sharing.","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3 Update; Critical Bug Fixes in Alerting, Fleet, Index Management, Visualizations, ML, Observability, SharedUX, Sharing.","embeddings":{"3":0.37727332,"8":1.184852}}]}},"ai_summary":{"text":"Kibana 8.13.3 Release; Alerting; Elastic Security; Fleet; Index Management; Lens & Visualizations; Machine Learning; Observability; SharedUX; Sharing. The Kibana 8.13.3 update delivers critical bug fixes across various components including Alerting, Fleet, Index Management, Lens & Visualizations, Machine Learning, Observability, SharedUX, and Sharing. Key improvements involve loading fields at initialization for Alerting, managed policy updates and lowercase dataset handling in Fleet, auto-create settings in Index Management, field controls in Lens & Visualizations, deep linking in Machine Learning, anomaly detection in Observability, markdown component in SharedUX, and saved object descriptions in Sharing.","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3 Release; Alerting; Elastic Security; Fleet; Index Management; Lens & Visualizations; Machine Learning; Observability; SharedUX; Sharing. The Kibana 8.13.3 update delivers critical bug fixes across various components including Alerting, Fleet, Index Management, Lens & Visualizations, Machine Learning, Observability, SharedUX, and Sharing. Key improvements involve loading fields at initialization for Alerting, managed policy updates and lowercase dataset handling in Fleet, auto-create settings in Index Management, field controls in Lens & Visualizations, deep linking in Machine Learning, anomaly detection in Observability, markdown component in SharedUX, and saved object descriptions in Sharing.","embeddings":{"3":0.48509678,"7":0.029003777}}]}},"ai_tags":["Kibana","Alerting","Elastic Security","Fleet","Index Management","Lens & Visualizations","Machine Learning","Observability","SharedUX","Sharing"],"product_name":"Kibana","version":"8.15","slug":"guide-en-kibana-release-notes-8.13.3.html","url":"https://www.elastic.co/guide/en/kibana/8.15/release-notes-8.13.3.html","ai_questions_answered":{"text":["What are the main components updated in Kibana 8.13.3?","How does the Alerting feature improve in Kibana 8.13.3?","What changes were made to Fleet in the Kibana 8.13.3 release?","What was the fix applied to Index Management in Kibana 8.13.3?","How were field controls enhanced in Lens & Visualizations for Kibana 8.13.3?","What Machine Learning deep linking issues were fixed in Kibana 8.13.3?","What anomaly detection updates are included in the Observability module for Kibana 8.13.3?","What changes occurred in the SharedUX markdown component in Kibana 8.13.3?","How does the Sharing feature handle descriptions differently in Kibana 8.13.3?"],"inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"What are the main components updated in Kibana 8.13.3?","embeddings":{"0":0.06638469,"3":0.4976597}}]}}} +{"content_title":"Kibana 8.13.3 BIS | Kibana Guide [8.15] | Elastic","content_body":{"text":"\n\nKibana 8.13.3edit\n\nThe 8.13.3 release includes the following bug fixes.\nBug Fixesedit\n\n\n\n\nAlerting\n\n\n\n\n\n\nManage loading fields at initialization (#180412).\n\n\n\n\n\n\nElastic Security\n\n\n\nFor the Elastic Security 8.13.3 release information, refer to Elastic Security Solution Release Notes.\n\n\n\nFleet\n\n\n\n\n\n\nFixes managed agent policy preconfiguration update (#181624).\n\n\nUse lowercase dataset in template names (#180887).\n\n\nFixes KQL/kuery for getting Fleet Server agent count (#180650).\n\n\n\n\n\n\nIndex Management\n\n\n\n\n\n\nFixes allow_auto_create field in the Index Template form (#178321).\n\n\n\n\n\n\nLens & Visualizations\n\n\n\n\n\n\nFixes controls on fields with custom label (#180615).\n\n\n\n\n\n\nMachine Learning\n\n\n\n\n\n\nFixes deep link for Index data visualizer & ES|QL data visualizer (#180389).\n\n\n\n\n\n\nObservability\n\n\n\n\n\n\nMake anomalyDetectorTypes optional (#180717).\n\n\n\n\n\n\nSharedUX\n\n\n\n\n\n\nRevert change to shared UX markdown component for dashboard vis (#180906).\n\n\n\n\n\n\nSharing\n\n\n\n\n\n\nDefault to saved object description when panel description is not provided (#181177).\n\n\n\n\n\n\n","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3edit\n\nThe 8.13.3 release includes the following bug fixes.\nBug Fixesedit\n\n\n\n\nAlerting\n\n\n\n\n\n\nManage loading fields at initialization (#180412).\n\n\n\n\n\n\nElastic Security\n\n\n\nFor the Elastic Security 8.13.3 release information, refer to Elastic Security Solution Release Notes.\n\n\n\nFleet\n\n\n\n\n\n\nFixes managed agent policy preconfiguration update (#181624).\n\n\nUse lowercase dataset in template names (#180887).\n\n\nFixes KQL/kuery for getting Fleet Server agent count (#180650).\n\n\n\n\n\n\nIndex Management\n\n\n\n\n\n\nFixes allow_auto_create field in the Index Template form (#178321).\n\n\n\n\n\n\nLens & Visualizations\n\n\n\n\n\n\nFixes controls on fields with custom label (#180615).\n\n\n\n\n\n\nMachine Learning\n\n\n\n\n\n\nFixes deep link for Index data visualizer & ES|QL data visualizer (#180389).\n\n\n\n\n\n\nObservability\n\n\n\n\n\n\nMake anomalyDetectorTypes optional (#180717).\n\n\n\n\n\n\nSharedUX\n\n\n\n\n\n\nRevert change to shared UX markdown component for dashboard vis (#180906).\n\n\n\n\n\n\nSharing\n\n\n\n\n\n\nDefault to saved object description when panel description is not provided (#181177).","embeddings":{"3":0.5052793,"8":1.3079101}}]}},"root_type":"documentation","ai_subtitle":{"text":"Kibana 8.13.3 Update; Critical Bug Fixes in Alerting, Fleet, Index Management, Visualizations, ML, Observability, SharedUX, Sharing.","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3 Update; Critical Bug Fixes in Alerting, Fleet, Index Management, Visualizations, ML, Observability, SharedUX, Sharing.","embeddings":{"3":0.37727332,"8":1.184852}}]}},"ai_summary":{"text":"Kibana 8.13.3 Release; Alerting; Elastic Security; Fleet; Index Management; Lens & Visualizations; Machine Learning; Observability; SharedUX; Sharing. The Kibana 8.13.3 update delivers critical bug fixes across various components including Alerting, Fleet, Index Management, Lens & Visualizations, Machine Learning, Observability, SharedUX, and Sharing. Key improvements involve loading fields at initialization for Alerting, managed policy updates and lowercase dataset handling in Fleet, auto-create settings in Index Management, field controls in Lens & Visualizations, deep linking in Machine Learning, anomaly detection in Observability, markdown component in SharedUX, and saved object descriptions in Sharing.","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3 Release; Alerting; Elastic Security; Fleet; Index Management; Lens & Visualizations; Machine Learning; Observability; SharedUX; Sharing. The Kibana 8.13.3 update delivers critical bug fixes across various components including Alerting, Fleet, Index Management, Lens & Visualizations, Machine Learning, Observability, SharedUX, and Sharing. Key improvements involve loading fields at initialization for Alerting, managed policy updates and lowercase dataset handling in Fleet, auto-create settings in Index Management, field controls in Lens & Visualizations, deep linking in Machine Learning, anomaly detection in Observability, markdown component in SharedUX, and saved object descriptions in Sharing.","embeddings":{"3":0.48509678,"7":0.029003777}}]}},"ai_tags":["Kibana","Alerting","Elastic Security","Fleet","Index Management","Lens & Visualizations","Machine Learning","Observability","SharedUX","Sharing"],"product_name":"Kibana","version":"8.15","slug":"guide-en-kibana-release-notes-8.13.3.html","url":"https://www.elastic.co/guide/en/kibana/8.15/release-notes-8.13.3.html","ai_questions_answered":{"text":["What are the main components updated in Kibana 8.13.3?","How does the Alerting feature improve in Kibana 8.13.3?","What changes were made to Fleet in the Kibana 8.13.3 release?","What was the fix applied to Index Management in Kibana 8.13.3?","How were field controls enhanced in Lens & Visualizations for Kibana 8.13.3?","What Machine Learning deep linking issues were fixed in Kibana 8.13.3?","What anomaly detection updates are included in the Observability module for Kibana 8.13.3?","What changes occurred in the SharedUX markdown component in Kibana 8.13.3?","How does the Sharing feature handle descriptions differently in Kibana 8.13.3?"],"inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"What are the main components updated in Kibana 8.13.3?","embeddings":{"0":0.06638469,"3":0.4976597}}]}}} diff --git a/test/packages/bad_knowledge_base/index_data/foo/fields/fields.yml b/test/packages/bad_knowledge_base/index_data/foo/fields/fields.yml new file mode 100644 index 000000000..eff8441c5 --- /dev/null +++ b/test/packages/bad_knowledge_base/index_data/foo/fields/fields.yml @@ -0,0 +1,14 @@ +- name: content_title + type: text + description: The title of the document +- name: content_body + type: semantic_text + inference_id: kibana-elser2 + description: The content of the document +- name: product_name + type: keyword + description: The product this document is associated to +- name: ai_summary + type: semantic_text + inference_id: kibana-elser2 + description: AI-generated summary of the document \ No newline at end of file diff --git a/test/packages/bad_knowledge_base/index_data/foo/manifest.yml b/test/packages/bad_knowledge_base/index_data/foo/manifest.yml new file mode 100644 index 000000000..48195c0ec --- /dev/null +++ b/test/packages/bad_knowledge_base/index_data/foo/manifest.yml @@ -0,0 +1,11 @@ +type: knowledge_base_entry +title: foo +description: > + Knowledge base entry containing all the foo-related documentation +unknown: maybe +retrieval: + syntactic_fields: + - content_title + semantic_fields: + - content_body + - ai_summary diff --git a/test/packages/bad_knowledge_base/manifest.yml b/test/packages/bad_knowledge_base/manifest.yml new file mode 100644 index 000000000..73b97f290 --- /dev/null +++ b/test/packages/bad_knowledge_base/manifest.yml @@ -0,0 +1,27 @@ +format_version: 3.4.0 +name: knowledge_base +title: Knowledge base test content package +description: > + This package is a dummy example for packages containing a knowledge base entry. +version: 0.1.0 +type: content +source: + license: "Elastic-2.0" +conditions: + kibana: + version: '^8.15.0' + elastic: + subscription: 'enterprise' +screenshots: + - src: /img/kibana-system.png + title: kibana system + size: 1220x852 + type: image/png +icons: + - src: /img/system.svg + title: system + size: 1000x1000 + type: image/svg+xml +owner: + github: elastic/ecosystem + type: elastic diff --git a/test/packages/bad_knowledge_base/validation.yml b/test/packages/bad_knowledge_base/validation.yml new file mode 100644 index 000000000..fa39a1d6f --- /dev/null +++ b/test/packages/bad_knowledge_base/validation.yml @@ -0,0 +1,3 @@ +errors: + exclude_checks: + - PSR00002 # Allow to use non-GA features. diff --git a/test/packages/knowledge_base/LICENSE.txt b/test/packages/knowledge_base/LICENSE.txt new file mode 100644 index 000000000..809108b85 --- /dev/null +++ b/test/packages/knowledge_base/LICENSE.txt @@ -0,0 +1,93 @@ +Elastic License 2.0 + +URL: https://www.elastic.co/licensing/elastic-license + +## Acceptance + +By using the software, you agree to all of the terms and conditions below. + +## Copyright License + +The licensor grants you a non-exclusive, royalty-free, worldwide, +non-sublicensable, non-transferable license to use, copy, distribute, make +available, and prepare derivative works of the software, in each case subject to +the limitations and conditions below. + +## Limitations + +You may not provide the software to third parties as a hosted or managed +service, where the service provides users with access to any substantial set of +the features or functionality of the software. + +You may not move, change, disable, or circumvent the license key functionality +in the software, and you may not remove or obscure any functionality in the +software that is protected by the license key. + +You may not alter, remove, or obscure any licensing, copyright, or other notices +of the licensor in the software. Any use of the licensor’s trademarks is subject +to applicable law. + +## Patents + +The licensor grants you a license, under any patent claims the licensor can +license, or becomes able to license, to make, have made, use, sell, offer for +sale, import and have imported the software, in each case subject to the +limitations and conditions in this license. This license does not cover any +patent claims that you cause to be infringed by modifications or additions to +the software. If you or your company make any written claim that the software +infringes or contributes to infringement of any patent, your patent license for +the software granted under these terms ends immediately. If your company makes +such a claim, your patent license ends immediately for work on behalf of your +company. + +## Notices + +You must ensure that anyone who gets a copy of any part of the software from you +also gets a copy of these terms. + +If you modify the software, you must include in any modified copies of the +software prominent notices stating that you have modified the software. + +## No Other Rights + +These terms do not imply any licenses other than those expressly granted in +these terms. + +## Termination + +If you use the software in violation of these terms, such use is not licensed, +and your licenses will automatically terminate. If the licensor provides you +with a notice of your violation, and you cease all violation of this license no +later than 30 days after you receive that notice, your licenses will be +reinstated retroactively. However, if you violate these terms after such +reinstatement, any additional violation of these terms will cause your licenses +to terminate automatically and permanently. + +## No Liability + +*As far as the law allows, the software comes as is, without any warranty or +condition, and the licensor will not be liable to you for any damages arising +out of these terms or the use or nature of the software, under any kind of +legal claim.* + +## Definitions + +The **licensor** is the entity offering these terms, and the **software** is the +software the licensor makes available under these terms, including any portion +of it. + +**you** refers to the individual or entity agreeing to these terms. + +**your company** is any legal entity, sole proprietorship, or other kind of +organization that you work for, plus all organizations that have control over, +are under the control of, or are under common control with that +organization. **control** means ownership of substantially all the assets of an +entity, or the power to direct its management and policies by vote, contract, or +otherwise. Control can be direct or indirect. + +**your licenses** are all the licenses granted to you for the software under +these terms. + +**use** means anything you do with the software requiring one of your licenses. + +**trademark** means trademarks, service marks, and similar rights. diff --git a/test/packages/knowledge_base/changelog.yml b/test/packages/knowledge_base/changelog.yml new file mode 100644 index 000000000..5f5b07933 --- /dev/null +++ b/test/packages/knowledge_base/changelog.yml @@ -0,0 +1,5 @@ +- version: 0.1.0 + changes: + - description: Initial release + type: enhancement + link: https://github.com/elastic/package-spec/pull/807 diff --git a/test/packages/knowledge_base/docs/README.md b/test/packages/knowledge_base/docs/README.md new file mode 100644 index 000000000..1a9dfb44c --- /dev/null +++ b/test/packages/knowledge_base/docs/README.md @@ -0,0 +1 @@ +This is a template for the package README. \ No newline at end of file diff --git a/test/packages/knowledge_base/img/kibana-system.png b/test/packages/knowledge_base/img/kibana-system.png new file mode 100644 index 000000000..8741a5662 Binary files /dev/null and b/test/packages/knowledge_base/img/kibana-system.png differ diff --git a/test/packages/knowledge_base/img/system.svg b/test/packages/knowledge_base/img/system.svg new file mode 100644 index 000000000..0aba96275 --- /dev/null +++ b/test/packages/knowledge_base/img/system.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/packages/knowledge_base/index_data/foo/content/content-0.ndjson b/test/packages/knowledge_base/index_data/foo/content/content-0.ndjson new file mode 100644 index 000000000..478e6308d --- /dev/null +++ b/test/packages/knowledge_base/index_data/foo/content/content-0.ndjson @@ -0,0 +1,2 @@ +{"content_title":"Kibana 8.13.3 | Kibana Guide [8.15] | Elastic","content_body":{"text":"\n\nKibana 8.13.3edit\n\nThe 8.13.3 release includes the following bug fixes.\nBug Fixesedit\n\n\n\n\nAlerting\n\n\n\n\n\n\nManage loading fields at initialization (#180412).\n\n\n\n\n\n\nElastic Security\n\n\n\nFor the Elastic Security 8.13.3 release information, refer to Elastic Security Solution Release Notes.\n\n\n\nFleet\n\n\n\n\n\n\nFixes managed agent policy preconfiguration update (#181624).\n\n\nUse lowercase dataset in template names (#180887).\n\n\nFixes KQL/kuery for getting Fleet Server agent count (#180650).\n\n\n\n\n\n\nIndex Management\n\n\n\n\n\n\nFixes allow_auto_create field in the Index Template form (#178321).\n\n\n\n\n\n\nLens & Visualizations\n\n\n\n\n\n\nFixes controls on fields with custom label (#180615).\n\n\n\n\n\n\nMachine Learning\n\n\n\n\n\n\nFixes deep link for Index data visualizer & ES|QL data visualizer (#180389).\n\n\n\n\n\n\nObservability\n\n\n\n\n\n\nMake anomalyDetectorTypes optional (#180717).\n\n\n\n\n\n\nSharedUX\n\n\n\n\n\n\nRevert change to shared UX markdown component for dashboard vis (#180906).\n\n\n\n\n\n\nSharing\n\n\n\n\n\n\nDefault to saved object description when panel description is not provided (#181177).\n\n\n\n\n\n\n","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3edit\n\nThe 8.13.3 release includes the following bug fixes.\nBug Fixesedit\n\n\n\n\nAlerting\n\n\n\n\n\n\nManage loading fields at initialization (#180412).\n\n\n\n\n\n\nElastic Security\n\n\n\nFor the Elastic Security 8.13.3 release information, refer to Elastic Security Solution Release Notes.\n\n\n\nFleet\n\n\n\n\n\n\nFixes managed agent policy preconfiguration update (#181624).\n\n\nUse lowercase dataset in template names (#180887).\n\n\nFixes KQL/kuery for getting Fleet Server agent count (#180650).\n\n\n\n\n\n\nIndex Management\n\n\n\n\n\n\nFixes allow_auto_create field in the Index Template form (#178321).\n\n\n\n\n\n\nLens & Visualizations\n\n\n\n\n\n\nFixes controls on fields with custom label (#180615).\n\n\n\n\n\n\nMachine Learning\n\n\n\n\n\n\nFixes deep link for Index data visualizer & ES|QL data visualizer (#180389).\n\n\n\n\n\n\nObservability\n\n\n\n\n\n\nMake anomalyDetectorTypes optional (#180717).\n\n\n\n\n\n\nSharedUX\n\n\n\n\n\n\nRevert change to shared UX markdown component for dashboard vis (#180906).\n\n\n\n\n\n\nSharing\n\n\n\n\n\n\nDefault to saved object description when panel description is not provided (#181177).","embeddings":{"3":0.5052793,"8":1.3079101}}]}},"root_type":"documentation","ai_subtitle":{"text":"Kibana 8.13.3 Update; Critical Bug Fixes in Alerting, Fleet, Index Management, Visualizations, ML, Observability, SharedUX, Sharing.","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3 Update; Critical Bug Fixes in Alerting, Fleet, Index Management, Visualizations, ML, Observability, SharedUX, Sharing.","embeddings":{"3":0.37727332,"8":1.184852}}]}},"ai_summary":{"text":"Kibana 8.13.3 Release; Alerting; Elastic Security; Fleet; Index Management; Lens & Visualizations; Machine Learning; Observability; SharedUX; Sharing. The Kibana 8.13.3 update delivers critical bug fixes across various components including Alerting, Fleet, Index Management, Lens & Visualizations, Machine Learning, Observability, SharedUX, and Sharing. Key improvements involve loading fields at initialization for Alerting, managed policy updates and lowercase dataset handling in Fleet, auto-create settings in Index Management, field controls in Lens & Visualizations, deep linking in Machine Learning, anomaly detection in Observability, markdown component in SharedUX, and saved object descriptions in Sharing.","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3 Release; Alerting; Elastic Security; Fleet; Index Management; Lens & Visualizations; Machine Learning; Observability; SharedUX; Sharing. The Kibana 8.13.3 update delivers critical bug fixes across various components including Alerting, Fleet, Index Management, Lens & Visualizations, Machine Learning, Observability, SharedUX, and Sharing. Key improvements involve loading fields at initialization for Alerting, managed policy updates and lowercase dataset handling in Fleet, auto-create settings in Index Management, field controls in Lens & Visualizations, deep linking in Machine Learning, anomaly detection in Observability, markdown component in SharedUX, and saved object descriptions in Sharing.","embeddings":{"3":0.48509678,"7":0.029003777}}]}},"ai_tags":["Kibana","Alerting","Elastic Security","Fleet","Index Management","Lens & Visualizations","Machine Learning","Observability","SharedUX","Sharing"],"product_name":"Kibana","version":"8.15","slug":"guide-en-kibana-release-notes-8.13.3.html","url":"https://www.elastic.co/guide/en/kibana/8.15/release-notes-8.13.3.html","ai_questions_answered":{"text":["What are the main components updated in Kibana 8.13.3?","How does the Alerting feature improve in Kibana 8.13.3?","What changes were made to Fleet in the Kibana 8.13.3 release?","What was the fix applied to Index Management in Kibana 8.13.3?","How were field controls enhanced in Lens & Visualizations for Kibana 8.13.3?","What Machine Learning deep linking issues were fixed in Kibana 8.13.3?","What anomaly detection updates are included in the Observability module for Kibana 8.13.3?","What changes occurred in the SharedUX markdown component in Kibana 8.13.3?","How does the Sharing feature handle descriptions differently in Kibana 8.13.3?"],"inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"What are the main components updated in Kibana 8.13.3?","embeddings":{"0":0.06638469,"3":0.4976597}}]}}} +{"content_title":"Kibana 8.13.3 BIS | Kibana Guide [8.15] | Elastic","content_body":{"text":"\n\nKibana 8.13.3edit\n\nThe 8.13.3 release includes the following bug fixes.\nBug Fixesedit\n\n\n\n\nAlerting\n\n\n\n\n\n\nManage loading fields at initialization (#180412).\n\n\n\n\n\n\nElastic Security\n\n\n\nFor the Elastic Security 8.13.3 release information, refer to Elastic Security Solution Release Notes.\n\n\n\nFleet\n\n\n\n\n\n\nFixes managed agent policy preconfiguration update (#181624).\n\n\nUse lowercase dataset in template names (#180887).\n\n\nFixes KQL/kuery for getting Fleet Server agent count (#180650).\n\n\n\n\n\n\nIndex Management\n\n\n\n\n\n\nFixes allow_auto_create field in the Index Template form (#178321).\n\n\n\n\n\n\nLens & Visualizations\n\n\n\n\n\n\nFixes controls on fields with custom label (#180615).\n\n\n\n\n\n\nMachine Learning\n\n\n\n\n\n\nFixes deep link for Index data visualizer & ES|QL data visualizer (#180389).\n\n\n\n\n\n\nObservability\n\n\n\n\n\n\nMake anomalyDetectorTypes optional (#180717).\n\n\n\n\n\n\nSharedUX\n\n\n\n\n\n\nRevert change to shared UX markdown component for dashboard vis (#180906).\n\n\n\n\n\n\nSharing\n\n\n\n\n\n\nDefault to saved object description when panel description is not provided (#181177).\n\n\n\n\n\n\n","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3edit\n\nThe 8.13.3 release includes the following bug fixes.\nBug Fixesedit\n\n\n\n\nAlerting\n\n\n\n\n\n\nManage loading fields at initialization (#180412).\n\n\n\n\n\n\nElastic Security\n\n\n\nFor the Elastic Security 8.13.3 release information, refer to Elastic Security Solution Release Notes.\n\n\n\nFleet\n\n\n\n\n\n\nFixes managed agent policy preconfiguration update (#181624).\n\n\nUse lowercase dataset in template names (#180887).\n\n\nFixes KQL/kuery for getting Fleet Server agent count (#180650).\n\n\n\n\n\n\nIndex Management\n\n\n\n\n\n\nFixes allow_auto_create field in the Index Template form (#178321).\n\n\n\n\n\n\nLens & Visualizations\n\n\n\n\n\n\nFixes controls on fields with custom label (#180615).\n\n\n\n\n\n\nMachine Learning\n\n\n\n\n\n\nFixes deep link for Index data visualizer & ES|QL data visualizer (#180389).\n\n\n\n\n\n\nObservability\n\n\n\n\n\n\nMake anomalyDetectorTypes optional (#180717).\n\n\n\n\n\n\nSharedUX\n\n\n\n\n\n\nRevert change to shared UX markdown component for dashboard vis (#180906).\n\n\n\n\n\n\nSharing\n\n\n\n\n\n\nDefault to saved object description when panel description is not provided (#181177).","embeddings":{"3":0.5052793,"8":1.3079101}}]}},"root_type":"documentation","ai_subtitle":{"text":"Kibana 8.13.3 Update; Critical Bug Fixes in Alerting, Fleet, Index Management, Visualizations, ML, Observability, SharedUX, Sharing.","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3 Update; Critical Bug Fixes in Alerting, Fleet, Index Management, Visualizations, ML, Observability, SharedUX, Sharing.","embeddings":{"3":0.37727332,"8":1.184852}}]}},"ai_summary":{"text":"Kibana 8.13.3 Release; Alerting; Elastic Security; Fleet; Index Management; Lens & Visualizations; Machine Learning; Observability; SharedUX; Sharing. The Kibana 8.13.3 update delivers critical bug fixes across various components including Alerting, Fleet, Index Management, Lens & Visualizations, Machine Learning, Observability, SharedUX, and Sharing. Key improvements involve loading fields at initialization for Alerting, managed policy updates and lowercase dataset handling in Fleet, auto-create settings in Index Management, field controls in Lens & Visualizations, deep linking in Machine Learning, anomaly detection in Observability, markdown component in SharedUX, and saved object descriptions in Sharing.","inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"Kibana 8.13.3 Release; Alerting; Elastic Security; Fleet; Index Management; Lens & Visualizations; Machine Learning; Observability; SharedUX; Sharing. The Kibana 8.13.3 update delivers critical bug fixes across various components including Alerting, Fleet, Index Management, Lens & Visualizations, Machine Learning, Observability, SharedUX, and Sharing. Key improvements involve loading fields at initialization for Alerting, managed policy updates and lowercase dataset handling in Fleet, auto-create settings in Index Management, field controls in Lens & Visualizations, deep linking in Machine Learning, anomaly detection in Observability, markdown component in SharedUX, and saved object descriptions in Sharing.","embeddings":{"3":0.48509678,"7":0.029003777}}]}},"ai_tags":["Kibana","Alerting","Elastic Security","Fleet","Index Management","Lens & Visualizations","Machine Learning","Observability","SharedUX","Sharing"],"product_name":"Kibana","version":"8.15","slug":"guide-en-kibana-release-notes-8.13.3.html","url":"https://www.elastic.co/guide/en/kibana/8.15/release-notes-8.13.3.html","ai_questions_answered":{"text":["What are the main components updated in Kibana 8.13.3?","How does the Alerting feature improve in Kibana 8.13.3?","What changes were made to Fleet in the Kibana 8.13.3 release?","What was the fix applied to Index Management in Kibana 8.13.3?","How were field controls enhanced in Lens & Visualizations for Kibana 8.13.3?","What Machine Learning deep linking issues were fixed in Kibana 8.13.3?","What anomaly detection updates are included in the Observability module for Kibana 8.13.3?","What changes occurred in the SharedUX markdown component in Kibana 8.13.3?","How does the Sharing feature handle descriptions differently in Kibana 8.13.3?"],"inference":{"inference_id":"kibana-elser2","model_settings":{"task_type":"sparse_embedding"},"chunks":[{"text":"What are the main components updated in Kibana 8.13.3?","embeddings":{"0":0.06638469,"3":0.4976597}}]}}} diff --git a/test/packages/knowledge_base/index_data/foo/fields/fields.yml b/test/packages/knowledge_base/index_data/foo/fields/fields.yml new file mode 100644 index 000000000..eff8441c5 --- /dev/null +++ b/test/packages/knowledge_base/index_data/foo/fields/fields.yml @@ -0,0 +1,14 @@ +- name: content_title + type: text + description: The title of the document +- name: content_body + type: semantic_text + inference_id: kibana-elser2 + description: The content of the document +- name: product_name + type: keyword + description: The product this document is associated to +- name: ai_summary + type: semantic_text + inference_id: kibana-elser2 + description: AI-generated summary of the document \ No newline at end of file diff --git a/test/packages/knowledge_base/index_data/foo/manifest.yml b/test/packages/knowledge_base/index_data/foo/manifest.yml new file mode 100644 index 000000000..a6505c4e8 --- /dev/null +++ b/test/packages/knowledge_base/index_data/foo/manifest.yml @@ -0,0 +1,12 @@ +type: knowledge_base_entry +title: foo +description: > + Knowledge base entry containing all the foo-related documentation +index: + system: true +retrieval: + syntactic_fields: + - content_title + semantic_fields: + - content_body + - ai_summary diff --git a/test/packages/knowledge_base/manifest.yml b/test/packages/knowledge_base/manifest.yml new file mode 100644 index 000000000..73b97f290 --- /dev/null +++ b/test/packages/knowledge_base/manifest.yml @@ -0,0 +1,27 @@ +format_version: 3.4.0 +name: knowledge_base +title: Knowledge base test content package +description: > + This package is a dummy example for packages containing a knowledge base entry. +version: 0.1.0 +type: content +source: + license: "Elastic-2.0" +conditions: + kibana: + version: '^8.15.0' + elastic: + subscription: 'enterprise' +screenshots: + - src: /img/kibana-system.png + title: kibana system + size: 1220x852 + type: image/png +icons: + - src: /img/system.svg + title: system + size: 1000x1000 + type: image/svg+xml +owner: + github: elastic/ecosystem + type: elastic diff --git a/test/packages/knowledge_base/validation.yml b/test/packages/knowledge_base/validation.yml new file mode 100644 index 000000000..fa39a1d6f --- /dev/null +++ b/test/packages/knowledge_base/validation.yml @@ -0,0 +1,3 @@ +errors: + exclude_checks: + - PSR00002 # Allow to use non-GA features.