@nikcli-ai/sdk 1.56.0 → 1.58.0

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.
@@ -126,6 +126,322 @@ export class Project extends HeyApiClient {
126
126
  });
127
127
  }
128
128
  }
129
+ export class Loop extends HeyApiClient {
130
+ /**
131
+ * List loops
132
+ *
133
+ * List all loops defined for the current project, with live runtime status.
134
+ */
135
+ list(parameters, options) {
136
+ const params = buildClientParams([parameters], [
137
+ {
138
+ args: [
139
+ { in: "query", key: "directory" },
140
+ { in: "query", key: "workspace" },
141
+ ],
142
+ },
143
+ ]);
144
+ return (options?.client ?? this.client).get({
145
+ url: "/loop",
146
+ ...options,
147
+ ...params,
148
+ });
149
+ }
150
+ /**
151
+ * Create or update a loop
152
+ *
153
+ * Persist a loop definition. Generates the id and createdAt for new loops.
154
+ */
155
+ upsert(parameters, options) {
156
+ const params = buildClientParams([parameters], [
157
+ {
158
+ args: [
159
+ { in: "query", key: "directory" },
160
+ { in: "query", key: "workspace" },
161
+ { in: "body", key: "name" },
162
+ { in: "body", key: "stages" },
163
+ { in: "body", key: "trigger" },
164
+ { in: "body", key: "maxRuns" },
165
+ { in: "body", key: "enabled" },
166
+ ],
167
+ },
168
+ ]);
169
+ return (options?.client ?? this.client).put({
170
+ url: "/loop",
171
+ ...options,
172
+ ...params,
173
+ headers: {
174
+ "Content-Type": "application/json",
175
+ ...options?.headers,
176
+ ...params.headers,
177
+ },
178
+ });
179
+ }
180
+ /**
181
+ * List loop templates
182
+ *
183
+ * Built-in starter pipelines the user can instantiate from the wizard.
184
+ */
185
+ templates(parameters, options) {
186
+ const params = buildClientParams([parameters], [
187
+ {
188
+ args: [
189
+ { in: "query", key: "directory" },
190
+ { in: "query", key: "workspace" },
191
+ ],
192
+ },
193
+ ]);
194
+ return (options?.client ?? this.client).get({
195
+ url: "/loop/templates",
196
+ ...options,
197
+ ...params,
198
+ });
199
+ }
200
+ /**
201
+ * Generate a loop from a description
202
+ *
203
+ * Send a natural-language description to an AI and parse the response back into a fully-formed loop definition. The response is a draft — the user still confirms before persistence.
204
+ */
205
+ generate(parameters, options) {
206
+ const params = buildClientParams([parameters], [
207
+ {
208
+ args: [
209
+ { in: "query", key: "directory" },
210
+ { in: "query", key: "workspace" },
211
+ { in: "body", key: "description" },
212
+ { in: "body", key: "model" },
213
+ { in: "body", key: "agent" },
214
+ ],
215
+ },
216
+ ]);
217
+ return (options?.client ?? this.client).post({
218
+ url: "/loop/generate",
219
+ ...options,
220
+ ...params,
221
+ headers: {
222
+ "Content-Type": "application/json",
223
+ ...options?.headers,
224
+ ...params.headers,
225
+ },
226
+ });
227
+ }
228
+ /**
229
+ * Delete a loop
230
+ *
231
+ * Remove a loop and its run history. Cancels any in-flight run, disarms its scheduler entry, and cascade-deletes run records.
232
+ */
233
+ delete(parameters, options) {
234
+ const params = buildClientParams([parameters], [
235
+ {
236
+ args: [
237
+ { in: "path", key: "id" },
238
+ { in: "query", key: "directory" },
239
+ { in: "query", key: "workspace" },
240
+ ],
241
+ },
242
+ ]);
243
+ return (options?.client ?? this.client).delete({
244
+ url: "/loop/{id}",
245
+ ...options,
246
+ ...params,
247
+ });
248
+ }
249
+ /**
250
+ * Get a loop
251
+ *
252
+ * Fetch a single loop definition by id, including its live runtime status.
253
+ */
254
+ get(parameters, options) {
255
+ const params = buildClientParams([parameters], [
256
+ {
257
+ args: [
258
+ { in: "path", key: "id" },
259
+ { in: "query", key: "directory" },
260
+ { in: "query", key: "workspace" },
261
+ ],
262
+ },
263
+ ]);
264
+ return (options?.client ?? this.client).get({
265
+ url: "/loop/{id}",
266
+ ...options,
267
+ ...params,
268
+ });
269
+ }
270
+ /**
271
+ * Update a loop
272
+ *
273
+ * Replace a loop definition. Re-arms its scheduler entry if trigger/enabled changed.
274
+ */
275
+ update(parameters, options) {
276
+ const params = buildClientParams([parameters], [
277
+ {
278
+ args: [
279
+ {
280
+ in: "path",
281
+ key: "path_id",
282
+ map: "id",
283
+ },
284
+ { in: "query", key: "directory" },
285
+ { in: "query", key: "workspace" },
286
+ {
287
+ in: "body",
288
+ key: "body_id",
289
+ map: "id",
290
+ },
291
+ { in: "body", key: "name" },
292
+ { in: "body", key: "stages" },
293
+ { in: "body", key: "trigger" },
294
+ { in: "body", key: "maxRuns" },
295
+ { in: "body", key: "enabled" },
296
+ { in: "body", key: "createdAt" },
297
+ ],
298
+ },
299
+ ]);
300
+ return (options?.client ?? this.client).post({
301
+ url: "/loop/{id}",
302
+ ...options,
303
+ ...params,
304
+ headers: {
305
+ "Content-Type": "application/json",
306
+ ...options?.headers,
307
+ ...params.headers,
308
+ },
309
+ });
310
+ }
311
+ /**
312
+ * Enable or disable a loop
313
+ *
314
+ * Set the loop's enabled flag. Disarmed timers are removed when disabling.
315
+ */
316
+ toggle(parameters, options) {
317
+ const params = buildClientParams([parameters], [
318
+ {
319
+ args: [
320
+ { in: "path", key: "id" },
321
+ { in: "query", key: "directory" },
322
+ { in: "query", key: "workspace" },
323
+ { in: "body", key: "enabled" },
324
+ ],
325
+ },
326
+ ]);
327
+ return (options?.client ?? this.client).post({
328
+ url: "/loop/{id}/toggle",
329
+ ...options,
330
+ ...params,
331
+ headers: {
332
+ "Content-Type": "application/json",
333
+ ...options?.headers,
334
+ ...params.headers,
335
+ },
336
+ });
337
+ }
338
+ /**
339
+ * Run a loop once
340
+ *
341
+ * Trigger an immediate run of the loop, ignoring its schedule.
342
+ */
343
+ run(parameters, options) {
344
+ const params = buildClientParams([parameters], [
345
+ {
346
+ args: [
347
+ { in: "path", key: "id" },
348
+ { in: "query", key: "directory" },
349
+ { in: "query", key: "workspace" },
350
+ ],
351
+ },
352
+ ]);
353
+ return (options?.client ?? this.client).post({
354
+ url: "/loop/{id}/run",
355
+ ...options,
356
+ ...params,
357
+ });
358
+ }
359
+ /**
360
+ * Pause a loop
361
+ *
362
+ * Set runtime status to paused; the scheduler entry is removed until resumed.
363
+ */
364
+ pause(parameters, options) {
365
+ const params = buildClientParams([parameters], [
366
+ {
367
+ args: [
368
+ { in: "path", key: "id" },
369
+ { in: "query", key: "directory" },
370
+ { in: "query", key: "workspace" },
371
+ ],
372
+ },
373
+ ]);
374
+ return (options?.client ?? this.client).post({
375
+ url: "/loop/{id}/pause",
376
+ ...options,
377
+ ...params,
378
+ });
379
+ }
380
+ /**
381
+ * Resume a loop
382
+ *
383
+ * Clear the paused state and re-arm the scheduler entry if the loop has an interval trigger.
384
+ */
385
+ resume(parameters, options) {
386
+ const params = buildClientParams([parameters], [
387
+ {
388
+ args: [
389
+ { in: "path", key: "id" },
390
+ { in: "query", key: "directory" },
391
+ { in: "query", key: "workspace" },
392
+ ],
393
+ },
394
+ ]);
395
+ return (options?.client ?? this.client).post({
396
+ url: "/loop/{id}/resume",
397
+ ...options,
398
+ ...params,
399
+ });
400
+ }
401
+ /**
402
+ * List a loop's runs
403
+ *
404
+ * Most-recent-first run history for a loop, capped server-side.
405
+ */
406
+ runs(parameters, options) {
407
+ const params = buildClientParams([parameters], [
408
+ {
409
+ args: [
410
+ { in: "path", key: "id" },
411
+ { in: "query", key: "directory" },
412
+ { in: "query", key: "workspace" },
413
+ { in: "query", key: "limit" },
414
+ ],
415
+ },
416
+ ]);
417
+ return (options?.client ?? this.client).get({
418
+ url: "/loop/{id}/runs",
419
+ ...options,
420
+ ...params,
421
+ });
422
+ }
423
+ /**
424
+ * List recent loop runs across all loops
425
+ *
426
+ * Most-recent-first runs from every loop in the project, useful for a global activity view.
427
+ */
428
+ recentRuns(parameters, options) {
429
+ const params = buildClientParams([parameters], [
430
+ {
431
+ args: [
432
+ { in: "query", key: "directory" },
433
+ { in: "query", key: "workspace" },
434
+ { in: "query", key: "limit" },
435
+ ],
436
+ },
437
+ ]);
438
+ return (options?.client ?? this.client).get({
439
+ url: "/loop/runs/recent",
440
+ ...options,
441
+ ...params,
442
+ });
443
+ }
444
+ }
129
445
  export class Pty extends HeyApiClient {
130
446
  /**
131
447
  * List PTY sessions
@@ -3323,9 +3639,332 @@ export class Git extends HeyApiClient {
3323
3639
  });
3324
3640
  }
3325
3641
  }
3326
- export class Routine extends HeyApiClient {
3642
+ export class Runs extends HeyApiClient {
3327
3643
  /**
3328
- * List routines
3644
+ * List recent loop runs for mobile
3645
+ *
3646
+ * List recent runs across all loops in the current project.
3647
+ */
3648
+ recent(parameters, options) {
3649
+ const params = buildClientParams([parameters], [
3650
+ {
3651
+ args: [
3652
+ { in: "query", key: "directory" },
3653
+ { in: "query", key: "workspace" },
3654
+ { in: "query", key: "limit" },
3655
+ ],
3656
+ },
3657
+ ]);
3658
+ return (options?.client ?? this.client).get({
3659
+ url: "/mobile/loops/runs/recent",
3660
+ ...options,
3661
+ ...params,
3662
+ });
3663
+ }
3664
+ }
3665
+ export class Loop2 extends HeyApiClient {
3666
+ /**
3667
+ * List loops for mobile
3668
+ *
3669
+ * List all autonomous loops for the current project with their live runtime state.
3670
+ */
3671
+ list(parameters, options) {
3672
+ const params = buildClientParams([parameters], [
3673
+ {
3674
+ args: [
3675
+ { in: "query", key: "directory" },
3676
+ { in: "query", key: "workspace" },
3677
+ ],
3678
+ },
3679
+ ]);
3680
+ return (options?.client ?? this.client).get({
3681
+ url: "/mobile/loops",
3682
+ ...options,
3683
+ ...params,
3684
+ });
3685
+ }
3686
+ /**
3687
+ * Create loop for mobile
3688
+ *
3689
+ * Create and arm a new autonomous loop.
3690
+ */
3691
+ create(parameters, options) {
3692
+ const params = buildClientParams([parameters], [
3693
+ {
3694
+ args: [
3695
+ { in: "query", key: "directory" },
3696
+ { in: "query", key: "workspace" },
3697
+ { key: "mobileLoopWriteInput", map: "body" },
3698
+ ],
3699
+ },
3700
+ ]);
3701
+ return (options?.client ?? this.client).post({
3702
+ url: "/mobile/loops",
3703
+ ...options,
3704
+ ...params,
3705
+ headers: {
3706
+ "Content-Type": "application/json",
3707
+ ...options?.headers,
3708
+ ...params.headers,
3709
+ },
3710
+ });
3711
+ }
3712
+ /**
3713
+ * List loop templates for mobile
3714
+ *
3715
+ * List built-in loop starters that can be applied in the mobile loop editor.
3716
+ */
3717
+ templates(parameters, options) {
3718
+ const params = buildClientParams([parameters], [
3719
+ {
3720
+ args: [
3721
+ { in: "query", key: "directory" },
3722
+ { in: "query", key: "workspace" },
3723
+ ],
3724
+ },
3725
+ ]);
3726
+ return (options?.client ?? this.client).get({
3727
+ url: "/mobile/loops/templates",
3728
+ ...options,
3729
+ ...params,
3730
+ });
3731
+ }
3732
+ /**
3733
+ * Generate a loop for mobile
3734
+ *
3735
+ * Generate a loop draft from a natural-language description.
3736
+ */
3737
+ generate(parameters, options) {
3738
+ const params = buildClientParams([parameters], [
3739
+ {
3740
+ args: [
3741
+ { in: "query", key: "directory" },
3742
+ { in: "query", key: "workspace" },
3743
+ { key: "mobileLoopGenerateInput", map: "body" },
3744
+ ],
3745
+ },
3746
+ ]);
3747
+ return (options?.client ?? this.client).post({
3748
+ url: "/mobile/loops/generate",
3749
+ ...options,
3750
+ ...params,
3751
+ headers: {
3752
+ "Content-Type": "application/json",
3753
+ ...options?.headers,
3754
+ ...params.headers,
3755
+ },
3756
+ });
3757
+ }
3758
+ /**
3759
+ * Delete loop for mobile
3760
+ *
3761
+ * Cancel, disarm, and delete a loop and its run history.
3762
+ */
3763
+ delete(parameters, options) {
3764
+ const params = buildClientParams([parameters], [
3765
+ {
3766
+ args: [
3767
+ { in: "path", key: "id" },
3768
+ { in: "query", key: "directory" },
3769
+ { in: "query", key: "workspace" },
3770
+ ],
3771
+ },
3772
+ ]);
3773
+ return (options?.client ?? this.client).delete({
3774
+ url: "/mobile/loops/{id}",
3775
+ ...options,
3776
+ ...params,
3777
+ });
3778
+ }
3779
+ /**
3780
+ * Get loop for mobile
3781
+ *
3782
+ * Get a loop definition and its live runtime.
3783
+ */
3784
+ get(parameters, options) {
3785
+ const params = buildClientParams([parameters], [
3786
+ {
3787
+ args: [
3788
+ { in: "path", key: "id" },
3789
+ { in: "query", key: "directory" },
3790
+ { in: "query", key: "workspace" },
3791
+ ],
3792
+ },
3793
+ ]);
3794
+ return (options?.client ?? this.client).get({
3795
+ url: "/mobile/loops/{id}",
3796
+ ...options,
3797
+ ...params,
3798
+ });
3799
+ }
3800
+ /**
3801
+ * Update loop for mobile
3802
+ *
3803
+ * Replace a loop definition and synchronize its schedule.
3804
+ */
3805
+ update(parameters, options) {
3806
+ const params = buildClientParams([parameters], [
3807
+ {
3808
+ args: [
3809
+ { in: "path", key: "id" },
3810
+ { in: "query", key: "directory" },
3811
+ { in: "query", key: "workspace" },
3812
+ { key: "mobileLoopWriteInput", map: "body" },
3813
+ ],
3814
+ },
3815
+ ]);
3816
+ return (options?.client ?? this.client).patch({
3817
+ url: "/mobile/loops/{id}",
3818
+ ...options,
3819
+ ...params,
3820
+ headers: {
3821
+ "Content-Type": "application/json",
3822
+ ...options?.headers,
3823
+ ...params.headers,
3824
+ },
3825
+ });
3826
+ }
3827
+ /**
3828
+ * List loop runs for mobile
3829
+ *
3830
+ * List the most recent runs for one loop.
3831
+ */
3832
+ runs(parameters, options) {
3833
+ const params = buildClientParams([parameters], [
3834
+ {
3835
+ args: [
3836
+ { in: "path", key: "id" },
3837
+ { in: "query", key: "directory" },
3838
+ { in: "query", key: "workspace" },
3839
+ { in: "query", key: "limit" },
3840
+ ],
3841
+ },
3842
+ ]);
3843
+ return (options?.client ?? this.client).get({
3844
+ url: "/mobile/loops/{id}/runs",
3845
+ ...options,
3846
+ ...params,
3847
+ });
3848
+ }
3849
+ /**
3850
+ * Run loop from mobile
3851
+ *
3852
+ * Trigger an immediate run of a loop.
3853
+ */
3854
+ run(parameters, options) {
3855
+ const params = buildClientParams([parameters], [
3856
+ {
3857
+ args: [
3858
+ { in: "path", key: "id" },
3859
+ { in: "query", key: "directory" },
3860
+ { in: "query", key: "workspace" },
3861
+ ],
3862
+ },
3863
+ ]);
3864
+ return (options?.client ?? this.client).post({
3865
+ url: "/mobile/loops/{id}/run",
3866
+ ...options,
3867
+ ...params,
3868
+ });
3869
+ }
3870
+ /**
3871
+ * Abort loop from mobile
3872
+ *
3873
+ * Cancel the currently running iteration of a loop.
3874
+ */
3875
+ abort(parameters, options) {
3876
+ const params = buildClientParams([parameters], [
3877
+ {
3878
+ args: [
3879
+ { in: "path", key: "id" },
3880
+ { in: "query", key: "directory" },
3881
+ { in: "query", key: "workspace" },
3882
+ ],
3883
+ },
3884
+ ]);
3885
+ return (options?.client ?? this.client).post({
3886
+ url: "/mobile/loops/{id}/abort",
3887
+ ...options,
3888
+ ...params,
3889
+ });
3890
+ }
3891
+ /**
3892
+ * Enable or disable loop from mobile
3893
+ *
3894
+ * Enable or disable a loop and synchronize its schedule.
3895
+ */
3896
+ toggle(parameters, options) {
3897
+ const params = buildClientParams([parameters], [
3898
+ {
3899
+ args: [
3900
+ { in: "path", key: "id" },
3901
+ { in: "query", key: "directory" },
3902
+ { in: "query", key: "workspace" },
3903
+ { in: "body", key: "enabled" },
3904
+ ],
3905
+ },
3906
+ ]);
3907
+ return (options?.client ?? this.client).post({
3908
+ url: "/mobile/loops/{id}/toggle",
3909
+ ...options,
3910
+ ...params,
3911
+ headers: {
3912
+ "Content-Type": "application/json",
3913
+ ...options?.headers,
3914
+ ...params.headers,
3915
+ },
3916
+ });
3917
+ }
3918
+ /**
3919
+ * Pause loop from mobile
3920
+ *
3921
+ * Pause a loop's interval scheduling.
3922
+ */
3923
+ pause(parameters, options) {
3924
+ const params = buildClientParams([parameters], [
3925
+ {
3926
+ args: [
3927
+ { in: "path", key: "id" },
3928
+ { in: "query", key: "directory" },
3929
+ { in: "query", key: "workspace" },
3930
+ ],
3931
+ },
3932
+ ]);
3933
+ return (options?.client ?? this.client).post({
3934
+ url: "/mobile/loops/{id}/pause",
3935
+ ...options,
3936
+ ...params,
3937
+ });
3938
+ }
3939
+ /**
3940
+ * Resume loop from mobile
3941
+ *
3942
+ * Resume a paused loop and re-arm its interval schedule.
3943
+ */
3944
+ resume(parameters, options) {
3945
+ const params = buildClientParams([parameters], [
3946
+ {
3947
+ args: [
3948
+ { in: "path", key: "id" },
3949
+ { in: "query", key: "directory" },
3950
+ { in: "query", key: "workspace" },
3951
+ ],
3952
+ },
3953
+ ]);
3954
+ return (options?.client ?? this.client).post({
3955
+ url: "/mobile/loops/{id}/resume",
3956
+ ...options,
3957
+ ...params,
3958
+ });
3959
+ }
3960
+ _runs;
3961
+ get runs2() {
3962
+ return (this._runs ??= new Runs({ client: this.client }));
3963
+ }
3964
+ }
3965
+ export class Routine extends HeyApiClient {
3966
+ /**
3967
+ * List routines
3329
3968
  *
3330
3969
  * List all saved routines for the current project.
3331
3970
  */
@@ -3597,6 +4236,10 @@ export class Mobile extends HeyApiClient {
3597
4236
  get git() {
3598
4237
  return (this._git ??= new Git({ client: this.client }));
3599
4238
  }
4239
+ _loop;
4240
+ get loop() {
4241
+ return (this._loop ??= new Loop2({ client: this.client }));
4242
+ }
3600
4243
  _routine;
3601
4244
  get routine() {
3602
4245
  return (this._routine ??= new Routine({ client: this.client }));
@@ -5090,6 +5733,10 @@ export class NikcliClient extends HeyApiClient {
5090
5733
  get project() {
5091
5734
  return (this._project ??= new Project({ client: this.client }));
5092
5735
  }
5736
+ _loop;
5737
+ get loop() {
5738
+ return (this._loop ??= new Loop({ client: this.client }));
5739
+ }
5093
5740
  _pty;
5094
5741
  get pty() {
5095
5742
  return (this._pty ??= new Pty({ client: this.client }));