@far-world-labs/verblets 0.2.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -213
- package/dist/index.browser.js +74 -0
- package/dist/index.js +548 -0
- package/dist/shared-C6kPWghF.js +7806 -0
- package/package.json +32 -11
- package/.cursor/launch.json +0 -30
- package/.cursor/settings.json +0 -20
- package/.github/workflows/branch-protection.yml +0 -22
- package/.github/workflows/ci.yml +0 -165
- package/.husky/pre-commit +0 -4
- package/.prettierrc +0 -6
- package/.release-it.json +0 -12
- package/.vitest.config.examples.js +0 -12
- package/.vitest.config.js +0 -8
- package/.vscode/launch.json +0 -31
- package/AGENTS.md +0 -220
- package/DEVELOPING.md +0 -105
- package/docker-compose.yml +0 -7
- package/eslint.config.js +0 -80
- package/scripts/clear-redis.js +0 -74
- package/scripts/generate-chain/index.js +0 -111
- package/scripts/generate-lib/index.js +0 -68
- package/scripts/generate-test/index.js +0 -137
- package/scripts/generate-verblet/README.md +0 -17
- package/scripts/generate-verblet/index.js +0 -110
- package/scripts/run.sh +0 -15
- package/scripts/runner/index.js +0 -56
- package/scripts/simple-editor/README.md +0 -34
- package/scripts/simple-editor/index.js +0 -79
- package/scripts/summarize-files/index.js +0 -70
- package/src/chains/README.md +0 -30
- package/src/chains/anonymize/README.md +0 -21
- package/src/chains/anonymize/index.examples.js +0 -75
- package/src/chains/anonymize/index.js +0 -121
- package/src/chains/anonymize/index.spec.js +0 -78
- package/src/chains/bulk-central-tendency/index.examples.js +0 -138
- package/src/chains/bulk-central-tendency/index.js +0 -91
- package/src/chains/bulk-filter/README.md +0 -21
- package/src/chains/bulk-filter/index.examples.js +0 -22
- package/src/chains/bulk-filter/index.js +0 -58
- package/src/chains/bulk-filter/index.spec.js +0 -38
- package/src/chains/bulk-find/README.md +0 -16
- package/src/chains/bulk-find/index.examples.js +0 -20
- package/src/chains/bulk-find/index.js +0 -30
- package/src/chains/bulk-find/index.spec.js +0 -26
- package/src/chains/bulk-group/README.md +0 -23
- package/src/chains/bulk-group/index.examples.js +0 -18
- package/src/chains/bulk-group/index.js +0 -34
- package/src/chains/bulk-group/index.spec.js +0 -41
- package/src/chains/bulk-map/README.md +0 -43
- package/src/chains/bulk-map/index.examples.js +0 -17
- package/src/chains/bulk-map/index.js +0 -86
- package/src/chains/bulk-map/index.spec.js +0 -44
- package/src/chains/bulk-reduce/README.md +0 -12
- package/src/chains/bulk-reduce/index.examples.js +0 -15
- package/src/chains/bulk-reduce/index.js +0 -13
- package/src/chains/bulk-reduce/index.spec.js +0 -25
- package/src/chains/bulk-score/README.md +0 -16
- package/src/chains/bulk-score/bulk-score-result.json +0 -18
- package/src/chains/bulk-score/index.examples.js +0 -22
- package/src/chains/bulk-score/index.js +0 -133
- package/src/chains/bulk-score/index.spec.js +0 -30
- package/src/chains/category-samples/README.md +0 -61
- package/src/chains/category-samples/index.examples.js +0 -103
- package/src/chains/category-samples/index.js +0 -134
- package/src/chains/collect-terms/README.md +0 -12
- package/src/chains/collect-terms/index.examples.js +0 -16
- package/src/chains/collect-terms/index.js +0 -44
- package/src/chains/collect-terms/index.spec.js +0 -25
- package/src/chains/conversation/README.md +0 -26
- package/src/chains/conversation/index.examples.js +0 -398
- package/src/chains/conversation/index.js +0 -126
- package/src/chains/conversation/index.spec.js +0 -148
- package/src/chains/conversation/turn-policies.js +0 -93
- package/src/chains/conversation/turn-policies.md +0 -123
- package/src/chains/conversation/turn-policies.spec.js +0 -135
- package/src/chains/date/README.md +0 -12
- package/src/chains/date/index.examples.js +0 -47
- package/src/chains/date/index.js +0 -74
- package/src/chains/date/index.spec.js +0 -62
- package/src/chains/disambiguate/README.md +0 -22
- package/src/chains/disambiguate/disambiguate-meanings-result.json +0 -16
- package/src/chains/disambiguate/index.examples.js +0 -18
- package/src/chains/disambiguate/index.js +0 -92
- package/src/chains/disambiguate/index.spec.js +0 -25
- package/src/chains/dismantle/README.md +0 -67
- package/src/chains/dismantle/dismantle.examples.js +0 -27
- package/src/chains/dismantle/index.examples.js +0 -30
- package/src/chains/dismantle/index.js +0 -303
- package/src/chains/dismantle/index.spec.js +0 -32
- package/src/chains/expect/README.md +0 -171
- package/src/chains/expect/index.examples.js +0 -146
- package/src/chains/expect/index.js +0 -207
- package/src/chains/expect/index.spec.js +0 -324
- package/src/chains/filter-ambiguous/README.md +0 -11
- package/src/chains/filter-ambiguous/index.examples.js +0 -20
- package/src/chains/filter-ambiguous/index.js +0 -49
- package/src/chains/filter-ambiguous/index.spec.js +0 -31
- package/src/chains/glossary/README.md +0 -19
- package/src/chains/glossary/index.examples.js +0 -386
- package/src/chains/glossary/index.js +0 -75
- package/src/chains/glossary/index.spec.js +0 -19
- package/src/chains/intersections/README.md +0 -166
- package/src/chains/intersections/index.examples.js +0 -280
- package/src/chains/intersections/index.js +0 -218
- package/src/chains/intersections/intersection-result.json +0 -38
- package/src/chains/list/index.examples.js +0 -68
- package/src/chains/list/index.js +0 -214
- package/src/chains/list/index.spec.js +0 -67
- package/src/chains/list/list-result.json +0 -16
- package/src/chains/list/schema.json +0 -24
- package/src/chains/llm-logger/README.md +0 -366
- package/src/chains/llm-logger/index.js +0 -591
- package/src/chains/llm-logger/index.spec.js +0 -391
- package/src/chains/llm-logger/schema.json +0 -105
- package/src/chains/questions/index.examples.js +0 -69
- package/src/chains/questions/index.js +0 -135
- package/src/chains/questions/index.spec.js +0 -29
- package/src/chains/scan-js/index.js +0 -116
- package/src/chains/set-interval/README.md +0 -81
- package/src/chains/set-interval/index.examples.js +0 -64
- package/src/chains/set-interval/index.js +0 -152
- package/src/chains/set-interval/index.spec.js +0 -70
- package/src/chains/socratic/README.md +0 -17
- package/src/chains/socratic/index.js +0 -64
- package/src/chains/socratic/index.spec.js +0 -24
- package/src/chains/sort/index.examples.js +0 -36
- package/src/chains/sort/index.js +0 -163
- package/src/chains/sort/index.spec.js +0 -112
- package/src/chains/sort/sort-result.json +0 -16
- package/src/chains/summary-map/README.md +0 -41
- package/src/chains/summary-map/index.examples.js +0 -64
- package/src/chains/summary-map/index.js +0 -226
- package/src/chains/summary-map/index.spec.js +0 -153
- package/src/chains/test/index.js +0 -114
- package/src/chains/test-advice/index.js +0 -35
- package/src/chains/themes/README.md +0 -20
- package/src/chains/themes/index.examples.js +0 -17
- package/src/chains/themes/index.js +0 -28
- package/src/chains/themes/index.spec.js +0 -19
- package/src/chains/veiled-variants/index.examples.js +0 -18
- package/src/chains/veiled-variants/index.js +0 -107
- package/src/chains/veiled-variants/index.spec.js +0 -40
- package/src/constants/common.js +0 -13
- package/src/constants/messages.js +0 -3
- package/src/constants/models.js +0 -184
- package/src/index.js +0 -203
- package/src/json-schemas/README.md +0 -13
- package/src/json-schemas/cars-test.json +0 -11
- package/src/json-schemas/index.js +0 -12
- package/src/json-schemas/intent.json +0 -38
- package/src/json-schemas/schema-dot-org-photograph.json +0 -133
- package/src/json-schemas/schema-dot-org-place.json +0 -129
- package/src/lib/README.md +0 -26
- package/src/lib/any-signal/index.js +0 -28
- package/src/lib/assert/README.md +0 -84
- package/src/lib/assert/index.js +0 -50
- package/src/lib/bulk-filter/README.md +0 -22
- package/src/lib/bulk-filter/index.examples.js +0 -27
- package/src/lib/bulk-filter/index.js +0 -63
- package/src/lib/bulk-filter/index.spec.js +0 -38
- package/src/lib/bulk-find/README.md +0 -18
- package/src/lib/bulk-find/index.examples.js +0 -19
- package/src/lib/bulk-find/index.js +0 -30
- package/src/lib/bulk-find/index.spec.js +0 -41
- package/src/lib/chatgpt/index.js +0 -163
- package/src/lib/combinations/index.js +0 -30
- package/src/lib/combinations/index.spec.js +0 -23
- package/src/lib/editor/index.js +0 -31
- package/src/lib/functional/index.js +0 -28
- package/src/lib/logger-service/index.js +0 -32
- package/src/lib/parse-js-parts/index.js +0 -321
- package/src/lib/parse-js-parts/index.spec.js +0 -156
- package/src/lib/parse-llm-list/README.md +0 -39
- package/src/lib/parse-llm-list/index.js +0 -54
- package/src/lib/parse-llm-list/index.spec.js +0 -59
- package/src/lib/path-aliases/index.js +0 -37
- package/src/lib/path-aliases/index.spec.js +0 -64
- package/src/lib/pave/index.js +0 -34
- package/src/lib/pave/index.spec.js +0 -76
- package/src/lib/prompt-cache/index.js +0 -50
- package/src/lib/retry/index.js +0 -66
- package/src/lib/retry/index.spec.js +0 -86
- package/src/lib/ring-buffer/README.md +0 -82
- package/src/lib/ring-buffer/index.js +0 -235
- package/src/lib/ring-buffer/index.spec.js +0 -388
- package/src/lib/search-best-first/city-walk.spec.js +0 -37
- package/src/lib/search-best-first/index.js +0 -97
- package/src/lib/search-best-first/index.spec.js +0 -35
- package/src/lib/search-js-files/code-features-property-definitions.json +0 -123
- package/src/lib/search-js-files/index.examples.js +0 -22
- package/src/lib/search-js-files/index.js +0 -155
- package/src/lib/search-js-files/index.spec.js +0 -34
- package/src/lib/search-js-files/scan-file.js +0 -242
- package/src/lib/shorten-text/index.js +0 -25
- package/src/lib/shorten-text/index.spec.js +0 -68
- package/src/lib/strip-numeric/index.js +0 -5
- package/src/lib/strip-response/index.js +0 -30
- package/src/lib/template-replace/index.js +0 -23
- package/src/lib/template-replace/index.spec.js +0 -60
- package/src/lib/timed-abort-controller/index.js +0 -41
- package/src/lib/to-bool/index.js +0 -8
- package/src/lib/to-date/index.js +0 -11
- package/src/lib/to-enum/index.js +0 -14
- package/src/lib/to-number/index.js +0 -12
- package/src/lib/to-number-with-units/index.js +0 -51
- package/src/lib/transcribe/index.js +0 -78
- package/src/prompts/README.md +0 -17
- package/src/prompts/as-enum.js +0 -5
- package/src/prompts/as-json-schema.js +0 -9
- package/src/prompts/as-object-with-schema.js +0 -26
- package/src/prompts/as-schema-org-text.js +0 -25
- package/src/prompts/as-schema-org-type.js +0 -1
- package/src/prompts/blog-post.js +0 -7
- package/src/prompts/code-features.js +0 -24
- package/src/prompts/constants.js +0 -101
- package/src/prompts/features-json-schema.js +0 -27
- package/src/prompts/generate-collection.js +0 -26
- package/src/prompts/generate-list.js +0 -48
- package/src/prompts/generate-questions.js +0 -19
- package/src/prompts/index.js +0 -20
- package/src/prompts/intent.js +0 -60
- package/src/prompts/output-succinct-names.js +0 -3
- package/src/prompts/select-from-threshold.js +0 -17
- package/src/prompts/sort.js +0 -31
- package/src/prompts/style.js +0 -38
- package/src/prompts/summarize.js +0 -13
- package/src/prompts/token-budget.js +0 -3
- package/src/prompts/wrap-list.js +0 -11
- package/src/prompts/wrap-variable.js +0 -36
- package/src/services/llm-model/global-overrides.spec.js +0 -432
- package/src/services/llm-model/index.js +0 -308
- package/src/services/llm-model/model.js +0 -21
- package/src/services/llm-model/negotiate.spec.js +0 -447
- package/src/services/redis/index.js +0 -147
- package/src/test/setup.js +0 -20
- package/src/verblets/README.md +0 -26
- package/src/verblets/auto/index.examples.js +0 -31
- package/src/verblets/auto/index.js +0 -28
- package/src/verblets/auto/index.spec.js +0 -32
- package/src/verblets/bool/README.md +0 -36
- package/src/verblets/bool/index.examples.js +0 -80
- package/src/verblets/bool/index.js +0 -25
- package/src/verblets/bool/index.schema.json +0 -14
- package/src/verblets/bool/index.spec.js +0 -33
- package/src/verblets/central-tendency/README.md +0 -166
- package/src/verblets/central-tendency/central-tendency-result.json +0 -24
- package/src/verblets/central-tendency/index.examples.js +0 -196
- package/src/verblets/central-tendency/index.js +0 -171
- package/src/verblets/central-tendency/index.spec.js +0 -148
- package/src/verblets/conversation-turn/README.md +0 -33
- package/src/verblets/conversation-turn/index.examples.js +0 -218
- package/src/verblets/conversation-turn/index.js +0 -68
- package/src/verblets/conversation-turn/index.spec.js +0 -77
- package/src/verblets/conversation-turn-multi/README.md +0 -31
- package/src/verblets/conversation-turn-multi/index.examples.js +0 -160
- package/src/verblets/conversation-turn-multi/index.js +0 -104
- package/src/verblets/conversation-turn-multi/index.spec.js +0 -63
- package/src/verblets/enum/index.examples.js +0 -30
- package/src/verblets/enum/index.js +0 -18
- package/src/verblets/enum/index.spec.js +0 -35
- package/src/verblets/expect/README.md +0 -64
- package/src/verblets/expect/index.examples.js +0 -109
- package/src/verblets/expect/index.js +0 -75
- package/src/verblets/expect/index.spec.js +0 -127
- package/src/verblets/intent/index.examples.js +0 -139
- package/src/verblets/intent/index.js +0 -60
- package/src/verblets/intent/index.spec.js +0 -31
- package/src/verblets/intersection/README.md +0 -16
- package/src/verblets/intersection/index.examples.js +0 -89
- package/src/verblets/intersection/index.js +0 -125
- package/src/verblets/intersection/index.spec.js +0 -60
- package/src/verblets/intersection/intersection-result.json +0 -16
- package/src/verblets/list-expand/README.md +0 -10
- package/src/verblets/list-expand/index.examples.js +0 -14
- package/src/verblets/list-expand/index.js +0 -104
- package/src/verblets/list-expand/index.spec.js +0 -18
- package/src/verblets/list-expand/list-expand-result.json +0 -16
- package/src/verblets/list-filter/README.md +0 -22
- package/src/verblets/list-filter/index.examples.js +0 -26
- package/src/verblets/list-filter/index.js +0 -18
- package/src/verblets/list-filter/index.spec.js +0 -19
- package/src/verblets/list-find/README.md +0 -11
- package/src/verblets/list-find/index.examples.js +0 -15
- package/src/verblets/list-find/index.js +0 -17
- package/src/verblets/list-find/index.spec.js +0 -19
- package/src/verblets/list-group/README.md +0 -16
- package/src/verblets/list-group/index.examples.js +0 -16
- package/src/verblets/list-group/index.js +0 -112
- package/src/verblets/list-group/index.spec.js +0 -35
- package/src/verblets/list-group/list-group-result.json +0 -16
- package/src/verblets/list-map/README.md +0 -11
- package/src/verblets/list-map/index.examples.js +0 -15
- package/src/verblets/list-map/index.js +0 -26
- package/src/verblets/list-map/index.spec.js +0 -17
- package/src/verblets/list-reduce/README.md +0 -10
- package/src/verblets/list-reduce/index.examples.js +0 -14
- package/src/verblets/list-reduce/index.js +0 -21
- package/src/verblets/list-reduce/index.spec.js +0 -27
- package/src/verblets/list-reduce/index.spec.jsx +0 -27
- package/src/verblets/name/README.md +0 -15
- package/src/verblets/name/index.examples.js +0 -28
- package/src/verblets/name/index.js +0 -19
- package/src/verblets/name/index.spec.js +0 -33
- package/src/verblets/name-similar-to/README.md +0 -26
- package/src/verblets/name-similar-to/index.examples.js +0 -18
- package/src/verblets/name-similar-to/index.js +0 -20
- package/src/verblets/name-similar-to/index.spec.js +0 -13
- package/src/verblets/number/index.examples.js +0 -199
- package/src/verblets/number/index.js +0 -25
- package/src/verblets/number/index.spec.js +0 -33
- package/src/verblets/number-with-units/index.examples.js +0 -38
- package/src/verblets/number-with-units/index.js +0 -84
- package/src/verblets/number-with-units/index.spec.js +0 -46
- package/src/verblets/number-with-units/number-with-units-result.json +0 -23
- package/src/verblets/people-list/README.md +0 -28
- package/src/verblets/people-list/index.examples.js +0 -184
- package/src/verblets/people-list/index.js +0 -44
- package/src/verblets/people-list/index.spec.js +0 -49
- package/src/verblets/schema-org/index.examples.js +0 -51
- package/src/verblets/schema-org/index.js +0 -37
- package/src/verblets/schema-org/index.spec.js +0 -39
- package/src/verblets/sentiment/README.md +0 -10
- package/src/verblets/sentiment/index.examples.js +0 -20
- package/src/verblets/sentiment/index.js +0 -9
- package/src/verblets/sentiment/index.spec.js +0 -20
- package/src/verblets/to-object/README.md +0 -38
- package/src/verblets/to-object/index.examples.js +0 -29
- package/src/verblets/to-object/index.js +0 -131
- package/src/verblets/to-object/index.spec.js +0 -71
package/src/constants/models.js
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
// Environment variables loaded in index.js
|
|
2
|
-
|
|
3
|
-
const _models = {};
|
|
4
|
-
|
|
5
|
-
// Function to get API key at runtime
|
|
6
|
-
const getOpenAIKey = () => process.env.OPENAI_API_KEY;
|
|
7
|
-
|
|
8
|
-
const systemPrompt = `You are a superintelligent processing unit, answering prompts with precise instructions.
|
|
9
|
-
You are a small but critical component in a complex system, so your role in giving quality outputs to your given inputs and instructions is critical.
|
|
10
|
-
You must obey those instructions to the letter at all costs--do not deviate or add your own interpretation or flair. Stick to the instructions.
|
|
11
|
-
Aim to be direct, accurate, correct, and concise.
|
|
12
|
-
You'll often be given complex inputs alongside your instructions. Consider the inputs carefully and think through your answer in relation to the inputs and instructions.
|
|
13
|
-
Most prompts will ask for a specific output format, so comply with those details exactly as well.`;
|
|
14
|
-
|
|
15
|
-
// // $0.10-0.40/1M tokens
|
|
16
|
-
// // cutoff: 5/2024
|
|
17
|
-
// // supports image inputs, very high speed, 1M token context, 32K output
|
|
18
|
-
// // low intelligence, but > 3.5 turbo
|
|
19
|
-
// _models.fastCheapMulti = {
|
|
20
|
-
// endpoint: 'v1/chat/completions',
|
|
21
|
-
// name: 'gpt-4.1-nano-2025-04-14',
|
|
22
|
-
// maxContextWindow: 1_047_576,
|
|
23
|
-
// maxOutputTokens: 32_768,
|
|
24
|
-
// requestTimeout: 20_000,
|
|
25
|
-
// apiKey: process.env.OPENAI_API_KEY,
|
|
26
|
-
// apiUrl: 'https://api.openai.com/',
|
|
27
|
-
// systemPrompt,
|
|
28
|
-
// };
|
|
29
|
-
|
|
30
|
-
// // $.40-$1.60/1M tokens
|
|
31
|
-
// // cutoff: 05/2024
|
|
32
|
-
// // supports image inputs, high speed, 1M token context, 32K output
|
|
33
|
-
// _models.fastGoodMulti = {
|
|
34
|
-
// endpoint: 'v1/chat/completions',
|
|
35
|
-
// name: 'gpt-4.1-mini-2025-04-14',
|
|
36
|
-
// maxContextWindow: 1_047_576,
|
|
37
|
-
// maxOutputTokens: 32_768,
|
|
38
|
-
// requestTimeout: 20_000,
|
|
39
|
-
// apiKey: process.env.OPENAI_API_KEY,
|
|
40
|
-
// apiUrl: 'https://api.openai.com/',
|
|
41
|
-
// systemPrompt,
|
|
42
|
-
// };
|
|
43
|
-
_models.fastCheapMulti = {
|
|
44
|
-
endpoint: 'v1/chat/completions',
|
|
45
|
-
name: 'gpt-4o',
|
|
46
|
-
maxContextWindow: 128_000,
|
|
47
|
-
maxOutputTokens: 16_384,
|
|
48
|
-
requestTimeout: 20_000,
|
|
49
|
-
get apiKey() {
|
|
50
|
-
return getOpenAIKey();
|
|
51
|
-
},
|
|
52
|
-
apiUrl: 'https://api.openai.com/',
|
|
53
|
-
systemPrompt,
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// $2.5-$10.00/1M tokens
|
|
57
|
-
// cutoff: 09/2023
|
|
58
|
-
// supports image inputs, moderate speed
|
|
59
|
-
_models.goodMulti = {
|
|
60
|
-
endpoint: 'v1/chat/completions',
|
|
61
|
-
name: 'gpt-4o-2024-11-20',
|
|
62
|
-
maxContextWindow: 128_000,
|
|
63
|
-
maxOutputTokens: 16_384,
|
|
64
|
-
requestTimeout: 20_000,
|
|
65
|
-
get apiKey() {
|
|
66
|
-
return getOpenAIKey();
|
|
67
|
-
},
|
|
68
|
-
apiUrl: 'https://api.openai.com/',
|
|
69
|
-
systemPrompt,
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
// Caution!: $1.1-4.4/1M tokens
|
|
73
|
-
// cutoff: 05/2024
|
|
74
|
-
// supports image inputs, moderate speed
|
|
75
|
-
_models.fastCheapReasoningMulti = {
|
|
76
|
-
endpoint: 'v1/chat/completions',
|
|
77
|
-
name: 'o4-mini-2025-04-16',
|
|
78
|
-
maxContextWindow: 128_000,
|
|
79
|
-
maxOutputTokens: 16_384,
|
|
80
|
-
requestTimeout: 40_000,
|
|
81
|
-
get apiKey() {
|
|
82
|
-
return getOpenAIKey();
|
|
83
|
-
},
|
|
84
|
-
apiUrl: 'https://api.openai.com/',
|
|
85
|
-
systemPrompt,
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
// Caution!: $10-40/1M tokens
|
|
89
|
-
// cutoff: 05/2024
|
|
90
|
-
// supports image inputs
|
|
91
|
-
_models.reasoningNoImage = {
|
|
92
|
-
endpoint: 'v1/chat/completions',
|
|
93
|
-
name: 'o3-2025-04-16',
|
|
94
|
-
maxContextWindow: 200_000,
|
|
95
|
-
maxOutputTokens: 100_000,
|
|
96
|
-
requestTimeout: 120_000,
|
|
97
|
-
get apiKey() {
|
|
98
|
-
return getOpenAIKey();
|
|
99
|
-
},
|
|
100
|
-
apiUrl: 'https://api.openai.com/',
|
|
101
|
-
systemPrompt,
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
// Full matrix with explicit names (no aliases)
|
|
105
|
-
_models.fastGoodMulti = _models.fastCheapMulti;
|
|
106
|
-
_models.fastGoodCheapMulti = _models.fastGoodMulti; // Default system model
|
|
107
|
-
_models.fastGoodCheap = _models.fastGoodMulti;
|
|
108
|
-
_models.fastMulti = _models.fastGoodMulti;
|
|
109
|
-
_models.fast = _models.fastGoodMulti;
|
|
110
|
-
_models.fastGood = _models.fastGoodMulti;
|
|
111
|
-
_models.fastReasoningMulti = _models.fastCheapReasoningMulti;
|
|
112
|
-
_models.fastReasoning = _models.fastCheapReasoningMulti;
|
|
113
|
-
|
|
114
|
-
// eslint-disable-next-line no-self-assign
|
|
115
|
-
_models.fastCheapMulti = _models.fastCheapMulti;
|
|
116
|
-
_models.fastCheap = _models.fastCheapMulti;
|
|
117
|
-
_models.fastCheapReasoning = _models.fastCheapReasoningMulti;
|
|
118
|
-
|
|
119
|
-
_models.cheapMulti = _models.fastCheapMulti;
|
|
120
|
-
_models.cheap = _models.fastCheapMulti;
|
|
121
|
-
_models.cheapGoodMulti = _models.fastGoodMulti;
|
|
122
|
-
_models.cheapGood = _models.fastGoodMulti;
|
|
123
|
-
_models.cheapReasoningMulti = _models.fastCheapReasoningMulti;
|
|
124
|
-
_models.cheapReasoning = _models.fastCheapReasoningMulti;
|
|
125
|
-
|
|
126
|
-
// eslint-disable-next-line no-self-assign
|
|
127
|
-
_models.goodMulti = _models.goodMulti; // Caution: Moderate cost
|
|
128
|
-
_models.good = _models.goodMulti; // Caution: Moderate cost
|
|
129
|
-
|
|
130
|
-
_models.reasoningMulti = _models.fastCheapReasoningMulti; // Caution: Moderate cost
|
|
131
|
-
_models.reasoning = _models.reasoningNoImage; // Caution: High cost
|
|
132
|
-
|
|
133
|
-
// cutoff: 03/2024
|
|
134
|
-
// Supports image inputs
|
|
135
|
-
_models.privacy = {
|
|
136
|
-
name: 'gemma3:latest', // same as gemma3:4b
|
|
137
|
-
endpoint: 'api/chat/completions',
|
|
138
|
-
maxContextWindow: 128_000,
|
|
139
|
-
maxOutputTokens: 8_192,
|
|
140
|
-
requestTimeout: 120_000,
|
|
141
|
-
apiUrl: (process.env.OPENWEBUI_API_URL ?? '').endsWith('/')
|
|
142
|
-
? process.env.OPENWEBUI_API_URL
|
|
143
|
-
: `${process.env.OPENWEBUI_API_URL}/`,
|
|
144
|
-
get apiKey() {
|
|
145
|
-
return process.env.OPENWEBUI_API_KEY;
|
|
146
|
-
},
|
|
147
|
-
systemPrompt,
|
|
148
|
-
modelOptions: {
|
|
149
|
-
stop: ['</s>'],
|
|
150
|
-
},
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
// Allow tests to run without requiring an API key
|
|
154
|
-
if (process.env.NODE_ENV !== 'test') {
|
|
155
|
-
// expect(process.env.OPENAI_API_KEY).to.exist;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
const secondsInDay = 60 * 60 * 24;
|
|
159
|
-
const secondsInYear = secondsInDay * 365; // 365 days
|
|
160
|
-
export const cacheTTL = process.env.CHATGPT_CACHE_TTL ?? secondsInYear;
|
|
161
|
-
|
|
162
|
-
// Caching can be disabled by setting DISABLE_CACHE=true
|
|
163
|
-
// By default, caching is enabled when Redis is available and working
|
|
164
|
-
export const cachingEnabled = process.env.DISABLE_CACHE !== 'true';
|
|
165
|
-
|
|
166
|
-
export const debugPromptGlobally = process.env.CHATGPT_DEBUG_PROMPT ?? false;
|
|
167
|
-
|
|
168
|
-
export const debugPromptGloballyIfChanged = process.env.CHATGPT_DEBUG_REQUEST_IF_CHANGED ?? false;
|
|
169
|
-
|
|
170
|
-
export const debugResultGlobally = process.env.CHATGPT_DEBUG_RESPONSE ?? false;
|
|
171
|
-
|
|
172
|
-
export const debugResultGloballyIfChanged = process.env.CHATGPT_DEBUG_RESPONSE_IF_CHANGED ?? false;
|
|
173
|
-
|
|
174
|
-
export const frequencyPenalty = process.env.CHATGPT_FREQUENCY_PENALTY ?? 0;
|
|
175
|
-
|
|
176
|
-
export const models = _models;
|
|
177
|
-
|
|
178
|
-
export const operationTimeoutMultiplier = 2;
|
|
179
|
-
|
|
180
|
-
export const presencePenalty = process.env.CHATGPT_PRESENCE_PENALTY ?? 0;
|
|
181
|
-
|
|
182
|
-
export const temperature = process.env.CHATGPT_TEMPERATURE ?? 0;
|
|
183
|
-
|
|
184
|
-
export const topP = process.env.CHATGPT_TOPP ?? 0.5;
|
package/src/index.js
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
// Load environment variables from .env file FIRST
|
|
2
|
-
import dotenv from 'dotenv';
|
|
3
|
-
dotenv.config();
|
|
4
|
-
|
|
5
|
-
import chatGPT from './lib/chatgpt/index.js';
|
|
6
|
-
|
|
7
|
-
// chains are consumed as verblets
|
|
8
|
-
|
|
9
|
-
import anonymize from './chains/anonymize/index.js';
|
|
10
|
-
|
|
11
|
-
import Dismantle from './chains/dismantle/index.js';
|
|
12
|
-
|
|
13
|
-
import intersections from './chains/intersections/index.js';
|
|
14
|
-
|
|
15
|
-
import list from './chains/list/index.js';
|
|
16
|
-
import glossary from './chains/glossary/index.js';
|
|
17
|
-
|
|
18
|
-
import questions from './chains/questions/index.js';
|
|
19
|
-
|
|
20
|
-
import SocraticMethod from './chains/socratic/index.js';
|
|
21
|
-
|
|
22
|
-
import scanJS from './chains/scan-js/index.js';
|
|
23
|
-
|
|
24
|
-
import sort from './chains/sort/index.js';
|
|
25
|
-
import date from './chains/date/index.js';
|
|
26
|
-
import setInterval from './chains/set-interval/index.js';
|
|
27
|
-
import bulkScore from './chains/bulk-score/index.js';
|
|
28
|
-
import filterAmbiguous from './chains/filter-ambiguous/index.js';
|
|
29
|
-
|
|
30
|
-
import SummaryMap from './chains/summary-map/index.js';
|
|
31
|
-
import themes from './chains/themes/index.js';
|
|
32
|
-
|
|
33
|
-
import test from './chains/test/index.js';
|
|
34
|
-
|
|
35
|
-
import testAdvice from './chains/test-advice/index.js';
|
|
36
|
-
import Conversation from './chains/conversation/index.js';
|
|
37
|
-
import * as turnPolicies from './chains/conversation/turn-policies.js';
|
|
38
|
-
|
|
39
|
-
import schemas from './json-schemas/index.js';
|
|
40
|
-
import * as common from './constants/common.js';
|
|
41
|
-
import * as messages from './constants/messages.js';
|
|
42
|
-
import * as models from './constants/models.js';
|
|
43
|
-
|
|
44
|
-
// exported lib utilities
|
|
45
|
-
// internal-only: anySignal, editor, parseJsParts, pathAliases, pave, TimedAbortController
|
|
46
|
-
import * as promptCache from './lib/prompt-cache/index.js';
|
|
47
|
-
import retry from './lib/retry/index.js';
|
|
48
|
-
import searchBestFirst from './lib/search-best-first/index.js';
|
|
49
|
-
import searchJSFiles from './lib/search-js-files/index.js';
|
|
50
|
-
import shortenText from './lib/shorten-text/index.js';
|
|
51
|
-
import bulkMap, { bulkMapRetry } from './chains/bulk-map/index.js';
|
|
52
|
-
import bulkFind, { bulkFindRetry } from './chains/bulk-find/index.js';
|
|
53
|
-
import bulkFilter, { bulkFilterRetry } from './chains/bulk-filter/index.js';
|
|
54
|
-
import stripNumeric from './lib/strip-numeric/index.js';
|
|
55
|
-
import stripResponse from './lib/strip-response/index.js';
|
|
56
|
-
import toBool from './lib/to-bool/index.js';
|
|
57
|
-
import toEnum from './lib/to-enum/index.js';
|
|
58
|
-
import toNumber from './lib/to-number/index.js';
|
|
59
|
-
import toNumberWithUnits from './lib/to-number-with-units/index.js';
|
|
60
|
-
import toDate from './lib/to-date/index.js';
|
|
61
|
-
import transcribe from './lib/transcribe/index.js';
|
|
62
|
-
import combinations, { rangeCombinations } from './lib/combinations/index.js';
|
|
63
|
-
|
|
64
|
-
// prompts
|
|
65
|
-
import * as prompts from './prompts/index.js';
|
|
66
|
-
|
|
67
|
-
// services
|
|
68
|
-
import * as redis from './services/redis/index.js';
|
|
69
|
-
import modelService from './services/llm-model/index.js';
|
|
70
|
-
|
|
71
|
-
// verblets
|
|
72
|
-
|
|
73
|
-
import auto from './verblets/auto/index.js';
|
|
74
|
-
|
|
75
|
-
import bool from './verblets/bool/index.js';
|
|
76
|
-
|
|
77
|
-
import enums from './verblets/enum/index.js';
|
|
78
|
-
|
|
79
|
-
import intent from './verblets/intent/index.js';
|
|
80
|
-
|
|
81
|
-
import number from './verblets/number/index.js';
|
|
82
|
-
|
|
83
|
-
import numberWithUnits from './verblets/number-with-units/index.js';
|
|
84
|
-
|
|
85
|
-
import schemaOrg from './verblets/schema-org/index.js';
|
|
86
|
-
import nameSimilarTo from './verblets/name-similar-to/index.js';
|
|
87
|
-
|
|
88
|
-
import name from './verblets/name/index.js';
|
|
89
|
-
import peopleList from './verblets/people-list/index.js';
|
|
90
|
-
|
|
91
|
-
import toObject from './verblets/to-object/index.js';
|
|
92
|
-
|
|
93
|
-
import listMap from './verblets/list-map/index.js';
|
|
94
|
-
import listFind from './verblets/list-find/index.js';
|
|
95
|
-
|
|
96
|
-
import conversationTurn from './verblets/conversation-turn/index.js';
|
|
97
|
-
import conversationTurnMulti from './verblets/conversation-turn-multi/index.js';
|
|
98
|
-
|
|
99
|
-
import bulkGroup from './chains/bulk-group/index.js';
|
|
100
|
-
|
|
101
|
-
import listGroup from './verblets/list-group/index.js';
|
|
102
|
-
import intersection from './verblets/intersection/index.js';
|
|
103
|
-
|
|
104
|
-
// # Concept Science
|
|
105
|
-
import centralTendency from './verblets/central-tendency/index.js';
|
|
106
|
-
import bulkCentralTendency, {
|
|
107
|
-
bulkCentralTendencyRetry,
|
|
108
|
-
} from './chains/bulk-central-tendency/index.js';
|
|
109
|
-
|
|
110
|
-
export { default as retry } from './lib/retry/index.js';
|
|
111
|
-
export { default as stripResponse } from './lib/strip-response/index.js';
|
|
112
|
-
export { default as searchJSFiles } from './lib/search-js-files/index.js';
|
|
113
|
-
export { default as searchBestFirst } from './lib/search-best-first/index.js';
|
|
114
|
-
export {
|
|
115
|
-
bulkMap,
|
|
116
|
-
bulkMapRetry,
|
|
117
|
-
bulkFind,
|
|
118
|
-
bulkFindRetry,
|
|
119
|
-
bulkFilter,
|
|
120
|
-
bulkFilterRetry,
|
|
121
|
-
bulkCentralTendency,
|
|
122
|
-
bulkCentralTendencyRetry,
|
|
123
|
-
};
|
|
124
|
-
export { rangeCombinations } from './lib/combinations/index.js';
|
|
125
|
-
|
|
126
|
-
export const lib = {
|
|
127
|
-
chatGPT,
|
|
128
|
-
promptCache,
|
|
129
|
-
retry,
|
|
130
|
-
searchBestFirst,
|
|
131
|
-
searchJSFiles,
|
|
132
|
-
shortenText,
|
|
133
|
-
stripNumeric,
|
|
134
|
-
stripResponse,
|
|
135
|
-
toBool,
|
|
136
|
-
toEnum,
|
|
137
|
-
toNumber,
|
|
138
|
-
toNumberWithUnits,
|
|
139
|
-
toDate,
|
|
140
|
-
transcribe,
|
|
141
|
-
combinations,
|
|
142
|
-
rangeCombinations,
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
export const verblets = {
|
|
146
|
-
auto,
|
|
147
|
-
bool,
|
|
148
|
-
enums,
|
|
149
|
-
intent,
|
|
150
|
-
number,
|
|
151
|
-
numberWithUnits,
|
|
152
|
-
schemaOrg,
|
|
153
|
-
nameSimilarTo,
|
|
154
|
-
name,
|
|
155
|
-
peopleList,
|
|
156
|
-
toObject,
|
|
157
|
-
listMap,
|
|
158
|
-
listFind,
|
|
159
|
-
bulkMap,
|
|
160
|
-
bulkFind,
|
|
161
|
-
anonymize,
|
|
162
|
-
Dismantle,
|
|
163
|
-
intersections,
|
|
164
|
-
list,
|
|
165
|
-
glossary,
|
|
166
|
-
questions,
|
|
167
|
-
SocraticMethod,
|
|
168
|
-
scanJS,
|
|
169
|
-
sort,
|
|
170
|
-
date,
|
|
171
|
-
SummaryMap,
|
|
172
|
-
themes,
|
|
173
|
-
setInterval,
|
|
174
|
-
test,
|
|
175
|
-
testAdvice,
|
|
176
|
-
Conversation,
|
|
177
|
-
conversationTurn,
|
|
178
|
-
conversationTurnMulti,
|
|
179
|
-
bulkScore,
|
|
180
|
-
filterAmbiguous,
|
|
181
|
-
bulkGroup,
|
|
182
|
-
bulkFilter,
|
|
183
|
-
listGroup,
|
|
184
|
-
intersection,
|
|
185
|
-
// # Concept Science
|
|
186
|
-
centralTendency,
|
|
187
|
-
bulkCentralTendency,
|
|
188
|
-
};
|
|
189
|
-
|
|
190
|
-
export const services = {
|
|
191
|
-
redis,
|
|
192
|
-
modelService,
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
export const constants = {
|
|
196
|
-
common,
|
|
197
|
-
messages,
|
|
198
|
-
models,
|
|
199
|
-
};
|
|
200
|
-
|
|
201
|
-
export { prompts, schemas, turnPolicies };
|
|
202
|
-
|
|
203
|
-
export default chatGPT;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# JSON Schemas
|
|
2
|
-
|
|
3
|
-
This folder contains example schemas used throughout the project. Schemas are referenced by certain verblets and chains for validating or shaping structured output.
|
|
4
|
-
|
|
5
|
-
Included files:
|
|
6
|
-
|
|
7
|
-
- `cars-test.json`
|
|
8
|
-
- `intent.json`
|
|
9
|
-
- `schema-dot-org-photograph.json`
|
|
10
|
-
- `schema-dot-org-place.json`
|
|
11
|
-
- `index.js` – helper that loads a subset of schemas for quick access.
|
|
12
|
-
|
|
13
|
-
Additional schemas may live alongside the modules that use them (for example in `../verblets` or `../chains`).
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"type": "object",
|
|
3
|
-
"properties": {
|
|
4
|
-
"make": { "type": "string" },
|
|
5
|
-
"model": { "type": "string" },
|
|
6
|
-
"releaseDate": { "type": "string", "format": "date-time" },
|
|
7
|
-
"maxRange": { "type": "number", "description": "Max range in miles" },
|
|
8
|
-
"batteryCapacity": { "type": "number", "description": "Battery capacity in kWh" },
|
|
9
|
-
"startingCost": { "type": "number", "description": "Starting cost in USD" }
|
|
10
|
-
}
|
|
11
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs/promises';
|
|
2
|
-
|
|
3
|
-
const schemaFileNames = ['../verblets/bool/index.schema.json', '../chains/list/schema.json'];
|
|
4
|
-
|
|
5
|
-
const schemas = await Promise.all(
|
|
6
|
-
schemaFileNames.map(async (schemaFileName) => {
|
|
7
|
-
const schemaText = await fs.readFile(new URL(schemaFileName, import.meta.url));
|
|
8
|
-
return JSON.parse(schemaText);
|
|
9
|
-
})
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
export default schemas;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "http://example.com/schemas/intent-schema.json",
|
|
4
|
-
"type": "object",
|
|
5
|
-
"properties": {
|
|
6
|
-
"queryText": {
|
|
7
|
-
"type": "string",
|
|
8
|
-
"description": "The user's query text."
|
|
9
|
-
},
|
|
10
|
-
"intent": {
|
|
11
|
-
"type": "object",
|
|
12
|
-
"properties": {
|
|
13
|
-
"operation": {
|
|
14
|
-
"type": "string",
|
|
15
|
-
"description": "The operation associated with the intent."
|
|
16
|
-
},
|
|
17
|
-
"displayName": {
|
|
18
|
-
"type": "string",
|
|
19
|
-
"description": "The display name of the intent."
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"required": ["operation", "displayName"],
|
|
23
|
-
"description": "Information about the intent."
|
|
24
|
-
},
|
|
25
|
-
"parameters": {
|
|
26
|
-
"type": "object",
|
|
27
|
-
"additionalProperties": true,
|
|
28
|
-
"description": "Parameters associated with the intent."
|
|
29
|
-
},
|
|
30
|
-
"optionalParameters": {
|
|
31
|
-
"type": "object",
|
|
32
|
-
"additionalProperties": true,
|
|
33
|
-
"description": "Optional parameters associated with the intent."
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"required": ["queryText", "intent"],
|
|
37
|
-
"description": "Schema for an intent response."
|
|
38
|
-
}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://example.com/schemas/photograph.json",
|
|
4
|
-
"type": "object",
|
|
5
|
-
"additionalProperties": false,
|
|
6
|
-
"properties": {
|
|
7
|
-
"@context": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"pattern": "^http[s]?://schema.org$"
|
|
10
|
-
},
|
|
11
|
-
"@type": {
|
|
12
|
-
"type": "string",
|
|
13
|
-
"pattern": "^Photograph$"
|
|
14
|
-
},
|
|
15
|
-
"name": {
|
|
16
|
-
"type": "string"
|
|
17
|
-
},
|
|
18
|
-
"caption": {
|
|
19
|
-
"type": "string"
|
|
20
|
-
},
|
|
21
|
-
"description": {
|
|
22
|
-
"type": "string"
|
|
23
|
-
},
|
|
24
|
-
"keywords": {
|
|
25
|
-
"type": "array",
|
|
26
|
-
"items": {
|
|
27
|
-
"type": "string"
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
"thumbnail": {
|
|
31
|
-
"type": "object",
|
|
32
|
-
"additionalProperties": false,
|
|
33
|
-
"properties": {
|
|
34
|
-
"@type": {
|
|
35
|
-
"type": "string",
|
|
36
|
-
"pattern": "^ImageObject$"
|
|
37
|
-
},
|
|
38
|
-
"url": {
|
|
39
|
-
"type": "string"
|
|
40
|
-
},
|
|
41
|
-
"width": {
|
|
42
|
-
"type": "integer",
|
|
43
|
-
"minimum": 1
|
|
44
|
-
},
|
|
45
|
-
"height": {
|
|
46
|
-
"type": "integer",
|
|
47
|
-
"minimum": 1
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
"required": ["@type", "url"]
|
|
51
|
-
},
|
|
52
|
-
"image": {
|
|
53
|
-
"type": "object",
|
|
54
|
-
"additionalProperties": false,
|
|
55
|
-
"properties": {
|
|
56
|
-
"@type": {
|
|
57
|
-
"type": "string",
|
|
58
|
-
"pattern": "^ImageObject$"
|
|
59
|
-
},
|
|
60
|
-
"url": {
|
|
61
|
-
"type": "string"
|
|
62
|
-
},
|
|
63
|
-
"width": {
|
|
64
|
-
"type": "integer",
|
|
65
|
-
"minimum": 1
|
|
66
|
-
},
|
|
67
|
-
"height": {
|
|
68
|
-
"type": "integer",
|
|
69
|
-
"minimum": 1
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
"required": ["@type", "url"]
|
|
73
|
-
},
|
|
74
|
-
"contentLocation": {
|
|
75
|
-
"type": "object",
|
|
76
|
-
"additionalProperties": false,
|
|
77
|
-
"properties": {
|
|
78
|
-
"@type": {
|
|
79
|
-
"type": "string",
|
|
80
|
-
"pattern": "^Place$"
|
|
81
|
-
},
|
|
82
|
-
"name": {
|
|
83
|
-
"type": "string"
|
|
84
|
-
},
|
|
85
|
-
"address": {
|
|
86
|
-
"type": "object",
|
|
87
|
-
"additionalProperties": false,
|
|
88
|
-
"properties": {
|
|
89
|
-
"@type": {
|
|
90
|
-
"type": "string",
|
|
91
|
-
"pattern": "^PostalAddress$"
|
|
92
|
-
},
|
|
93
|
-
"streetAddress": {
|
|
94
|
-
"type": "string"
|
|
95
|
-
},
|
|
96
|
-
"addressLocality": {
|
|
97
|
-
"type": "string"
|
|
98
|
-
},
|
|
99
|
-
"addressRegion": {
|
|
100
|
-
"type": "string"
|
|
101
|
-
},
|
|
102
|
-
"postalCode": {
|
|
103
|
-
"type": "string"
|
|
104
|
-
},
|
|
105
|
-
"addressCountry": {
|
|
106
|
-
"type": "string"
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
"required": ["@type", "addressLocality", "addressCountry"]
|
|
110
|
-
},
|
|
111
|
-
"geo": {
|
|
112
|
-
"type": "object",
|
|
113
|
-
"additionalProperties": false,
|
|
114
|
-
"properties": {
|
|
115
|
-
"@type": {
|
|
116
|
-
"type": "string",
|
|
117
|
-
"pattern": "^GeoCoordinates$"
|
|
118
|
-
},
|
|
119
|
-
"latitude": {
|
|
120
|
-
"type": "number"
|
|
121
|
-
},
|
|
122
|
-
"longitude": {
|
|
123
|
-
"type": "number"
|
|
124
|
-
}
|
|
125
|
-
},
|
|
126
|
-
"required": ["@type", "latitude", "longitude"]
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
"required": ["@type", "name"]
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
"required": ["@context", "@type", "name"]
|
|
133
|
-
}
|