@misterscan/sesi 1.2.0 → 1.2.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.
@@ -1,261 +1,280 @@
1
- // Sesi Script: sesi_db_chatbot.sesi
2
- // 100% NATIVE, ZERO-HARDCODING DEEP LEARNING CO-PILOT!
3
- // Dynamically indexes the sesi-db knowledge base, trains on-the-fly, and answers queries!
4
-
5
- // ==================================================
6
- // 💬 1. CHOOSE YOUR ADVANCED TECHNICAL QUERY HERE!
7
- // (Test it with custom phrases containing our keywords!)
8
- let queryText = "how do I parse a json string?"
9
- try {
10
- queryText = read_file("query.txt")
11
- } catch (e) {}
12
- // ==================================================
13
-
14
- print "=================================================="
15
- print "🧠 WELCOME TO THE SESI CO-PILOT!"
16
- print "=================================================="
17
-
18
- // Sigmoid math
19
- fn activate(x) {
20
- return 1.0 / (1.0 + exp(0.0 - x))
21
- }
22
-
23
- fn derivative(y) {
24
- return y * (1.0 - y)
25
- }
26
-
27
- // 2. Advanced Bag-of-Words Vectorizer (49 keywords covering all Sesi primitives & built-ins)
28
- fn vectorize(text) {
29
- let words = split(text, " ")
30
-
31
- // Dynamically initialize 49-dimensional vector
32
- let vec = []
33
- let k = 0
34
- while k < 49 {
35
- push(vec, 0.0)
36
- k = k + 1
37
- }
38
-
39
- let w = 0
40
- while w < len(words) {
41
- let word = words[w]
42
- if word == "print" { vec[0] = 1.0 }
43
- if word == "str" { vec[1] = 1.0 }
44
- if word == "type" { vec[2] = 1.0 }
45
- if word == "num" { vec[3] = 1.0 }
46
- if word == "bool" { vec[4] = 1.0 }
47
- if word == "json" { vec[5] = 1.0 }
48
- if word == "from_json" { vec[6] = 1.0 }
49
- if word == "to_json" { vec[7] = 1.0 }
50
- if word == "len" { vec[8] = 1.0 }
51
- if word == "file" { vec[9] = 1.0 }
52
- if word == "read_file" { vec[10] = 1.0 }
53
- if word == "write_file" { vec[11] = 1.0 }
54
- if word == "dir" { vec[12] = 1.0 }
55
- if word == "list_dir" { vec[13] = 1.0 }
56
- if word == "make_dir" { vec[14] = 1.0 }
57
- if word == "exp" { vec[15] = 1.0 }
58
- if word == "random" { vec[16] = 1.0 }
59
- if word == "let" { vec[17] = 1.0 }
60
- if word == "const" { vec[18] = 1.0 }
61
- if word == "fn" { vec[19] = 1.0 }
62
- if word == "if" { vec[20] = 1.0 }
63
- if word == "else" { vec[21] = 1.0 }
64
- if word == "while" { vec[22] = 1.0 }
65
- if word == "for" { vec[23] = 1.0 }
66
- if word == "return" { vec[24] = 1.0 }
67
- if word == "break" { vec[25] = 1.0 }
68
- if word == "continue" { vec[26] = 1.0 }
69
- if word == "try" { vec[27] = 1.0 }
70
- if word == "catch" { vec[28] = 1.0 }
71
- if word == "import" { vec[29] = 1.0 }
72
- if word == "export" { vec[30] = 1.0 }
73
- if word == "memory" { vec[31] = 1.0 }
74
- if word == "sleep" { vec[32] = 1.0 }
75
- if word == "now" { vec[33] = 1.0 }
76
- if word == "model" { vec[34] = 1.0 }
77
- if word == "image" { vec[35] = 1.0 }
78
- if word == "structured_output" { vec[36] = 1.0 }
79
- if word == "tool_call" { vec[37] = 1.0 }
80
- if word == "spawn" { vec[38] = 1.0 }
81
- if word == "exec" { vec[39] = 1.0 }
82
- if word == "time" { vec[40] = 1.0 }
83
- if word == "range" { vec[41] = 1.0 }
84
- if word == "push" { vec[42] = 1.0 }
85
- if word == "pop" { vec[43] = 1.0 }
86
- if word == "join" { vec[44] = 1.0 }
87
- if word == "split" { vec[45] = 1.0 }
88
- if word == "keys" { vec[46] = 1.0 }
89
- if word == "values" { vec[47] = 1.0 }
90
- if word == "array" { vec[48] = 1.0 }
91
- w = w + 1
92
- }
93
- return vec
94
- }
95
-
96
- let db_files = list_dir("sesi-db")
97
- let num_classes = len(db_files)
98
-
99
- if num_classes == 0 {
100
- print "⚠️ Database is empty! Run 'sesi indexer.sesi' first!"
101
- } else {
102
- print "✅ Found " + str(num_classes) + " knowledge documents in sesi-db!"
103
-
104
- let database = []
105
- let inputs = []
106
- let targets = []
107
-
108
- let i = 0
109
- while i < num_classes {
110
- let f = db_files[i]
111
- let raw = read_file("sesi-db/" + f)
112
- let parsed = from_json(raw)
113
-
114
- // Combine summary and rules for training text
115
- let doc_text = parsed["summary"] + " " + parsed["key_rules"]
116
- let vec = vectorize(doc_text)
117
- push(inputs, vec)
118
-
119
- // Create one-hot targets dynamically
120
- let t = []
121
- let t_idx = 0
122
- while t_idx < num_classes {
123
- if t_idx == i {
124
- push(t, 1.0)
125
- } else {
126
- push(t, 0.0)
127
- }
128
- t_idx = t_idx + 1
129
- }
130
- push(targets, t)
131
- push(database, parsed)
132
-
133
- i = i + 1
134
- }
135
-
136
- // 4. Dynamic Multi-Class Weights Matrix Initialization
137
- let weights = []
138
- let biases = []
139
-
140
- let c = 0
141
- while c < num_classes {
142
- // Initialize random-seeded weights between -0.2 and 0.2
143
- let w_row = []
144
- let k = 0
145
- while k < 49 {
146
- let r_val = (random() * 0.4) - 0.2
147
- push(w_row, r_val)
148
- k = k + 1
149
- }
150
- push(weights, w_row)
151
- push(biases, 0.0)
152
- c = c + 1
153
- }
154
-
155
- // 5. Run dynamic multi-class gradient descent training loop (2,000 epochs)
156
- let lr = 0.5
157
- let epoch = 1
158
- while epoch <= 2000 {
159
- let c = 0
160
- while c < num_classes {
161
- let x = inputs[c]
162
- let t = targets[c]
163
-
164
- // Forward propagation (dynamic dot product)
165
- let sum = 0.0
166
- let w_row = weights[c]
167
- let k = 0
168
- while k < 49 {
169
- sum = sum + (x[k] * w_row[k])
170
- k = k + 1
171
- }
172
- let o = activate(sum + biases[c])
173
-
174
- // Backpropagation delta
175
- let delta = (t[c] - o) * derivative(o)
176
-
177
- // Synaptic updates
178
- k = 0
179
- while k < 49 {
180
- w_row[k] = w_row[k] + (lr * delta * x[k])
181
- k = k + 1
182
- }
183
- biases[c] = biases[c] + (lr * delta)
184
-
185
- c = c + 1
186
- }
187
- epoch = epoch + 1
188
- }
189
-
190
- let query_vec = vectorize(queryText)
191
-
192
- // Forward propagation on user query across all dynamic classes
193
- let outputs = []
194
- let j = 0
195
- while j < num_classes {
196
- let sum = 0.0
197
- let w_row = weights[j]
198
- let k = 0
199
- while k < 49 {
200
- sum = sum + (query_vec[k] * w_row[k])
201
- k = k + 1
202
- }
203
- let o = activate(sum + biases[j])
204
- push(outputs, o)
205
- j = j + 1
206
- }
207
- print "🧠 Neural Activation Scores: " + str(outputs)
208
-
209
- // Determine class index with highest score
210
- let best_class = 0
211
- let max_score = -1.0
212
- let j = 0
213
- while j < num_classes {
214
- if outputs[j] > max_score {
215
- max_score = outputs[j]
216
- best_class = j
217
- }
218
- j = j + 1
219
- }
220
-
221
- // 7. Output Dynamic Recommendation with Confidence Thresholding
222
- print "--------------------------------------------------"
223
- print "🤖 SESI CO-PILOT RESPONDING:"
224
- print "--------------------------------------------------"
225
- if max_score < 0.40 {
226
- print "🤔 Sesi's native synapses evaluated this query with low confidence: " + str(max_score)
227
- print " It seems your question does not contain any Sesi keywords in our vocabulary!"
228
- print " Please try asking about: 'print', 'str', 'files', 'json', 'model', 'image', or 'random'!"
229
- } else {
230
- let rec = database[best_class]
231
- print "📂 DOCUMENTATION MATCHED: " + db_files[best_class]
232
- print "--------------------------------------------------"
233
- print "🧠 Dynamic predictive text generation active..."
234
- print "🤖 Conversationalizing and re-typing manual answer..."
235
-
236
- let docs_list = list_dir("docs")
237
- let sesiDocs = ""
238
- let d = 0
239
- while d < len(docs_list) {
240
- let f_name = docs_list[d]
241
- let parts = split(f_name, ".")
242
- let ext = parts[len(parts) - 1]
243
-
244
- if ext == "md" {
245
- let doc_content = read_file("docs/" + f_name)
246
- sesiDocs = sesiDocs + "\n\n=== DOCUMENT: " + f_name + " ===\n" + doc_content
247
- }
248
- d = d + 1
249
- }
250
-
251
- let ragPrompt = "Sesi Official Reference Documentation:\n" + sesiDocs + "\n\nUser Query: " + queryText + "\n\nMatched Context from Sesi DB:\nSummary: " + rec["summary"] + "\nKey Rules: " + rec["key_rules"] + "\n\nInstructions: Write a direct, beautiful, highly conversational response to the user's question using strictly the matched rules. Walk them through Sesi's syntax with direct examples. Be helpful and concise. Do not mention that you got this from a database—act as a supportive code copilot. All responses must not anticipate a future response."
252
-
253
- let generated_response = model("gemini-3.1-flash-lite") {"temperature": 0.3, "max_tokens": 200} {ragPrompt}
254
-
255
- print "--------------------------------------------------"
256
- print generated_response
257
- print "--------------------------------------------------"
258
- print "📐 Neural Classification Confidence: " + str(max_score)
259
- }
260
- print "=================================================="
261
- }
1
+ // Dynamically indexes the sesi-db knowledge base, trains on-the-fly, and answers queries!
2
+
3
+ // ==================================================
4
+ // 💬 1. CHOOSE YOUR ADVANCED TECHNICAL QUERY HERE!
5
+ // (Test it with custom phrases containing our keywords!)
6
+ let queryText = "how do I parse a json string?"
7
+ try {
8
+ queryText = read_file("query.txt")
9
+ } catch (e) {}
10
+ // ==================================================
11
+
12
+ print "=================================================="
13
+ print "🧠 WELCOME TO THE SESI CO-PILOT!"
14
+ print "=================================================="
15
+
16
+
17
+ // Maintains context across multiple queries so the co-pilot remembers what you previously asked.
18
+ memory chatHistory {"You are the Sesi Co-Pilot, an expert assistant for the Sesi programming language. You help users write correct, idiomatic Sesi code. Be concise and conversational."}
19
+
20
+ // Load persisted history from disk if it exists
21
+ try {
22
+ chatHistory = read_file("sesi-db/chat_history.txt")
23
+ print "📝 Loaded previous conversation context."
24
+ } catch (e) {}
25
+
26
+ // Auto-summarize when history gets too long (saves tokens)
27
+ fn summarizeHistory() {
28
+ let summary = model("gemini-3.1-flash-lite") {"temperature": 0, "max_tokens": 300} {"Summarize this conversation history into key facts and context. Be very concise: " chatHistory}
29
+ chatHistory = "Previous conversation summary: " + summary
30
+ print "🗜️ Memory auto-summarized to save tokens."
31
+ }
32
+
33
+ // Sigmoid math
34
+ fn activate(x) {
35
+ return 1.0 / (1.0 + exp(0.0 - x))
36
+ }
37
+
38
+ fn derivative(y) {
39
+ return y * (1.0 - y)
40
+ }
41
+
42
+ // 2. Advanced Bag-of-Words Vectorizer (49 keywords covering all Sesi primitives & built-ins)
43
+ fn vectorize(text) {
44
+ let words = split(text, " ")
45
+
46
+ // Dynamically initialize 49-dimensional vector
47
+ let vec = []
48
+ let k = 0
49
+ while k < 49 {
50
+ push(vec, 0.0)
51
+ k = k + 1
52
+ }
53
+
54
+ let w = 0
55
+ while w < len(words) {
56
+ let word = words[w]
57
+ if word == "print" { vec[0] = 1.0 }
58
+ if word == "str" { vec[1] = 1.0 }
59
+ if word == "type" { vec[2] = 1.0 }
60
+ if word == "num" { vec[3] = 1.0 }
61
+ if word == "bool" { vec[4] = 1.0 }
62
+ if word == "json" { vec[5] = 1.0 }
63
+ if word == "from_json" { vec[6] = 1.0 }
64
+ if word == "to_json" { vec[7] = 1.0 }
65
+ if word == "len" { vec[8] = 1.0 }
66
+ if word == "file" { vec[9] = 1.0 }
67
+ if word == "read_file" { vec[10] = 1.0 }
68
+ if word == "write_file" { vec[11] = 1.0 }
69
+ if word == "dir" { vec[12] = 1.0 }
70
+ if word == "list_dir" { vec[13] = 1.0 }
71
+ if word == "make_dir" { vec[14] = 1.0 }
72
+ if word == "exp" { vec[15] = 1.0 }
73
+ if word == "random" { vec[16] = 1.0 }
74
+ if word == "let" { vec[17] = 1.0 }
75
+ if word == "const" { vec[18] = 1.0 }
76
+ if word == "fn" { vec[19] = 1.0 }
77
+ if word == "if" { vec[20] = 1.0 }
78
+ if word == "else" { vec[21] = 1.0 }
79
+ if word == "while" { vec[22] = 1.0 }
80
+ if word == "for" { vec[23] = 1.0 }
81
+ if word == "return" { vec[24] = 1.0 }
82
+ if word == "break" { vec[25] = 1.0 }
83
+ if word == "continue" { vec[26] = 1.0 }
84
+ if word == "try" { vec[27] = 1.0 }
85
+ if word == "catch" { vec[28] = 1.0 }
86
+ if word == "import" { vec[29] = 1.0 }
87
+ if word == "export" { vec[30] = 1.0 }
88
+ if word == "memory" { vec[31] = 1.0 }
89
+ if word == "sleep" { vec[32] = 1.0 }
90
+ if word == "now" { vec[33] = 1.0 }
91
+ if word == "model" { vec[34] = 1.0 }
92
+ if word == "image" { vec[35] = 1.0 }
93
+ if word == "structured_output" { vec[36] = 1.0 }
94
+ if word == "tool_call" { vec[37] = 1.0 }
95
+ if word == "spawn" { vec[38] = 1.0 }
96
+ if word == "exec" { vec[39] = 1.0 }
97
+ if word == "time" { vec[40] = 1.0 }
98
+ if word == "range" { vec[41] = 1.0 }
99
+ if word == "push" { vec[42] = 1.0 }
100
+ if word == "pop" { vec[43] = 1.0 }
101
+ if word == "join" { vec[44] = 1.0 }
102
+ if word == "split" { vec[45] = 1.0 }
103
+ if word == "keys" { vec[46] = 1.0 }
104
+ if word == "values" { vec[47] = 1.0 }
105
+ if word == "array" { vec[48] = 1.0 }
106
+ w = w + 1
107
+ }
108
+ return vec
109
+ }
110
+
111
+ let db_files = list_dir("sesi-db")
112
+ let num_classes = len(db_files)
113
+
114
+ if num_classes == 0 {
115
+ print "⚠️ Database is empty! Run 'sesi indexer.sesi' first!"
116
+ } else {
117
+ print "✅ Found " + str(num_classes) + " knowledge documents in sesi-db!"
118
+
119
+ let database = []
120
+ let inputs = []
121
+ let targets = []
122
+
123
+ let i = 0
124
+ while i < num_classes {
125
+ let f = db_files[i]
126
+ let raw = read_file("sesi-db/" + f)
127
+ let parsed = from_json(raw)
128
+
129
+ // Combine summary and rules for training text
130
+ let doc_text = parsed["summary"] + " " + parsed["key_rules"]
131
+ let vec = vectorize(doc_text)
132
+ push(inputs, vec)
133
+
134
+ // Create one-hot targets dynamically
135
+ let t = []
136
+ let t_idx = 0
137
+ while t_idx < num_classes {
138
+ if t_idx == i {
139
+ push(t, 1.0)
140
+ } else {
141
+ push(t, 0.0)
142
+ }
143
+ t_idx = t_idx + 1
144
+ }
145
+ push(targets, t)
146
+ push(database, parsed)
147
+
148
+ i = i + 1
149
+ }
150
+
151
+ // 4. Dynamic Multi-Class Weights Matrix Initialization
152
+ let weights = []
153
+ let biases = []
154
+
155
+ let c = 0
156
+ while c < num_classes {
157
+ // Initialize random-seeded weights between -0.2 and 0.2
158
+ let w_row = []
159
+ let k = 0
160
+ while k < 49 {
161
+ let r_val = (random() * 0.4) - 0.2
162
+ push(w_row, r_val)
163
+ k = k + 1
164
+ }
165
+ push(weights, w_row)
166
+ push(biases, 0.0)
167
+ c = c + 1
168
+ }
169
+
170
+ // 5. Run dynamic multi-class gradient descent training loop (2,000 epochs)
171
+ let lr = 0.5
172
+ let epoch = 1
173
+ while epoch <= 2000 {
174
+ let c = 0
175
+ while c < num_classes {
176
+ let x = inputs[c]
177
+ let t = targets[c]
178
+
179
+ // Forward propagation (dynamic dot product)
180
+ let sum = 0.0
181
+ let w_row = weights[c]
182
+ let k = 0
183
+ while k < 49 {
184
+ sum = sum + (x[k] * w_row[k])
185
+ k = k + 1
186
+ }
187
+ let o = activate(sum + biases[c])
188
+
189
+ // Backpropagation delta
190
+ let delta = (t[c] - o) * derivative(o)
191
+
192
+ // Synaptic updates
193
+ k = 0
194
+ while k < 49 {
195
+ w_row[k] = w_row[k] + (lr * delta * x[k])
196
+ k = k + 1
197
+ }
198
+ biases[c] = biases[c] + (lr * delta)
199
+
200
+ c = c + 1
201
+ }
202
+ epoch = epoch + 1
203
+ }
204
+
205
+ let query_vec = vectorize(queryText)
206
+
207
+ // Forward propagation on user query across all dynamic classes
208
+ let outputs = []
209
+ let j = 0
210
+ while j < num_classes {
211
+ let sum = 0.0
212
+ let w_row = weights[j]
213
+ let k = 0
214
+ while k < 49 {
215
+ sum = sum + (query_vec[k] * w_row[k])
216
+ k = k + 1
217
+ }
218
+ let o = activate(sum + biases[j])
219
+ push(outputs, o)
220
+ j = j + 1
221
+ }
222
+
223
+ // Determine class index with highest score
224
+ let best_class = 0
225
+ let max_score = -1.0
226
+ let j = 0
227
+ while j < num_classes {
228
+ if outputs[j] > max_score {
229
+ max_score = outputs[j]
230
+ best_class = j
231
+ }
232
+ j = j + 1
233
+ }
234
+
235
+ // 7. Output Dynamic Recommendation with Confidence Thresholding
236
+ print "--------------------------------------------------"
237
+ print "🤖 SESI CO-PILOT RESPONDING:"
238
+ print "--------------------------------------------------"
239
+ if max_score < 0.40 {
240
+ print "🤔 Sesi's native synapses evaluated this query with low confidence: " + str(max_score)
241
+ print " It seems your question does not contain any Sesi keywords in our vocabulary!"
242
+ print " Please try asking about: 'print', 'str', 'files', 'json', 'model', 'image', or 'random'!"
243
+ } else {
244
+ let rec = database[best_class]
245
+ let docs_list = list_dir("docs")
246
+ let sesiDocs = ""
247
+ let d = 0
248
+ while d < len(docs_list) {
249
+ let f_name = docs_list[d]
250
+ let parts = split(f_name, ".")
251
+ let ext = parts[len(parts) - 1]
252
+
253
+ if ext == "md" {
254
+ let doc_content = read_file("docs/" + f_name)
255
+ sesiDocs = sesiDocs + "\n\n=== DOCUMENT: " + f_name + " ===\n" + doc_content
256
+ }
257
+ d = d + 1
258
+ }
259
+
260
+ // Auto-summarize if history exceeds ~3000 characters
261
+ if len(chatHistory) > 3000 {
262
+ summarizeHistory()
263
+ }
264
+
265
+ let ragPrompt = "Conversation History:\n" + chatHistory + "\n\nSesi Official Reference Documentation:\n" + sesiDocs + "\n\nUser Query: " + queryText + "\n\nMatched Context from Sesi DB:\nSummary: " + rec["summary"] + "\nKey Rules: " + rec["key_rules"] + "\n\nInstructions: Write a direct, beautiful, highly conversational response to the user's question using strictly the matched rules. Walk them through Sesi's syntax with direct examples. Be helpful and concise. Do not mention that you got this from a database—act as a supportive code copilot. Reference any relevant prior conversation context when applicable."
266
+
267
+ let generated_response = model("gemini-3.1-flash-lite") {"temperature": 0.3, "max_tokens": 200} {ragPrompt}
268
+
269
+ // Append this turn to conversational memory
270
+ chatHistory = chatHistory + "\nUser: " + queryText + "\nAssistant: " + generated_response
271
+
272
+ // Persist memory to disk for next session
273
+ try {
274
+ write_file("sesi-db/chat_history.txt", chatHistory)
275
+ } catch (e) {}
276
+
277
+ print "--------------------------------------------------"
278
+ print generated_response
279
+ print "--------------------------------------------------"
280
+ }}
package/main/start.sesi CHANGED
@@ -9,5 +9,5 @@ print "Math check:" a + b
9
9
 
