@onetype/framework 2.0.41 → 2.0.42
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/addons/ai/agents/addon.js +23 -0
- package/addons/ai/agents/functions/parse.js +129 -0
- package/addons/ai/agents/item/functions/run.js +218 -0
- package/addons/ai/agents/load.js +8 -0
- package/addons/ai/orchestrator/addon.js +25 -0
- package/addons/ai/orchestrator/item/functions/run.js +277 -0
- package/addons/ai/orchestrator/item/functions/state/agent.js +41 -0
- package/addons/ai/orchestrator/item/functions/state/conclusion.js +27 -0
- package/addons/ai/orchestrator/item/functions/state/done.js +40 -0
- package/addons/ai/orchestrator/item/functions/state/execute.js +16 -0
- package/addons/ai/orchestrator/item/functions/state/goal.js +34 -0
- package/addons/ai/orchestrator/item/functions/state/input.js +55 -0
- package/addons/ai/orchestrator/item/functions/state/summary.js +26 -0
- package/addons/ai/orchestrator/items/agents/achievable.js +37 -0
- package/addons/ai/orchestrator/items/agents/agent.js +46 -0
- package/addons/ai/orchestrator/items/agents/conclusion.js +41 -0
- package/addons/ai/orchestrator/items/agents/done.js +40 -0
- package/addons/ai/orchestrator/items/agents/goal.js +58 -0
- package/addons/ai/orchestrator/items/agents/input.js +34 -0
- package/addons/ai/orchestrator/items/agents/planner.js +30 -0
- package/addons/ai/orchestrator/items/agents/summary.js +29 -0
- package/addons/ai/orchestrator/items/chat.js +10 -0
- package/addons/ai/orchestrator/load.js +25 -0
- package/addons/ai/providers/addon.js +16 -0
- package/addons/ai/providers/functions/default.js +14 -0
- package/addons/ai/providers/item/functions/request.js +62 -0
- package/addons/ai/providers/items/nue.js +98 -0
- package/addons/ai/providers/load.js +10 -0
- package/addons/render/elements/front/functions/runtime.js +25 -0
- package/lib/browser.js +1 -24
- package/lib/items/directives/160-slot.js +1 -1
- package/lib/items/directives/500-click-outside.js +43 -43
- package/lib/items/elements/ai/chat/chat.css +710 -0
- package/lib/items/elements/ai/chat/chat.js +429 -0
- package/lib/items/elements/cards/pricing/pricing.css +174 -0
- package/lib/items/elements/{sections → cards}/pricing/pricing.js +30 -11
- package/lib/items/elements/form/button/button.css +250 -0
- package/lib/items/elements/form/button/button.js +15 -20
- package/lib/items/elements/form/checkbox/checkbox.css +109 -0
- package/lib/items/elements/form/checkbox/checkbox.js +58 -54
- package/lib/items/elements/form/color/color.css +128 -0
- package/lib/items/elements/form/color/color.js +100 -0
- package/lib/items/elements/form/date/date.css +84 -0
- package/lib/items/elements/form/date/date.js +69 -0
- package/lib/items/elements/form/field/field.css +33 -57
- package/lib/items/elements/form/field/field.js +4 -4
- package/lib/items/elements/form/input/input.css +59 -84
- package/lib/items/elements/form/input/input.js +84 -75
- package/lib/items/elements/form/radio/radio.css +118 -0
- package/lib/items/elements/form/radio/radio.js +58 -54
- package/lib/items/elements/form/rating/rating.css +28 -66
- package/lib/items/elements/form/rating/rating.js +17 -21
- package/lib/items/elements/form/section/section.css +30 -73
- package/lib/items/elements/form/section/section.js +5 -5
- package/lib/items/elements/form/select/select.css +186 -0
- package/lib/items/elements/form/select/select.js +165 -0
- package/lib/items/elements/form/slider/slider.css +55 -176
- package/lib/items/elements/form/slider/slider.js +14 -10
- package/lib/items/elements/form/tags/tags.css +152 -0
- package/lib/items/elements/form/tags/tags.js +166 -0
- package/lib/items/elements/form/textarea/textarea.css +55 -92
- package/lib/items/elements/form/textarea/textarea.js +74 -66
- package/lib/items/elements/form/toggle/toggle.css +101 -0
- package/lib/items/elements/form/toggle/toggle.js +67 -0
- package/lib/items/elements/global/code/code.css +39 -8
- package/lib/items/elements/global/code/code.js +7 -2
- package/lib/items/elements/global/faq/faq.css +38 -16
- package/lib/items/elements/global/faq/faq.js +14 -2
- package/lib/items/elements/global/heading/heading.css +37 -14
- package/lib/items/elements/global/heading/heading.js +9 -4
- package/lib/items/elements/global/markdown/markdown.css +22 -15
- package/lib/items/elements/global/markdown/markdown.js +4 -4
- package/lib/items/elements/global/menu/menu.css +173 -0
- package/lib/items/elements/global/menu/menu.js +103 -0
- package/lib/items/elements/global/notice/notice.css +27 -61
- package/lib/items/elements/global/notice/notice.js +4 -4
- package/lib/items/elements/global/parameters/parameters.css +33 -14
- package/lib/items/elements/global/parameters/parameters.js +15 -6
- package/lib/items/elements/global/tags/tags.css +18 -5
- package/lib/items/elements/global/tags/tags.js +10 -2
- package/lib/items/elements/navigation/navbar/navbar.css +39 -17
- package/lib/items/elements/navigation/navbar/navbar.js +19 -9
- package/lib/items/elements/navigation/sidebar/sidebar.css +25 -39
- package/lib/items/elements/navigation/sidebar/sidebar.js +28 -6
- package/lib/items/elements/navigation/tabs/tabs.css +35 -16
- package/lib/items/elements/navigation/tabs/tabs.js +16 -2
- package/lib/items/elements/status/code/code.css +21 -12
- package/lib/items/elements/status/empty/empty.css +22 -17
- package/lib/items/elements/status/empty/empty.js +1 -1
- package/lib/items/elements/status/error/error.css +22 -12
- package/lib/items/elements/status/error/error.js +1 -1
- package/lib/items/elements/status/loading/loading.css +24 -14
- package/lib/items/elements/status/loading/loading.js +4 -4
- package/lib/load.js +14 -6
- package/lib/styles/reset.css +1 -1
- package/lists.md +586 -0
- package/orchestrator.md +288 -0
- package/package.json +9 -3
- package/lib/items/elements/form/button/styles/base.css +0 -176
- package/lib/items/elements/form/button/styles/sizes.css +0 -78
- package/lib/items/elements/form/button/styles/variants.css +0 -421
- package/lib/items/elements/form/checkbox/styles/base.css +0 -52
- package/lib/items/elements/form/checkbox/styles/sizes.css +0 -39
- package/lib/items/elements/form/checkbox/styles/variants.css +0 -121
- package/lib/items/elements/form/input/styles/base.css +0 -26
- package/lib/items/elements/form/input/styles/sizes.css +0 -15
- package/lib/items/elements/form/input/styles/variants.css +0 -98
- package/lib/items/elements/form/radio/styles/base.css +0 -48
- package/lib/items/elements/form/radio/styles/sizes.css +0 -36
- package/lib/items/elements/form/radio/styles/variants.css +0 -121
- package/lib/items/elements/global/card/card.css +0 -57
- package/lib/items/elements/global/card/card.js +0 -48
- package/lib/items/elements/sections/footer/footer.css +0 -205
- package/lib/items/elements/sections/footer/footer.js +0 -109
- package/lib/items/elements/sections/hero/hero.css +0 -100
- package/lib/items/elements/sections/hero/hero.js +0 -54
- package/lib/items/elements/sections/pricing/pricing.css +0 -148
- package/lib/items/elements/sections/stats/stats.css +0 -34
- package/lib/items/elements/sections/stats/stats.js +0 -74
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import providers from '#providers/addon.js';
|
|
2
|
+
|
|
3
|
+
providers.Fn('item.request', async function(provider, payload)
|
|
4
|
+
{
|
|
5
|
+
const key = (typeof process !== 'undefined' && process.env ? process.env[provider.Get('key')] : '') || '';
|
|
6
|
+
const model = payload.model || provider.Get('model');
|
|
7
|
+
const config = provider.Get('models')[model] || {};
|
|
8
|
+
|
|
9
|
+
const before = provider.Get('onBeforeRequest')({ payload: { ...payload, model }, key, config });
|
|
10
|
+
|
|
11
|
+
const attempt = async (retry) =>
|
|
12
|
+
{
|
|
13
|
+
try
|
|
14
|
+
{
|
|
15
|
+
const start = Date.now();
|
|
16
|
+
|
|
17
|
+
const timeout = provider.Get('timeout') || 120000;
|
|
18
|
+
const controller = new AbortController();
|
|
19
|
+
const timer = setTimeout(() => controller.abort(), timeout);
|
|
20
|
+
|
|
21
|
+
const response = await fetch(provider.Get('endpoint'),
|
|
22
|
+
{
|
|
23
|
+
method: 'POST',
|
|
24
|
+
headers: before.headers,
|
|
25
|
+
body: JSON.stringify(before.body),
|
|
26
|
+
signal: controller.signal
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
clearTimeout(timer);
|
|
30
|
+
|
|
31
|
+
if (!response.ok)
|
|
32
|
+
{
|
|
33
|
+
throw new Error(`API error: ${response.status}`);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const raw = await response.json();
|
|
37
|
+
const time = Date.now() - start;
|
|
38
|
+
|
|
39
|
+
const after = provider.Get('onAfterRequest')({ response: raw, model, config });
|
|
40
|
+
const tps = time > 0 ? parseFloat((after.tokens.output / (time / 1000)).toFixed(2)) : 0;
|
|
41
|
+
|
|
42
|
+
return {
|
|
43
|
+
content: after.content,
|
|
44
|
+
reasoning: after.reasoning,
|
|
45
|
+
tokens: after.tokens,
|
|
46
|
+
time,
|
|
47
|
+
tps
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
catch (error)
|
|
51
|
+
{
|
|
52
|
+
if (retry)
|
|
53
|
+
{
|
|
54
|
+
return await attempt(false);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return await attempt(true);
|
|
62
|
+
});
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
onetype.AddonReady('providers', (providers) =>
|
|
2
|
+
{
|
|
3
|
+
providers.Item({
|
|
4
|
+
id: 'nue',
|
|
5
|
+
name: 'Nue Tools',
|
|
6
|
+
default: true,
|
|
7
|
+
endpoint: 'https://nue.tools.divhunt.com/api/run/ai-chat',
|
|
8
|
+
key: 'NUE_API_KEY',
|
|
9
|
+
model: 'qwen3-next-80b-a3b-thinking',
|
|
10
|
+
models: {
|
|
11
|
+
'qwen3-next-80b-a3b-thinking': {
|
|
12
|
+
tokens: 32768,
|
|
13
|
+
thinking: true,
|
|
14
|
+
price: { input: 0, output: 0 }
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
onBeforeRequest: ({ payload, key }) =>
|
|
18
|
+
({
|
|
19
|
+
headers: {
|
|
20
|
+
'Content-Type': 'application/json',
|
|
21
|
+
...(key && { 'Authorization': `Bearer ${key}` })
|
|
22
|
+
},
|
|
23
|
+
body: payload
|
|
24
|
+
}),
|
|
25
|
+
onAfterRequest: ({ response }) =>
|
|
26
|
+
{
|
|
27
|
+
const data = response.data || {};
|
|
28
|
+
let text = (data.response || '').trim();
|
|
29
|
+
|
|
30
|
+
let reasoning = (data.reasoning || '').trim() || null;
|
|
31
|
+
|
|
32
|
+
if (!reasoning)
|
|
33
|
+
{
|
|
34
|
+
const match = text.match(/<think>([\s\S]*?)<\/think>/i);
|
|
35
|
+
|
|
36
|
+
if (match)
|
|
37
|
+
{
|
|
38
|
+
reasoning = match[1].trim();
|
|
39
|
+
text = text.replace(/<think>[\s\S]*?<\/think>/gi, '').trim();
|
|
40
|
+
}
|
|
41
|
+
else if (text.includes('<think>'))
|
|
42
|
+
{
|
|
43
|
+
/* Handle unclosed think tag */
|
|
44
|
+
const idx = text.indexOf('<think>');
|
|
45
|
+
reasoning = text.slice(idx + 7).trim();
|
|
46
|
+
text = text.slice(0, idx).trim();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const usage = data.usage || {};
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
content: text,
|
|
54
|
+
reasoning,
|
|
55
|
+
tokens: {
|
|
56
|
+
input: usage.prompt_tokens || 0,
|
|
57
|
+
output: usage.completion_tokens || 0
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
providers.Item({
|
|
64
|
+
id: 'ollama',
|
|
65
|
+
name: 'Ollama',
|
|
66
|
+
default: false,
|
|
67
|
+
endpoint: 'http://localhost:11434/v1/chat/completions',
|
|
68
|
+
model: 'qwen3-coder-next:cloud',
|
|
69
|
+
models: {
|
|
70
|
+
'qwen3-coder-next:cloud': {
|
|
71
|
+
tokens: 32768,
|
|
72
|
+
price: { input: 0, output: 0 }
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
onBeforeRequest: ({ payload }) =>
|
|
76
|
+
({
|
|
77
|
+
headers: {
|
|
78
|
+
'Content-Type': 'application/json'
|
|
79
|
+
},
|
|
80
|
+
body: payload
|
|
81
|
+
}),
|
|
82
|
+
onAfterRequest: ({ response }) =>
|
|
83
|
+
{
|
|
84
|
+
const choice = response.choices?.[0] || {};
|
|
85
|
+
const text = (choice.message?.content || '').trim();
|
|
86
|
+
const usage = response.usage || {};
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
content: text,
|
|
90
|
+
reasoning: null,
|
|
91
|
+
tokens: {
|
|
92
|
+
input: usage.prompt_tokens || 0,
|
|
93
|
+
output: usage.completion_tokens || 0
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
elements.Fn('runtime', function()
|
|
2
|
+
{
|
|
3
|
+
this.methods.render = () =>
|
|
4
|
+
{
|
|
5
|
+
elements.Render('body', () =>
|
|
6
|
+
{
|
|
7
|
+
return document.body.outerHTML;
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
const render = elements.Render('body', window);
|
|
11
|
+
document.body.replaceChildren(...render.Element.children);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
if(document.readyState === 'loading')
|
|
15
|
+
{
|
|
16
|
+
document.addEventListener('DOMContentLoaded', () =>
|
|
17
|
+
{
|
|
18
|
+
this.methods.render();
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
else
|
|
22
|
+
{
|
|
23
|
+
this.methods.render();
|
|
24
|
+
}
|
|
25
|
+
});
|
package/lib/browser.js
CHANGED
|
@@ -1,25 +1,2 @@
|
|
|
1
1
|
window.onetype = new OneType();
|
|
2
|
-
window.$ot = onetype.$ot;
|
|
3
|
-
|
|
4
|
-
if (document.readyState === 'loading')
|
|
5
|
-
{
|
|
6
|
-
document.addEventListener('DOMContentLoaded', initBrowser);
|
|
7
|
-
}
|
|
8
|
-
else
|
|
9
|
-
{
|
|
10
|
-
initBrowser();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function initBrowser()
|
|
14
|
-
{
|
|
15
|
-
onetype.Addon('browser', function(addon)
|
|
16
|
-
{
|
|
17
|
-
addon.Render('body', () =>
|
|
18
|
-
{
|
|
19
|
-
return document.body.outerHTML;
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
const render = addon.Render('body', window);
|
|
23
|
-
document.body.replaceChildren(...render.Element.children);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
2
|
+
window.$ot = onetype.$ot;
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
name: 'Click Outside',
|
|
5
|
-
description: 'Detect clicks outside the element. Perfect for closing dropdowns and modals.',
|
|
6
|
-
category: 'events',
|
|
7
|
-
trigger: 'node',
|
|
8
|
-
order: 500,
|
|
9
|
-
attributes: {
|
|
10
|
-
'ot-click-outside': ['string']
|
|
11
|
-
},
|
|
12
|
-
code: function(data, item, compile, node, identifier)
|
|
13
|
-
{
|
|
14
|
-
const attribute = data['ot-click-outside'].value;
|
|
1
|
+
onetype.AddonReady('directives', function()
|
|
2
|
+
{
|
|
3
|
+
const handlers = new Set();
|
|
15
4
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
document.addEventListener('click', function(event)
|
|
6
|
+
{
|
|
7
|
+
handlers.forEach((entry) =>
|
|
8
|
+
{
|
|
9
|
+
if(!document.contains(entry.element))
|
|
10
|
+
{
|
|
11
|
+
handlers.delete(entry);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
if(!entry.element.contains(event.target) && entry.element !== event.target)
|
|
16
|
+
{
|
|
17
|
+
entry.handler(event);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
});
|
|
25
21
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
directives.ItemAdd({
|
|
23
|
+
id: 'ot-click-outside',
|
|
24
|
+
icon: 'close_fullscreen',
|
|
25
|
+
name: 'Click Outside',
|
|
26
|
+
description: 'Detect clicks outside the element.',
|
|
27
|
+
category: 'events',
|
|
28
|
+
trigger: 'node',
|
|
29
|
+
order: 500,
|
|
30
|
+
attributes: {
|
|
31
|
+
'ot-click-outside': ['string']
|
|
32
|
+
},
|
|
33
|
+
code: function(data, item, compile, node, identifier)
|
|
34
|
+
{
|
|
35
|
+
const attribute = data['ot-click-outside'].value;
|
|
29
36
|
|
|
30
|
-
|
|
31
|
-
{
|
|
32
|
-
|
|
37
|
+
const handler = (event) =>
|
|
38
|
+
{
|
|
39
|
+
const results = onetype.Function(attribute, compile.data, false);
|
|
33
40
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{
|
|
40
|
-
handlers.delete({element, handler});
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
41
|
+
if(typeof results === 'function')
|
|
42
|
+
{
|
|
43
|
+
results(event, {item, compile, node, identifier});
|
|
44
|
+
}
|
|
45
|
+
};
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
});
|
|
47
|
+
handlers.add({element: node, handler});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
50
|
});
|