@asterai/cli 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,7 +20,7 @@ $ npm install -g @asterai/cli
20
20
  $ asterai COMMAND
21
21
  running command...
22
22
  $ asterai (--version)
23
- @asterai/cli/0.5.0 linux-x64 node-v20.12.2
23
+ @asterai/cli/0.6.1 linux-x64 node-v20.12.2
24
24
  $ asterai --help [COMMAND]
25
25
  USAGE
26
26
  $ asterai COMMAND
@@ -53,7 +53,7 @@ EXAMPLES
53
53
  $ asterai auth
54
54
  ```
55
55
 
56
- _See code: [src/commands/auth.ts](https://github.com/asterai-io/asterai-sdk/blob/v0.5.0/src/commands/auth.ts)_
56
+ _See code: [src/commands/auth.ts](https://github.com/asterai-io/asterai-sdk/blob/v0.6.1/src/commands/auth.ts)_
57
57
 
58
58
  ## `asterai deploy`
59
59
 
@@ -77,7 +77,7 @@ EXAMPLES
77
77
  $ asterai deploy --app 66a46b12-b1a7-4b72-a64a-0e4fe21902b6
78
78
  ```
79
79
 
80
- _See code: [src/commands/deploy.ts](https://github.com/asterai-io/asterai-sdk/blob/v0.5.0/src/commands/deploy.ts)_
80
+ _See code: [src/commands/deploy.ts](https://github.com/asterai-io/asterai-sdk/blob/v0.6.1/src/commands/deploy.ts)_
81
81
 
82
82
  ## `asterai help [COMMAND]`
83
83
 
@@ -114,7 +114,7 @@ EXAMPLES
114
114
  $ asterai init project-name
115
115
  ```
116
116
 
117
- _See code: [src/commands/init.ts](https://github.com/asterai-io/asterai-sdk/blob/v0.5.0/src/commands/init.ts)_
117
+ _See code: [src/commands/init.ts](https://github.com/asterai-io/asterai-sdk/blob/v0.6.1/src/commands/init.ts)_
118
118
 
119
119
  ## `asterai pkg [INPUT]`
120
120
 
@@ -139,7 +139,7 @@ EXAMPLES
139
139
  $ asterai pkg
140
140
  ```
141
141
 
142
- _See code: [src/commands/pkg.ts](https://github.com/asterai-io/asterai-sdk/blob/v0.5.0/src/commands/pkg.ts)_
142
+ _See code: [src/commands/pkg.ts](https://github.com/asterai-io/asterai-sdk/blob/v0.6.1/src/commands/pkg.ts)_
143
143
 
144
144
  ## `asterai query`
145
145
 
@@ -162,5 +162,5 @@ EXAMPLES
162
162
  $ asterai query
163
163
  ```
164
164
 
165
- _See code: [src/commands/query.ts](https://github.com/asterai-io/asterai-sdk/blob/v0.5.0/src/commands/query.ts)_
165
+ _See code: [src/commands/query.ts](https://github.com/asterai-io/asterai-sdk/blob/v0.6.1/src/commands/query.ts)_
166
166
  <!-- commandsstop -->
package/bin/dev.js CHANGED
File without changes
@@ -0,0 +1,2 @@
1
+ target/
2
+ wit/
@@ -0,0 +1,25 @@
1
+ [package]
2
+ name = "plugin"
3
+ # Note that this version does not matter for the plugin,
4
+ # only the one in plugin.wit is used.
5
+ version = "0.0.0"
6
+ edition = "2021"
7
+ publish = false
8
+
9
+ [dependencies]
10
+ wit-bindgen-rt = { version = "0.39.0", features = ["bitflags"] }
11
+
12
+ [lib]
13
+ crate-type = ["cdylib"]
14
+
15
+ [profile.release]
16
+ codegen-units = 1
17
+ opt-level = "s"
18
+ debug = false
19
+ strip = true
20
+ lto = true
21
+
22
+ [package.metadata.component]
23
+ package = "your-username:plugin"
24
+
25
+ [package.metadata.component.dependencies]
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+ set -e
3
+ mkdir -p wit
4
+ asterai pkg -o wit/package.wasm -w wit/package.wit
5
+ cargo component build --release
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -e
3
+ if [ -z "$1" ]; then
4
+ echo "Deploying without agent ID. Optionally, pass it: $0 <agent ID>"
5
+ fi
6
+ bash ./build.sh
7
+ asterai deploy --pkg wit/package.wasm --plugin target/wasm32-wasip1/release/plugin.wasm -a "$1"
@@ -0,0 +1,10 @@
1
+ package your-username:greeter@0.1.0;
2
+
3
+ interface greeter {
4
+ greet: func(name: string);
5
+ }
6
+
7
+ world plugin {
8
+ import asterai:host/api@0.1.0;
9
+ export greeter;
10
+ }
@@ -0,0 +1,685 @@
1
+ // Generated by `wit-bindgen` 0.36.0. DO NOT EDIT!
2
+ // Options used:
3
+ // * runtime_path: "wit_bindgen_rt"
4
+ #[rustfmt::skip]
5
+ #[allow(dead_code, clippy::all)]
6
+ pub mod asterai {
7
+ pub mod host {
8
+ #[allow(dead_code, clippy::all)]
9
+ pub mod api {
10
+ #[used]
11
+ #[doc(hidden)]
12
+ static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports;
13
+ use super::super::super::_rt;
14
+ #[derive(Clone)]
15
+ pub struct EmbeddingSimilarityScore {
16
+ pub score: f32,
17
+ pub payload: _rt::Vec<(_rt::String, _rt::String)>,
18
+ }
19
+ impl ::core::fmt::Debug for EmbeddingSimilarityScore {
20
+ fn fmt(
21
+ &self,
22
+ f: &mut ::core::fmt::Formatter<'_>,
23
+ ) -> ::core::fmt::Result {
24
+ f.debug_struct("EmbeddingSimilarityScore")
25
+ .field("score", &self.score)
26
+ .field("payload", &self.payload)
27
+ .finish()
28
+ }
29
+ }
30
+ #[derive(Clone)]
31
+ pub struct Query {
32
+ pub content: _rt::String,
33
+ pub user_id: Option<_rt::String>,
34
+ }
35
+ impl ::core::fmt::Debug for Query {
36
+ fn fmt(
37
+ &self,
38
+ f: &mut ::core::fmt::Formatter<'_>,
39
+ ) -> ::core::fmt::Result {
40
+ f.debug_struct("Query")
41
+ .field("content", &self.content)
42
+ .field("user-id", &self.user_id)
43
+ .finish()
44
+ }
45
+ }
46
+ #[derive(Clone)]
47
+ pub struct PluginContext {
48
+ pub query: Query,
49
+ pub app_id: _rt::String,
50
+ }
51
+ impl ::core::fmt::Debug for PluginContext {
52
+ fn fmt(
53
+ &self,
54
+ f: &mut ::core::fmt::Formatter<'_>,
55
+ ) -> ::core::fmt::Result {
56
+ f.debug_struct("PluginContext")
57
+ .field("query", &self.query)
58
+ .field("app-id", &self.app_id)
59
+ .finish()
60
+ }
61
+ }
62
+ #[derive(Clone)]
63
+ pub struct QueryAgentArgs {
64
+ pub query: _rt::String,
65
+ pub agent_id: _rt::String,
66
+ pub query_key: Option<_rt::String>,
67
+ }
68
+ impl ::core::fmt::Debug for QueryAgentArgs {
69
+ fn fmt(
70
+ &self,
71
+ f: &mut ::core::fmt::Formatter<'_>,
72
+ ) -> ::core::fmt::Result {
73
+ f.debug_struct("QueryAgentArgs")
74
+ .field("query", &self.query)
75
+ .field("agent-id", &self.agent_id)
76
+ .field("query-key", &self.query_key)
77
+ .finish()
78
+ }
79
+ }
80
+ #[derive(Clone)]
81
+ pub struct QueryAgentResponse {
82
+ pub content: _rt::String,
83
+ }
84
+ impl ::core::fmt::Debug for QueryAgentResponse {
85
+ fn fmt(
86
+ &self,
87
+ f: &mut ::core::fmt::Formatter<'_>,
88
+ ) -> ::core::fmt::Result {
89
+ f.debug_struct("QueryAgentResponse")
90
+ .field("content", &self.content)
91
+ .finish()
92
+ }
93
+ }
94
+ #[allow(unused_unsafe, clippy::all)]
95
+ pub fn embedding_store(content: &str, collection_name: &str) {
96
+ unsafe {
97
+ let vec0 = content;
98
+ let ptr0 = vec0.as_ptr().cast::<u8>();
99
+ let len0 = vec0.len();
100
+ let vec1 = collection_name;
101
+ let ptr1 = vec1.as_ptr().cast::<u8>();
102
+ let len1 = vec1.len();
103
+ #[cfg(target_arch = "wasm32")]
104
+ #[link(wasm_import_module = "asterai:host/api@0.1.0")]
105
+ extern "C" {
106
+ #[link_name = "embedding-store"]
107
+ fn wit_import(_: *mut u8, _: usize, _: *mut u8, _: usize);
108
+ }
109
+ #[cfg(not(target_arch = "wasm32"))]
110
+ fn wit_import(_: *mut u8, _: usize, _: *mut u8, _: usize) {
111
+ unreachable!()
112
+ }
113
+ wit_import(ptr0.cast_mut(), len0, ptr1.cast_mut(), len1);
114
+ }
115
+ }
116
+ #[allow(unused_unsafe, clippy::all)]
117
+ pub fn embedding_search(
118
+ query: &str,
119
+ collection_name: &str,
120
+ ) -> _rt::Vec<EmbeddingSimilarityScore> {
121
+ unsafe {
122
+ #[repr(align(4))]
123
+ struct RetArea([::core::mem::MaybeUninit<u8>; 8]);
124
+ let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]);
125
+ let vec0 = query;
126
+ let ptr0 = vec0.as_ptr().cast::<u8>();
127
+ let len0 = vec0.len();
128
+ let vec1 = collection_name;
129
+ let ptr1 = vec1.as_ptr().cast::<u8>();
130
+ let len1 = vec1.len();
131
+ let ptr2 = ret_area.0.as_mut_ptr().cast::<u8>();
132
+ #[cfg(target_arch = "wasm32")]
133
+ #[link(wasm_import_module = "asterai:host/api@0.1.0")]
134
+ extern "C" {
135
+ #[link_name = "embedding-search"]
136
+ fn wit_import(
137
+ _: *mut u8,
138
+ _: usize,
139
+ _: *mut u8,
140
+ _: usize,
141
+ _: *mut u8,
142
+ );
143
+ }
144
+ #[cfg(not(target_arch = "wasm32"))]
145
+ fn wit_import(
146
+ _: *mut u8,
147
+ _: usize,
148
+ _: *mut u8,
149
+ _: usize,
150
+ _: *mut u8,
151
+ ) {
152
+ unreachable!()
153
+ }
154
+ wit_import(ptr0.cast_mut(), len0, ptr1.cast_mut(), len1, ptr2);
155
+ let l3 = *ptr2.add(0).cast::<*mut u8>();
156
+ let l4 = *ptr2.add(4).cast::<usize>();
157
+ let base15 = l3;
158
+ let len15 = l4;
159
+ let mut result15 = _rt::Vec::with_capacity(len15);
160
+ for i in 0..len15 {
161
+ let base = base15.add(i * 12);
162
+ let e15 = {
163
+ let l5 = *base.add(0).cast::<f32>();
164
+ let l6 = *base.add(4).cast::<*mut u8>();
165
+ let l7 = *base.add(8).cast::<usize>();
166
+ let base14 = l6;
167
+ let len14 = l7;
168
+ let mut result14 = _rt::Vec::with_capacity(len14);
169
+ for i in 0..len14 {
170
+ let base = base14.add(i * 16);
171
+ let e14 = {
172
+ let l8 = *base.add(0).cast::<*mut u8>();
173
+ let l9 = *base.add(4).cast::<usize>();
174
+ let len10 = l9;
175
+ let bytes10 = _rt::Vec::from_raw_parts(
176
+ l8.cast(),
177
+ len10,
178
+ len10,
179
+ );
180
+ let l11 = *base.add(8).cast::<*mut u8>();
181
+ let l12 = *base.add(12).cast::<usize>();
182
+ let len13 = l12;
183
+ let bytes13 = _rt::Vec::from_raw_parts(
184
+ l11.cast(),
185
+ len13,
186
+ len13,
187
+ );
188
+ (_rt::string_lift(bytes10), _rt::string_lift(bytes13))
189
+ };
190
+ result14.push(e14);
191
+ }
192
+ _rt::cabi_dealloc(base14, len14 * 16, 4);
193
+ EmbeddingSimilarityScore {
194
+ score: l5,
195
+ payload: result14,
196
+ }
197
+ };
198
+ result15.push(e15);
199
+ }
200
+ _rt::cabi_dealloc(base15, len15 * 12, 4);
201
+ result15
202
+ }
203
+ }
204
+ #[allow(unused_unsafe, clippy::all)]
205
+ pub fn kv_get(key: &str, user_id: Option<&str>) -> Option<_rt::String> {
206
+ unsafe {
207
+ #[repr(align(4))]
208
+ struct RetArea([::core::mem::MaybeUninit<u8>; 12]);
209
+ let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]);
210
+ let vec0 = key;
211
+ let ptr0 = vec0.as_ptr().cast::<u8>();
212
+ let len0 = vec0.len();
213
+ let (result2_0, result2_1, result2_2) = match user_id {
214
+ Some(e) => {
215
+ let vec1 = e;
216
+ let ptr1 = vec1.as_ptr().cast::<u8>();
217
+ let len1 = vec1.len();
218
+ (1i32, ptr1.cast_mut(), len1)
219
+ }
220
+ None => (0i32, ::core::ptr::null_mut(), 0usize),
221
+ };
222
+ let ptr3 = ret_area.0.as_mut_ptr().cast::<u8>();
223
+ #[cfg(target_arch = "wasm32")]
224
+ #[link(wasm_import_module = "asterai:host/api@0.1.0")]
225
+ extern "C" {
226
+ #[link_name = "kv-get"]
227
+ fn wit_import(
228
+ _: *mut u8,
229
+ _: usize,
230
+ _: i32,
231
+ _: *mut u8,
232
+ _: usize,
233
+ _: *mut u8,
234
+ );
235
+ }
236
+ #[cfg(not(target_arch = "wasm32"))]
237
+ fn wit_import(
238
+ _: *mut u8,
239
+ _: usize,
240
+ _: i32,
241
+ _: *mut u8,
242
+ _: usize,
243
+ _: *mut u8,
244
+ ) {
245
+ unreachable!()
246
+ }
247
+ wit_import(
248
+ ptr0.cast_mut(),
249
+ len0,
250
+ result2_0,
251
+ result2_1,
252
+ result2_2,
253
+ ptr3,
254
+ );
255
+ let l4 = i32::from(*ptr3.add(0).cast::<u8>());
256
+ match l4 {
257
+ 0 => None,
258
+ 1 => {
259
+ let e = {
260
+ let l5 = *ptr3.add(4).cast::<*mut u8>();
261
+ let l6 = *ptr3.add(8).cast::<usize>();
262
+ let len7 = l6;
263
+ let bytes7 = _rt::Vec::from_raw_parts(
264
+ l5.cast(),
265
+ len7,
266
+ len7,
267
+ );
268
+ _rt::string_lift(bytes7)
269
+ };
270
+ Some(e)
271
+ }
272
+ _ => _rt::invalid_enum_discriminant(),
273
+ }
274
+ }
275
+ }
276
+ #[allow(unused_unsafe, clippy::all)]
277
+ pub fn kv_set(key: &str, value: Option<&str>, user_id: Option<&str>) {
278
+ unsafe {
279
+ let vec0 = key;
280
+ let ptr0 = vec0.as_ptr().cast::<u8>();
281
+ let len0 = vec0.len();
282
+ let (result2_0, result2_1, result2_2) = match value {
283
+ Some(e) => {
284
+ let vec1 = e;
285
+ let ptr1 = vec1.as_ptr().cast::<u8>();
286
+ let len1 = vec1.len();
287
+ (1i32, ptr1.cast_mut(), len1)
288
+ }
289
+ None => (0i32, ::core::ptr::null_mut(), 0usize),
290
+ };
291
+ let (result4_0, result4_1, result4_2) = match user_id {
292
+ Some(e) => {
293
+ let vec3 = e;
294
+ let ptr3 = vec3.as_ptr().cast::<u8>();
295
+ let len3 = vec3.len();
296
+ (1i32, ptr3.cast_mut(), len3)
297
+ }
298
+ None => (0i32, ::core::ptr::null_mut(), 0usize),
299
+ };
300
+ #[cfg(target_arch = "wasm32")]
301
+ #[link(wasm_import_module = "asterai:host/api@0.1.0")]
302
+ extern "C" {
303
+ #[link_name = "kv-set"]
304
+ fn wit_import(
305
+ _: *mut u8,
306
+ _: usize,
307
+ _: i32,
308
+ _: *mut u8,
309
+ _: usize,
310
+ _: i32,
311
+ _: *mut u8,
312
+ _: usize,
313
+ );
314
+ }
315
+ #[cfg(not(target_arch = "wasm32"))]
316
+ fn wit_import(
317
+ _: *mut u8,
318
+ _: usize,
319
+ _: i32,
320
+ _: *mut u8,
321
+ _: usize,
322
+ _: i32,
323
+ _: *mut u8,
324
+ _: usize,
325
+ ) {
326
+ unreachable!()
327
+ }
328
+ wit_import(
329
+ ptr0.cast_mut(),
330
+ len0,
331
+ result2_0,
332
+ result2_1,
333
+ result2_2,
334
+ result4_0,
335
+ result4_1,
336
+ result4_2,
337
+ );
338
+ }
339
+ }
340
+ #[allow(unused_unsafe, clippy::all)]
341
+ pub fn get_env(key: &str) -> Option<_rt::String> {
342
+ unsafe {
343
+ #[repr(align(4))]
344
+ struct RetArea([::core::mem::MaybeUninit<u8>; 12]);
345
+ let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]);
346
+ let vec0 = key;
347
+ let ptr0 = vec0.as_ptr().cast::<u8>();
348
+ let len0 = vec0.len();
349
+ let ptr1 = ret_area.0.as_mut_ptr().cast::<u8>();
350
+ #[cfg(target_arch = "wasm32")]
351
+ #[link(wasm_import_module = "asterai:host/api@0.1.0")]
352
+ extern "C" {
353
+ #[link_name = "get-env"]
354
+ fn wit_import(_: *mut u8, _: usize, _: *mut u8);
355
+ }
356
+ #[cfg(not(target_arch = "wasm32"))]
357
+ fn wit_import(_: *mut u8, _: usize, _: *mut u8) {
358
+ unreachable!()
359
+ }
360
+ wit_import(ptr0.cast_mut(), len0, ptr1);
361
+ let l2 = i32::from(*ptr1.add(0).cast::<u8>());
362
+ match l2 {
363
+ 0 => None,
364
+ 1 => {
365
+ let e = {
366
+ let l3 = *ptr1.add(4).cast::<*mut u8>();
367
+ let l4 = *ptr1.add(8).cast::<usize>();
368
+ let len5 = l4;
369
+ let bytes5 = _rt::Vec::from_raw_parts(
370
+ l3.cast(),
371
+ len5,
372
+ len5,
373
+ );
374
+ _rt::string_lift(bytes5)
375
+ };
376
+ Some(e)
377
+ }
378
+ _ => _rt::invalid_enum_discriminant(),
379
+ }
380
+ }
381
+ }
382
+ #[allow(unused_unsafe, clippy::all)]
383
+ pub fn get_context() -> PluginContext {
384
+ unsafe {
385
+ #[repr(align(4))]
386
+ struct RetArea([::core::mem::MaybeUninit<u8>; 28]);
387
+ let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]);
388
+ let ptr0 = ret_area.0.as_mut_ptr().cast::<u8>();
389
+ #[cfg(target_arch = "wasm32")]
390
+ #[link(wasm_import_module = "asterai:host/api@0.1.0")]
391
+ extern "C" {
392
+ #[link_name = "get-context"]
393
+ fn wit_import(_: *mut u8);
394
+ }
395
+ #[cfg(not(target_arch = "wasm32"))]
396
+ fn wit_import(_: *mut u8) {
397
+ unreachable!()
398
+ }
399
+ wit_import(ptr0);
400
+ let l1 = *ptr0.add(0).cast::<*mut u8>();
401
+ let l2 = *ptr0.add(4).cast::<usize>();
402
+ let len3 = l2;
403
+ let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3);
404
+ let l4 = i32::from(*ptr0.add(8).cast::<u8>());
405
+ let l8 = *ptr0.add(20).cast::<*mut u8>();
406
+ let l9 = *ptr0.add(24).cast::<usize>();
407
+ let len10 = l9;
408
+ let bytes10 = _rt::Vec::from_raw_parts(l8.cast(), len10, len10);
409
+ PluginContext {
410
+ query: Query {
411
+ content: _rt::string_lift(bytes3),
412
+ user_id: match l4 {
413
+ 0 => None,
414
+ 1 => {
415
+ let e = {
416
+ let l5 = *ptr0.add(12).cast::<*mut u8>();
417
+ let l6 = *ptr0.add(16).cast::<usize>();
418
+ let len7 = l6;
419
+ let bytes7 = _rt::Vec::from_raw_parts(
420
+ l5.cast(),
421
+ len7,
422
+ len7,
423
+ );
424
+ _rt::string_lift(bytes7)
425
+ };
426
+ Some(e)
427
+ }
428
+ _ => _rt::invalid_enum_discriminant(),
429
+ },
430
+ },
431
+ app_id: _rt::string_lift(bytes10),
432
+ }
433
+ }
434
+ }
435
+ #[allow(unused_unsafe, clippy::all)]
436
+ pub fn send_response_to_agent(response: &str) {
437
+ unsafe {
438
+ let vec0 = response;
439
+ let ptr0 = vec0.as_ptr().cast::<u8>();
440
+ let len0 = vec0.len();
441
+ #[cfg(target_arch = "wasm32")]
442
+ #[link(wasm_import_module = "asterai:host/api@0.1.0")]
443
+ extern "C" {
444
+ #[link_name = "send-response-to-agent"]
445
+ fn wit_import(_: *mut u8, _: usize);
446
+ }
447
+ #[cfg(not(target_arch = "wasm32"))]
448
+ fn wit_import(_: *mut u8, _: usize) {
449
+ unreachable!()
450
+ }
451
+ wit_import(ptr0.cast_mut(), len0);
452
+ }
453
+ }
454
+ #[allow(unused_unsafe, clippy::all)]
455
+ pub fn query_agent(
456
+ args: &QueryAgentArgs,
457
+ ) -> Result<QueryAgentResponse, _rt::String> {
458
+ unsafe {
459
+ #[repr(align(4))]
460
+ struct RetArea([::core::mem::MaybeUninit<u8>; 12]);
461
+ let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]);
462
+ let QueryAgentArgs {
463
+ query: query0,
464
+ agent_id: agent_id0,
465
+ query_key: query_key0,
466
+ } = args;
467
+ let vec1 = query0;
468
+ let ptr1 = vec1.as_ptr().cast::<u8>();
469
+ let len1 = vec1.len();
470
+ let vec2 = agent_id0;
471
+ let ptr2 = vec2.as_ptr().cast::<u8>();
472
+ let len2 = vec2.len();
473
+ let (result4_0, result4_1, result4_2) = match query_key0 {
474
+ Some(e) => {
475
+ let vec3 = e;
476
+ let ptr3 = vec3.as_ptr().cast::<u8>();
477
+ let len3 = vec3.len();
478
+ (1i32, ptr3.cast_mut(), len3)
479
+ }
480
+ None => (0i32, ::core::ptr::null_mut(), 0usize),
481
+ };
482
+ let ptr5 = ret_area.0.as_mut_ptr().cast::<u8>();
483
+ #[cfg(target_arch = "wasm32")]
484
+ #[link(wasm_import_module = "asterai:host/api@0.1.0")]
485
+ extern "C" {
486
+ #[link_name = "query-agent"]
487
+ fn wit_import(
488
+ _: *mut u8,
489
+ _: usize,
490
+ _: *mut u8,
491
+ _: usize,
492
+ _: i32,
493
+ _: *mut u8,
494
+ _: usize,
495
+ _: *mut u8,
496
+ );
497
+ }
498
+ #[cfg(not(target_arch = "wasm32"))]
499
+ fn wit_import(
500
+ _: *mut u8,
501
+ _: usize,
502
+ _: *mut u8,
503
+ _: usize,
504
+ _: i32,
505
+ _: *mut u8,
506
+ _: usize,
507
+ _: *mut u8,
508
+ ) {
509
+ unreachable!()
510
+ }
511
+ wit_import(
512
+ ptr1.cast_mut(),
513
+ len1,
514
+ ptr2.cast_mut(),
515
+ len2,
516
+ result4_0,
517
+ result4_1,
518
+ result4_2,
519
+ ptr5,
520
+ );
521
+ let l6 = i32::from(*ptr5.add(0).cast::<u8>());
522
+ match l6 {
523
+ 0 => {
524
+ let e = {
525
+ let l7 = *ptr5.add(4).cast::<*mut u8>();
526
+ let l8 = *ptr5.add(8).cast::<usize>();
527
+ let len9 = l8;
528
+ let bytes9 = _rt::Vec::from_raw_parts(
529
+ l7.cast(),
530
+ len9,
531
+ len9,
532
+ );
533
+ QueryAgentResponse {
534
+ content: _rt::string_lift(bytes9),
535
+ }
536
+ };
537
+ Ok(e)
538
+ }
539
+ 1 => {
540
+ let e = {
541
+ let l10 = *ptr5.add(4).cast::<*mut u8>();
542
+ let l11 = *ptr5.add(8).cast::<usize>();
543
+ let len12 = l11;
544
+ let bytes12 = _rt::Vec::from_raw_parts(
545
+ l10.cast(),
546
+ len12,
547
+ len12,
548
+ );
549
+ _rt::string_lift(bytes12)
550
+ };
551
+ Err(e)
552
+ }
553
+ _ => _rt::invalid_enum_discriminant(),
554
+ }
555
+ }
556
+ }
557
+ }
558
+ }
559
+ }
560
+ #[rustfmt::skip]
561
+ #[allow(dead_code, clippy::all)]
562
+ pub mod exports {
563
+ pub mod your_username {
564
+ pub mod greeter {
565
+ #[allow(dead_code, clippy::all)]
566
+ pub mod greeter {
567
+ #[used]
568
+ #[doc(hidden)]
569
+ static __FORCE_SECTION_REF: fn() = super::super::super::super::__link_custom_section_describing_imports;
570
+ use super::super::super::super::_rt;
571
+ #[doc(hidden)]
572
+ #[allow(non_snake_case)]
573
+ pub unsafe fn _export_greet_cabi<T: Guest>(arg0: *mut u8, arg1: usize) {
574
+ #[cfg(target_arch = "wasm32")] _rt::run_ctors_once();
575
+ let len0 = arg1;
576
+ let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0);
577
+ T::greet(_rt::string_lift(bytes0));
578
+ }
579
+ pub trait Guest {
580
+ fn greet(name: _rt::String);
581
+ }
582
+ #[doc(hidden)]
583
+ macro_rules! __export_your_username_greeter_greeter_0_1_0_cabi {
584
+ ($ty:ident with_types_in $($path_to_types:tt)*) => {
585
+ const _ : () = { #[export_name =
586
+ "your-username:greeter/greeter@0.1.0#greet"] unsafe extern "C" fn
587
+ export_greet(arg0 : * mut u8, arg1 : usize,) {
588
+ $($path_to_types)*:: _export_greet_cabi::<$ty > (arg0, arg1) } };
589
+ };
590
+ }
591
+ #[doc(hidden)]
592
+ pub(crate) use __export_your_username_greeter_greeter_0_1_0_cabi;
593
+ }
594
+ }
595
+ }
596
+ }
597
+ #[rustfmt::skip]
598
+ mod _rt {
599
+ pub use alloc_crate::vec::Vec;
600
+ pub use alloc_crate::string::String;
601
+ pub unsafe fn string_lift(bytes: Vec<u8>) -> String {
602
+ if cfg!(debug_assertions) {
603
+ String::from_utf8(bytes).unwrap()
604
+ } else {
605
+ String::from_utf8_unchecked(bytes)
606
+ }
607
+ }
608
+ pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) {
609
+ if size == 0 {
610
+ return;
611
+ }
612
+ let layout = alloc::Layout::from_size_align_unchecked(size, align);
613
+ alloc::dealloc(ptr, layout);
614
+ }
615
+ pub unsafe fn invalid_enum_discriminant<T>() -> T {
616
+ if cfg!(debug_assertions) {
617
+ panic!("invalid enum discriminant")
618
+ } else {
619
+ core::hint::unreachable_unchecked()
620
+ }
621
+ }
622
+ #[cfg(target_arch = "wasm32")]
623
+ pub fn run_ctors_once() {
624
+ wit_bindgen_rt::run_ctors_once();
625
+ }
626
+ extern crate alloc as alloc_crate;
627
+ pub use alloc_crate::alloc;
628
+ }
629
+ /// Generates `#[no_mangle]` functions to export the specified type as the
630
+ /// root implementation of all generated traits.
631
+ ///
632
+ /// For more information see the documentation of `wit_bindgen::generate!`.
633
+ ///
634
+ /// ```rust
635
+ /// # macro_rules! export{ ($($t:tt)*) => (); }
636
+ /// # trait Guest {}
637
+ /// struct MyType;
638
+ ///
639
+ /// impl Guest for MyType {
640
+ /// // ...
641
+ /// }
642
+ ///
643
+ /// export!(MyType);
644
+ /// ```
645
+ #[allow(unused_macros)]
646
+ #[doc(hidden)]
647
+ macro_rules! __export_plugin_impl {
648
+ ($ty:ident) => {
649
+ self::export!($ty with_types_in self);
650
+ };
651
+ ($ty:ident with_types_in $($path_to_types_root:tt)*) => {
652
+ $($path_to_types_root)*::
653
+ exports::your_username::greeter::greeter::__export_your_username_greeter_greeter_0_1_0_cabi!($ty
654
+ with_types_in $($path_to_types_root)*::
655
+ exports::your_username::greeter::greeter);
656
+ };
657
+ }
658
+ #[doc(inline)]
659
+ pub(crate) use __export_plugin_impl as export;
660
+ #[cfg(target_arch = "wasm32")]
661
+ #[link_section = "component-type:wit-bindgen:0.36.0:your-username:greeter@0.1.0:plugin:encoded world"]
662
+ #[doc(hidden)]
663
+ pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 776] = *b"\
664
+ \0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07\x8b\x05\x01A\x02\x01\
665
+ A\x04\x01B\x1f\x01o\x02ss\x01p\0\x01r\x02\x05scorev\x07payload\x01\x04\0\x1aembe\
666
+ dding-similarity-score\x03\0\x02\x01ks\x01r\x02\x07contents\x07user-id\x04\x04\0\
667
+ \x05query\x03\0\x05\x01r\x02\x05query\x06\x06app-ids\x04\0\x0eplugin-context\x03\
668
+ \0\x07\x01r\x03\x05querys\x08agent-ids\x09query-key\x04\x04\0\x10query-agent-arg\
669
+ s\x03\0\x09\x01r\x01\x07contents\x04\0\x14query-agent-response\x03\0\x0b\x01@\x02\
670
+ \x07contents\x0fcollection-names\x01\0\x04\0\x0fembedding-store\x01\x0d\x01p\x03\
671
+ \x01@\x02\x05querys\x0fcollection-names\0\x0e\x04\0\x10embedding-search\x01\x0f\x01\
672
+ @\x02\x03keys\x07user-id\x04\0\x04\x04\0\x06kv-get\x01\x10\x01@\x03\x03keys\x05v\
673
+ alue\x04\x07user-id\x04\x01\0\x04\0\x06kv-set\x01\x11\x01@\x01\x03keys\0\x04\x04\
674
+ \0\x07get-env\x01\x12\x01@\0\0\x08\x04\0\x0bget-context\x01\x13\x01@\x01\x08resp\
675
+ onses\x01\0\x04\0\x16send-response-to-agent\x01\x14\x01j\x01\x0c\x01s\x01@\x01\x04\
676
+ args\x0a\0\x15\x04\0\x0bquery-agent\x01\x16\x03\0\x16asterai:host/api@0.1.0\x05\0\
677
+ \x01B\x02\x01@\x01\x04names\x01\0\x04\0\x05greet\x01\0\x04\0#your-username:greet\
678
+ er/greeter@0.1.0\x05\x01\x04\0\"your-username:greeter/plugin@0.1.0\x04\0\x0b\x0c\
679
+ \x01\0\x06plugin\x03\0\0\0G\x09producers\x01\x0cprocessed-by\x02\x0dwit-componen\
680
+ t\x070.220.0\x10wit-bindgen-rust\x060.36.0";
681
+ #[inline(never)]
682
+ #[doc(hidden)]
683
+ pub fn __link_custom_section_describing_imports() {
684
+ wit_bindgen_rt::maybe_link_cabi_realloc();
685
+ }
@@ -0,0 +1,16 @@
1
+ use crate::bindings::asterai::host::api;
2
+ use crate::bindings::exports::your_username::greeter::greeter::Guest;
3
+
4
+ #[allow(warnings)]
5
+ mod bindings;
6
+
7
+ struct Component;
8
+
9
+ impl Guest for Component {
10
+ fn greet(name: String) {
11
+ let greeting = format!("hello {name}");
12
+ api::send_response_to_agent(&greeting);
13
+ }
14
+ }
15
+
16
+ bindings::export!(Component with_types_in bindings);
@@ -0,0 +1,10 @@
1
+ .idea/
2
+ node_modules/
3
+ package-lock.json
4
+ pnpm-lock.yaml
5
+ build/
6
+ generated/
7
+ .vscode/
8
+ tsconfig.tsbuildinfo
9
+ *.wasm
10
+ typegen/
@@ -17,7 +17,7 @@
17
17
  "devDependencies": {
18
18
  "@asterai/cli": "latest",
19
19
  "@asterai/sdk": "latest",
20
- "@bytecodealliance/jco": "^1.9.1",
20
+ "@bytecodealliance/jco": "^1.10.2",
21
21
  "@types/node": "^22.13.4",
22
22
  "mkdirp": "^3.0.1",
23
23
  "npm-run-all": "^4.1.5",
@@ -1,11 +1,13 @@
1
- import { BinaryOperationInput } from "./generated/plugin";
2
1
  import * as asterai from "asterai:host/api@0.1.0";
2
+ import { BinaryOperationResult } from "example:math/plugin@0.1.0";
3
3
 
4
- export const add = (input: BinaryOperationInput): number => {
5
- const result = input.a + input.b;
4
+ export const mul = (a: number, b: number): BinaryOperationResult => {
5
+ const result = a + b;
6
6
  // Send the calculation result to the agent.
7
7
  asterai.sendResponseToAgent(`the result is ${result}`);
8
8
  // This result is not seen by the agent, but it can be consumed by
9
9
  // other plugins calling this function.
10
- return result;
10
+ return {
11
+ value: result,
12
+ };
11
13
  };
@@ -0,0 +1,11 @@
1
+ package example:math@0.1.0;
2
+
3
+ world plugin {
4
+ import asterai:host/api@0.1.0;
5
+
6
+ export mul: func(a: f32, b: f32) -> binary-operation-result;
7
+
8
+ record binary-operation-result {
9
+ value: f64,
10
+ }
11
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "include": ["./**/*.ts"],
3
+ "compilerOptions": {
4
+ "outDir": "build",
5
+ "module": "ESNext",
6
+ "moduleResolution": "node"
7
+ }
8
+ }
@@ -231,5 +231,5 @@
231
231
  ]
232
232
  }
233
233
  },
234
- "version": "0.5.0"
234
+ "version": "0.6.1"
235
235
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@asterai/cli",
3
3
  "description": "CLI for building and deploying asterai plugins",
4
- "version": "0.5.0",
4
+ "version": "0.6.1",
5
5
  "author": "asterai <support@asterai.io>",
6
6
  "repository": "asterai-io/asterai-sdk",
7
7
  "homepage": "https://github.com/asterai-io/asterai-sdk",
@@ -13,18 +13,6 @@
13
13
  "license": "UNLICENSED",
14
14
  "main": "dist/index.js",
15
15
  "type": "module",
16
- "scripts": {
17
- "prepare": "cd .. && husky cli/.husky",
18
- "build": "shx rm -rf dist && tsc -b",
19
- "lint": "eslint . --ext .ts",
20
- "postpack": "shx rm -f oclif.manifest.json",
21
- "posttest": "pnpm run lint",
22
- "prepack": "oclif manifest && oclif readme",
23
- "test": "mocha --forbid-only \"test/**/*.test.ts\"",
24
- "version": "oclif readme && git add README.md",
25
- "format": "prettier --write .",
26
- "format-staged": "pretty-quick --staged"
27
- },
28
16
  "bin": {
29
17
  "asterai": "./bin/run.js"
30
18
  },
@@ -36,7 +24,15 @@
36
24
  "/bin",
37
25
  "/dist",
38
26
  "/oclif.manifest.json",
39
- "/asterai-init-plugin"
27
+ "/init",
28
+ "/init/rust/.gitignore",
29
+ "/init/typescript/.gitignore",
30
+ "!/init/rust/target",
31
+ "!/init/rust/Cargo.lock",
32
+ "!/init/typescript/build",
33
+ "!/init/typescript/node_modules",
34
+ "!/init/typescript/generated",
35
+ "!/init/typescript/pnpm-lock.yaml"
40
36
  ],
41
37
  "oclif": {
42
38
  "bin": "asterai",
@@ -83,5 +79,14 @@
83
79
  "shx": "^0.3.3",
84
80
  "ts-node": "^10",
85
81
  "typescript": "^5"
82
+ },
83
+ "scripts": {
84
+ "build": "shx rm -rf dist && tsc -b",
85
+ "lint": "eslint . --ext .ts",
86
+ "posttest": "pnpm run lint",
87
+ "test": "mocha --forbid-only \"test/**/*.test.ts\"",
88
+ "version": "oclif readme && git add README.md",
89
+ "format": "prettier --write .",
90
+ "format-staged": "pretty-quick --staged"
86
91
  }
87
- }
92
+ }
@@ -1,12 +0,0 @@
1
- package example:math@0.1.0;
2
-
3
- world plugin {
4
- import asterai:host/api@0.1.0;
5
-
6
- export add: func(input: binary-operation-input) -> s32;
7
-
8
- record binary-operation-input {
9
- a: f64,
10
- b: f64,
11
- }
12
- }
@@ -1,11 +0,0 @@
1
- {
2
- "include": ["./**/*.ts"],
3
- "compilerOptions": {
4
- "outDir": "build",
5
- "module": "ESNext",
6
- "moduleResolution": "node",
7
- "paths": {
8
- "asterai:host/api@0.1.0": ["./generated/interfaces/asterai-host-api.d.ts"]
9
- }
10
- }
11
- }