10
10
  // Or jump straight into reasoning tasks
11
11
  let topic = "building a new programming language"
12
- let response = model("gemini-3.1-flash-lite") {"temperature": 0.3} {"Write a motivational 2-sentence intro about" topic}
12
+ let response = model("gemini-3.5-flash") {thinkingLevel: "minimal"} {"Write a motivational 2-sentence intro about" topic}
13
13
  print "Sesi:" response
@@ -0,0 +1,56 @@
1
+ PS C:\Users\owner\Documents\Sesi> sesi -h i need an image and metadata for my album release
2
+ ⟐ injected env (1) from .env · dotenvx@1.66.0
3
+ ==================================================
4
+ 🧠 WELCOME TO THE SESI CO-PILOT!
5
+ ==================================================
6
+ --------------------------------------------------
7
+ 🤖 SESI CO-PILOT RESPONDING:
8
+ --------------------------------------------------
9
+ Generating an image and extracting metadata for your album release is incredibly straightforward in Sesi. Because Sesi treats AI as a native language primitive, you don't need to worry about SDKs, manual JSON parsing, or complex schema boilerplate.
10
+
11
+ Here is how you can handle your album release pipeline in just a few lines of code:
12
+
13
+ ### 1. Generate Your Album Art
14
+ You can use the native `image` primitive to generate your cover art. Sesi handles the base64 encoding and file persistence automatically.
15
+
16
+ ```sesi
17
+ // Generate the image with specific configuration
18
+ let coverArt = image("gemini-3.1-flash-image-preview") {
19
+ "ratio": "1:1",
20
+ "size": "1K",
21
+ "temperature": 0.5
22
+ } {"A minimalist, atmospheric album cover for a synth-pop release"}
23
+
24
+ // Save it directly to disk
25
+ write_image("album_cover.png", coverArt)
26
+ print "Album art saved successfully!"
27
+ ```
28
+
29
+ ### 2. Extract Album Metadata
30
+ Instead of manually defining complex schemas or parsing JSON, you can use `structured_output` to get typed metadata directly from the model. Sesi dynamically builds the schema from your object literal and handles the hydration for you.
31
+
32
+ ```sesi
33
+ // Define your metadata needs and extract them in one go
34
+ let albumInfo = structured_output({
35
+ title: string,
36
+ artist: string,
37
+ genre: string,
38
+ releaseYear: number
39
+ })(model("gemini-3.1-flash-lite") {
40
+ "Extract album metadata from this description: 'The new 2026 synth-pop album Neon Nights by Luna Ray'"
41
+ })
42
+
43
+ // Access the data as native Sesi objects
44
+ print "Title:" albumInfo["title"]
45
+ print "Artist:" albumInfo["artist"]
46
+ print "Genre:" albumInfo["genre"]
47
+ print "Year:" albumInfo["releaseYear"]
48
+ ```
49
+
50
+ ### Why this is better:
51
+ * **No Boilerplate:** You didn't have to import a single SDK or manually define a JSON schema.
52
+ * **Native Types:** The `albumInfo` variable is immediately ready to use as a native Sesi object.
53
+ * **Resilient:** If the model's output is slightly malformed, Sesi's runtime handles the recovery and coercion for you automatically.
54
+
55
+ You’re all set to build out the rest of your release pipeline! Let me know if you need help adding logic to automatically upload these files or notify your team.
56
+ --------------------------------------------------
@@ -6,7 +6,7 @@
6
6
  // ==================================================
7
7
  // 💬 1. CHOOSE YOUR ADVANCED TECHNICAL QUERY HERE!
8
8
  // (Trained keywords: print, str, type, num, bool, json, convert, array, len, file, write, dir, exp, random)
9
- let queryText = "how do i convert json string to an array and print it?"
9
+ let queryText = "how do i convert integer to string?"
10
10
  // ==================================================
11
11
 
12
12
  print "=================================================="