@nikcli-ai/sdk 1.73.0 → 1.75.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
@@ -2517,50 +2843,6 @@ export class Auth2 extends HeyApiClient {
2517
2843
  return (this._token ??= new Token({ client: this.client }));
2518
2844
  }
2519
2845
  }
2520
- export class Command extends HeyApiClient {
2521
- /**
2522
- * List mobile commands
2523
- *
2524
- * Return command metadata safe for the mobile command palette and slash autocomplete.
2525
- */
2526
- list(parameters, options) {
2527
- const params = buildClientParams([parameters], [
2528
- {
2529
- args: [
2530
- { in: "query", key: "directory" },
2531
- { in: "query", key: "workspace" },
2532
- ],
2533
- },
2534
- ]);
2535
- return (options?.client ?? this.client).get({
2536
- url: "/mobile/command",
2537
- ...options,
2538
- ...params,
2539
- });
2540
- }
2541
- }
2542
- export class Project2 extends HeyApiClient {
2543
- /**
2544
- * List local projects for mobile
2545
- *
2546
- * Return local projects and sandboxes visible to the connected Nikcli host.
2547
- */
2548
- list(parameters, options) {
2549
- const params = buildClientParams([parameters], [
2550
- {
2551
- args: [
2552
- { in: "query", key: "directory" },
2553
- { in: "query", key: "workspace" },
2554
- ],
2555
- },
2556
- ]);
2557
- return (options?.client ?? this.client).get({
2558
- url: "/mobile/project",
2559
- ...options,
2560
- ...params,
2561
- });
2562
- }
2563
- }
2564
2846
  export class Stash extends HeyApiClient {
2565
2847
  /**
2566
2848
  * List prompt stash for mobile
@@ -2677,6 +2959,50 @@ export class Memory extends HeyApiClient {
2677
2959
  return (this._stash ??= new Stash({ client: this.client }));
2678
2960
  }
2679
2961
  }
2962
+ export class Command extends HeyApiClient {
2963
+ /**
2964
+ * List mobile commands
2965
+ *
2966
+ * Return command metadata safe for the mobile command palette and slash autocomplete.
2967
+ */
2968
+ list(parameters, options) {
2969
+ const params = buildClientParams([parameters], [
2970
+ {
2971
+ args: [
2972
+ { in: "query", key: "directory" },
2973
+ { in: "query", key: "workspace" },
2974
+ ],
2975
+ },
2976
+ ]);
2977
+ return (options?.client ?? this.client).get({
2978
+ url: "/mobile/command",
2979
+ ...options,
2980
+ ...params,
2981
+ });
2982
+ }
2983
+ }
2984
+ export class Project2 extends HeyApiClient {
2985
+ /**
2986
+ * List local projects for mobile
2987
+ *
2988
+ * Return local projects and sandboxes visible to the connected Nikcli host.
2989
+ */
2990
+ list(parameters, options) {
2991
+ const params = buildClientParams([parameters], [
2992
+ {
2993
+ args: [
2994
+ { in: "query", key: "directory" },
2995
+ { in: "query", key: "workspace" },
2996
+ ],
2997
+ },
2998
+ ]);
2999
+ return (options?.client ?? this.client).get({
3000
+ url: "/mobile/project",
3001
+ ...options,
3002
+ ...params,
3003
+ });
3004
+ }
3005
+ }
2680
3006
  export class ClientId extends HeyApiClient {
2681
3007
  /**
2682
3008
  * Persist GitHub OAuth client ID for mobile
@@ -4244,6 +4570,10 @@ export class Mobile extends HeyApiClient {
4244
4570
  get auth() {
4245
4571
  return (this._auth ??= new Auth2({ client: this.client }));
4246
4572
  }
4573
+ _memory;
4574
+ get memory() {
4575
+ return (this._memory ??= new Memory({ client: this.client }));
4576
+ }
4247
4577
  _command;
4248
4578
  get command() {
4249
4579
  return (this._command ??= new Command({ client: this.client }));
@@ -4252,10 +4582,6 @@ export class Mobile extends HeyApiClient {
4252
4582
  get project() {
4253
4583
  return (this._project ??= new Project2({ client: this.client }));
4254
4584
  }
4255
- _memory;
4256
- get memory() {
4257
- return (this._memory ??= new Memory({ client: this.client }));
4258
- }
4259
4585
  _github;
4260
4586
  get github() {
4261
4587
  return (this._github ??= new Github({ client: this.client }));
@@ -5781,6 +6107,10 @@ export class NikcliClient extends HeyApiClient {
5781
6107
  get loop() {
5782
6108
  return (this._loop ??= new Loop({ client: this.client }));
5783
6109
  }
6110
+ _mission;
6111
+ get mission() {
6112
+ return (this._mission ??= new Mission({ client: this.client }));
6113
+ }
5784
6114
  _pty;
5785
6115
  get pty() {
5786
6116
  return (this._pty ??= new Pty({ client: this.client }));