@nikcli-ai/sdk 1.74.0 → 1.76.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.
@@ -446,6 +446,332 @@ export class Loop extends HeyApiClient {
446
446
  });
447
447
  }
448
448
  }
449
+ export class Feature extends HeyApiClient {
450
+ /**
451
+ * Mutate a single feature (skip / mark-done / reset / add deps)
452
+ *
453
+ * Power-user lever: re-plan mid-flight by skipping a stuck feature, marking it done to advance, or resetting it to retry. Status transitions are coerced to the legal subset.
454
+ */
455
+ mutate(parameters, options) {
456
+ const params = buildClientParams([parameters], [
457
+ {
458
+ args: [
459
+ { in: "path", key: "id" },
460
+ { in: "path", key: "featureID" },
461
+ { in: "query", key: "directory" },
462
+ { in: "query", key: "workspace" },
463
+ { in: "body", key: "status" },
464
+ { in: "body", key: "error" },
465
+ { in: "body", key: "appendDependsOn" },
466
+ ],
467
+ },
468
+ ]);
469
+ return (options?.client ?? this.client).post({
470
+ url: "/mission/{id}/feature/{featureID}",
471
+ ...options,
472
+ ...params,
473
+ headers: {
474
+ "Content-Type": "application/json",
475
+ ...options?.headers,
476
+ ...params.headers,
477
+ },
478
+ });
479
+ }
480
+ }
481
+ export class Mission extends HeyApiClient {
482
+ /**
483
+ * List missions
484
+ *
485
+ * List all missions defined for the current project, with live runtime status.
486
+ */
487
+ list(parameters, options) {
488
+ const params = buildClientParams([parameters], [
489
+ {
490
+ args: [
491
+ { in: "query", key: "directory" },
492
+ { in: "query", key: "workspace" },
493
+ ],
494
+ },
495
+ ]);
496
+ return (options?.client ?? this.client).get({
497
+ url: "/mission",
498
+ ...options,
499
+ ...params,
500
+ });
501
+ }
502
+ /**
503
+ * Create or update a mission
504
+ *
505
+ * Persist a mission definition. Generates the id, createdAt, and default status for new missions.
506
+ */
507
+ upsert(parameters, options) {
508
+ const params = buildClientParams([parameters], [
509
+ {
510
+ args: [
511
+ { in: "query", key: "directory" },
512
+ { in: "query", key: "workspace" },
513
+ { in: "body", key: "name" },
514
+ { in: "body", key: "brief" },
515
+ { in: "body", key: "milestones" },
516
+ { in: "body", key: "models" },
517
+ { in: "body", key: "timeoutMs" },
518
+ ],
519
+ },
520
+ ]);
521
+ return (options?.client ?? this.client).put({
522
+ url: "/mission",
523
+ ...options,
524
+ ...params,
525
+ headers: {
526
+ "Content-Type": "application/json",
527
+ ...options?.headers,
528
+ ...params.headers,
529
+ },
530
+ });
531
+ }
532
+ /**
533
+ * List mission templates
534
+ *
535
+ * Built-in starter briefs the user can instantiate from the wizard.
536
+ */
537
+ templates(parameters, options) {
538
+ const params = buildClientParams([parameters], [
539
+ {
540
+ args: [
541
+ { in: "query", key: "directory" },
542
+ { in: "query", key: "workspace" },
543
+ ],
544
+ },
545
+ ]);
546
+ return (options?.client ?? this.client).get({
547
+ url: "/mission/templates",
548
+ ...options,
549
+ ...params,
550
+ });
551
+ }
552
+ /**
553
+ * Generate a mission plan from a description
554
+ *
555
+ * Send a natural-language description to an AI and parse the response back into a fully-formed mission definition (brief + milestones + features). The response is a draft — the user still confirms before persistence.
556
+ */
557
+ generate(parameters, options) {
558
+ const params = buildClientParams([parameters], [
559
+ {
560
+ args: [
561
+ { in: "query", key: "directory" },
562
+ { in: "query", key: "workspace" },
563
+ { in: "body", key: "description" },
564
+ { in: "body", key: "model" },
565
+ { in: "body", key: "agent" },
566
+ ],
567
+ },
568
+ ]);
569
+ return (options?.client ?? this.client).post({
570
+ url: "/mission/generate",
571
+ ...options,
572
+ ...params,
573
+ headers: {
574
+ "Content-Type": "application/json",
575
+ ...options?.headers,
576
+ ...params.headers,
577
+ },
578
+ });
579
+ }
580
+ /**
581
+ * Delete a mission
582
+ *
583
+ * Remove a mission and its execution history. Cancels any in-flight orchestration first.
584
+ */
585
+ delete(parameters, options) {
586
+ const params = buildClientParams([parameters], [
587
+ {
588
+ args: [
589
+ { in: "path", key: "id" },
590
+ { in: "query", key: "directory" },
591
+ { in: "query", key: "workspace" },
592
+ ],
593
+ },
594
+ ]);
595
+ return (options?.client ?? this.client).delete({
596
+ url: "/mission/{id}",
597
+ ...options,
598
+ ...params,
599
+ });
600
+ }
601
+ /**
602
+ * Get a mission
603
+ *
604
+ * Fetch a single mission definition by id, including its live runtime status.
605
+ */
606
+ get(parameters, options) {
607
+ const params = buildClientParams([parameters], [
608
+ {
609
+ args: [
610
+ { in: "path", key: "id" },
611
+ { in: "query", key: "directory" },
612
+ { in: "query", key: "workspace" },
613
+ ],
614
+ },
615
+ ]);
616
+ return (options?.client ?? this.client).get({
617
+ url: "/mission/{id}",
618
+ ...options,
619
+ ...params,
620
+ });
621
+ }
622
+ /**
623
+ * Update a mission
624
+ *
625
+ * Replace a mission definition. Status field is preserved unless the body changes it explicitly (so updates from the wizard don't accidentally restart orchestration).
626
+ */
627
+ update(parameters, options) {
628
+ const params = buildClientParams([parameters], [
629
+ {
630
+ args: [
631
+ {
632
+ in: "path",
633
+ key: "path_id",
634
+ map: "id",
635
+ },
636
+ { in: "query", key: "directory" },
637
+ { in: "query", key: "workspace" },
638
+ {
639
+ in: "body",
640
+ key: "body_id",
641
+ map: "id",
642
+ },
643
+ { in: "body", key: "name" },
644
+ { in: "body", key: "brief" },
645
+ { in: "body", key: "milestones" },
646
+ { in: "body", key: "models" },
647
+ { in: "body", key: "timeoutMs" },
648
+ { in: "body", key: "status" },
649
+ { in: "body", key: "createdAt" },
650
+ ],
651
+ },
652
+ ]);
653
+ return (options?.client ?? this.client).post({
654
+ url: "/mission/{id}",
655
+ ...options,
656
+ ...params,
657
+ headers: {
658
+ "Content-Type": "application/json",
659
+ ...options?.headers,
660
+ ...params.headers,
661
+ },
662
+ });
663
+ }
664
+ /**
665
+ * Start (or resume) orchestration of a mission
666
+ *
667
+ * Drive the mission forward: pick the current milestone, run its ready features, validate, then advance. Resumes a paused or frozen mission; returns immediately if already in flight.
668
+ */
669
+ start(parameters, options) {
670
+ const params = buildClientParams([parameters], [
671
+ {
672
+ args: [
673
+ { in: "path", key: "id" },
674
+ { in: "query", key: "directory" },
675
+ { in: "query", key: "workspace" },
676
+ ],
677
+ },
678
+ ]);
679
+ return (options?.client ?? this.client).post({
680
+ url: "/mission/{id}/start",
681
+ ...options,
682
+ ...params,
683
+ });
684
+ }
685
+ /**
686
+ * Pause a mission
687
+ *
688
+ * Persist the paused flag and abort the current worker. Resume with /:id/start.
689
+ */
690
+ pause(parameters, options) {
691
+ const params = buildClientParams([parameters], [
692
+ {
693
+ args: [
694
+ { in: "path", key: "id" },
695
+ { in: "query", key: "directory" },
696
+ { in: "query", key: "workspace" },
697
+ ],
698
+ },
699
+ ]);
700
+ return (options?.client ?? this.client).post({
701
+ url: "/mission/{id}/pause",
702
+ ...options,
703
+ ...params,
704
+ });
705
+ }
706
+ /**
707
+ * Cancel and freeze a mission
708
+ *
709
+ * Freeze the mission for reassessment. The orchestrator aborts, the persisted status becomes 'frozen', and the user can edit the plan before resuming.
710
+ */
711
+ cancel(parameters, options) {
712
+ const params = buildClientParams([parameters], [
713
+ {
714
+ args: [
715
+ { in: "path", key: "id" },
716
+ { in: "query", key: "directory" },
717
+ { in: "query", key: "workspace" },
718
+ ],
719
+ },
720
+ ]);
721
+ return (options?.client ?? this.client).post({
722
+ url: "/mission/{id}/cancel",
723
+ ...options,
724
+ ...params,
725
+ });
726
+ }
727
+ /**
728
+ * List a mission's execution history
729
+ *
730
+ * Most-recent-first feature/validation execution records for a mission, capped server-side.
731
+ */
732
+ execs(parameters, options) {
733
+ const params = buildClientParams([parameters], [
734
+ {
735
+ args: [
736
+ { in: "path", key: "id" },
737
+ { in: "query", key: "directory" },
738
+ { in: "query", key: "workspace" },
739
+ { in: "query", key: "limit" },
740
+ ],
741
+ },
742
+ ]);
743
+ return (options?.client ?? this.client).get({
744
+ url: "/mission/{id}/execs",
745
+ ...options,
746
+ ...params,
747
+ });
748
+ }
749
+ /**
750
+ * List recent mission executions across all missions
751
+ *
752
+ * Most-recent-first execution records from every mission in the project.
753
+ */
754
+ recentExecs(parameters, options) {
755
+ const params = buildClientParams([parameters], [
756
+ {
757
+ args: [
758
+ { in: "query", key: "directory" },
759
+ { in: "query", key: "workspace" },
760
+ { in: "query", key: "limit" },
761
+ ],
762
+ },
763
+ ]);
764
+ return (options?.client ?? this.client).get({
765
+ url: "/mission/execs/recent",
766
+ ...options,
767
+ ...params,
768
+ });
769
+ }
770
+ _feature;
771
+ get feature() {
772
+ return (this._feature ??= new Feature({ client: this.client }));
773
+ }
774
+ }
449
775
  export class Pty extends HeyApiClient {
450
776
  /**
451
777
  * List PTY sessions
@@ -4219,6 +4545,149 @@ export class Routine extends HeyApiClient {
4219
4545
  });
4220
4546
  }
4221
4547
  }
4548
+ export class Pty2 extends HeyApiClient {
4549
+ /**
4550
+ * List PTY sessions for mobile
4551
+ *
4552
+ * Get a list of all active pseudo-terminal (PTY) sessions managed by Nikcli.
4553
+ */
4554
+ list(parameters, options) {
4555
+ const params = buildClientParams([parameters], [
4556
+ {
4557
+ args: [
4558
+ { in: "query", key: "directory" },
4559
+ { in: "query", key: "workspace" },
4560
+ ],
4561
+ },
4562
+ ]);
4563
+ return (options?.client ?? this.client).get({
4564
+ url: "/mobile/pty",
4565
+ ...options,
4566
+ ...params,
4567
+ });
4568
+ }
4569
+ /**
4570
+ * Create PTY session for mobile
4571
+ *
4572
+ * Create a new pseudo-terminal (PTY) session for running shell commands and processes.
4573
+ */
4574
+ create(parameters, options) {
4575
+ const params = buildClientParams([parameters], [
4576
+ {
4577
+ args: [
4578
+ { in: "query", key: "directory" },
4579
+ { in: "query", key: "workspace" },
4580
+ { in: "body", key: "command" },
4581
+ { in: "body", key: "args" },
4582
+ { in: "body", key: "cwd" },
4583
+ { in: "body", key: "title" },
4584
+ { in: "body", key: "env" },
4585
+ ],
4586
+ },
4587
+ ]);
4588
+ return (options?.client ?? this.client).post({
4589
+ url: "/mobile/pty",
4590
+ ...options,
4591
+ ...params,
4592
+ headers: {
4593
+ "Content-Type": "application/json",
4594
+ ...options?.headers,
4595
+ ...params.headers,
4596
+ },
4597
+ });
4598
+ }
4599
+ /**
4600
+ * Remove PTY session for mobile
4601
+ *
4602
+ * Remove and terminate a specific pseudo-terminal (PTY) session.
4603
+ */
4604
+ remove(parameters, options) {
4605
+ const params = buildClientParams([parameters], [
4606
+ {
4607
+ args: [
4608
+ { in: "path", key: "ptyID" },
4609
+ { in: "query", key: "directory" },
4610
+ { in: "query", key: "workspace" },
4611
+ ],
4612
+ },
4613
+ ]);
4614
+ return (options?.client ?? this.client).delete({
4615
+ url: "/mobile/pty/{ptyID}",
4616
+ ...options,
4617
+ ...params,
4618
+ });
4619
+ }
4620
+ /**
4621
+ * Get PTY session for mobile
4622
+ *
4623
+ * Retrieve detailed information about a specific pseudo-terminal (PTY) session.
4624
+ */
4625
+ get(parameters, options) {
4626
+ const params = buildClientParams([parameters], [
4627
+ {
4628
+ args: [
4629
+ { in: "path", key: "ptyID" },
4630
+ { in: "query", key: "directory" },
4631
+ { in: "query", key: "workspace" },
4632
+ ],
4633
+ },
4634
+ ]);
4635
+ return (options?.client ?? this.client).get({
4636
+ url: "/mobile/pty/{ptyID}",
4637
+ ...options,
4638
+ ...params,
4639
+ });
4640
+ }
4641
+ /**
4642
+ * Update PTY session for mobile
4643
+ *
4644
+ * Update properties of an existing pseudo-terminal (PTY) session.
4645
+ */
4646
+ update(parameters, options) {
4647
+ const params = buildClientParams([parameters], [
4648
+ {
4649
+ args: [
4650
+ { in: "path", key: "ptyID" },
4651
+ { in: "query", key: "directory" },
4652
+ { in: "query", key: "workspace" },
4653
+ { in: "body", key: "title" },
4654
+ { in: "body", key: "size" },
4655
+ ],
4656
+ },
4657
+ ]);
4658
+ return (options?.client ?? this.client).put({
4659
+ url: "/mobile/pty/{ptyID}",
4660
+ ...options,
4661
+ ...params,
4662
+ headers: {
4663
+ "Content-Type": "application/json",
4664
+ ...options?.headers,
4665
+ ...params.headers,
4666
+ },
4667
+ });
4668
+ }
4669
+ /**
4670
+ * Connect to PTY session for mobile
4671
+ *
4672
+ * Establish a WebSocket connection to interact with a pseudo-terminal (PTY) session in real-time.
4673
+ */
4674
+ connect(parameters, options) {
4675
+ const params = buildClientParams([parameters], [
4676
+ {
4677
+ args: [
4678
+ { in: "path", key: "ptyID" },
4679
+ { in: "query", key: "directory" },
4680
+ { in: "query", key: "workspace" },
4681
+ ],
4682
+ },
4683
+ ]);
4684
+ return (options?.client ?? this.client).get({
4685
+ url: "/mobile/pty/{ptyID}/connect",
4686
+ ...options,
4687
+ ...params,
4688
+ });
4689
+ }
4690
+ }
4222
4691
  export class Mobile extends HeyApiClient {
4223
4692
  /**
4224
4693
  * Get mobile bootstrap payload
@@ -4288,6 +4757,10 @@ export class Mobile extends HeyApiClient {
4288
4757
  get routine() {
4289
4758
  return (this._routine ??= new Routine({ client: this.client }));
4290
4759
  }
4760
+ _pty;
4761
+ get pty() {
4762
+ return (this._pty ??= new Pty2({ client: this.client }));
4763
+ }
4291
4764
  }
4292
4765
  export class Find extends HeyApiClient {
4293
4766
  /**
@@ -5781,6 +6254,10 @@ export class NikcliClient extends HeyApiClient {
5781
6254
  get loop() {
5782
6255
  return (this._loop ??= new Loop({ client: this.client }));
5783
6256
  }
6257
+ _mission;
6258
+ get mission() {
6259
+ return (this._mission ??= new Mission({ client: this.client }));
6260
+ }
5784
6261
  _pty;
5785
6262
  get pty() {
5786
6263
  return (this._pty ??= new Pty({ client: this.client }));