@jamesaphoenix/tx-api-server 0.1.2 → 0.5.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.
Files changed (58) hide show
  1. package/dist/__tests__/api.test.d.ts +7 -0
  2. package/dist/__tests__/api.test.d.ts.map +1 -0
  3. package/dist/__tests__/api.test.js +184 -0
  4. package/dist/__tests__/api.test.js.map +1 -0
  5. package/dist/__tests__/auth.test.d.ts +7 -0
  6. package/dist/__tests__/auth.test.d.ts.map +1 -0
  7. package/dist/__tests__/auth.test.js +174 -0
  8. package/dist/__tests__/auth.test.js.map +1 -0
  9. package/dist/__tests__/body-limit.test.d.ts +7 -0
  10. package/dist/__tests__/body-limit.test.d.ts.map +1 -0
  11. package/dist/__tests__/body-limit.test.js +60 -0
  12. package/dist/__tests__/body-limit.test.js.map +1 -0
  13. package/dist/__tests__/health.test.d.ts.map +1 -0
  14. package/dist/__tests__/health.test.js.map +1 -0
  15. package/dist/__tests__/log-reader.test.d.ts +8 -0
  16. package/dist/__tests__/log-reader.test.d.ts.map +1 -0
  17. package/dist/__tests__/log-reader.test.js +55 -0
  18. package/dist/__tests__/log-reader.test.js.map +1 -0
  19. package/dist/__tests__/rate-limit.test.d.ts.map +1 -0
  20. package/dist/__tests__/rate-limit.test.js.map +1 -0
  21. package/dist/__tests__/server-lib.test.d.ts +10 -0
  22. package/dist/__tests__/server-lib.test.d.ts.map +1 -0
  23. package/dist/__tests__/server-lib.test.js +145 -0
  24. package/dist/__tests__/server-lib.test.js.map +1 -0
  25. package/dist/api.d.ts +420 -263
  26. package/dist/api.d.ts.map +1 -1
  27. package/dist/api.js +183 -123
  28. package/dist/api.js.map +1 -1
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.js +2 -2
  31. package/dist/middleware/auth.d.ts +1 -1
  32. package/dist/middleware/auth.d.ts.map +1 -1
  33. package/dist/middleware/auth.js +9 -7
  34. package/dist/middleware/auth.js.map +1 -1
  35. package/dist/routes/cycles.d.ts +10 -0
  36. package/dist/routes/cycles.d.ts.map +1 -0
  37. package/dist/routes/cycles.js +153 -0
  38. package/dist/routes/cycles.js.map +1 -0
  39. package/dist/routes/docs.d.ts +2 -2
  40. package/dist/routes/docs.d.ts.map +1 -1
  41. package/dist/routes/docs.js +114 -52
  42. package/dist/routes/docs.js.map +1 -1
  43. package/dist/routes/messages.d.ts +9 -0
  44. package/dist/routes/messages.d.ts.map +1 -0
  45. package/dist/routes/messages.js +67 -0
  46. package/dist/routes/messages.js.map +1 -0
  47. package/dist/routes/runs.d.ts.map +1 -1
  48. package/dist/routes/runs.js +1 -4
  49. package/dist/routes/runs.js.map +1 -1
  50. package/dist/server-lib.d.ts +1 -1
  51. package/dist/server-lib.d.ts.map +1 -1
  52. package/dist/server-lib.js +5 -6
  53. package/dist/server-lib.js.map +1 -1
  54. package/dist/server.d.ts +1 -1
  55. package/dist/server.js +1 -1
  56. package/dist/utils/transcript-parser.js +8 -10
  57. package/dist/utils/transcript-parser.js.map +1 -1
  58. package/package.json +3 -8
package/dist/api.d.ts CHANGED
@@ -392,6 +392,9 @@ export declare const LearningsGroup: HttpApiGroup.HttpApiGroup<"learnings", Http
392
392
  readonly bm25Rank: number;
393
393
  readonly vectorRank: number;
394
394
  readonly rerankerScore?: number | undefined;
395
+ readonly expansionHops?: number | undefined;
396
+ readonly expansionPath?: readonly number[] | undefined;
397
+ readonly sourceEdge?: "ANCHORED_TO" | "DERIVED_FROM" | "IMPORTS" | "CO_CHANGES_WITH" | "SIMILAR_TO" | "LINKS_TO" | "USED_IN_RUN" | "INVALIDATED_BY" | null | undefined;
395
398
  readonly feedbackScore?: number | undefined;
396
399
  readonly content: string;
397
400
  readonly sourceType: "compaction" | "run" | "manual" | "claude_md";
@@ -458,6 +461,9 @@ export declare const LearningsGroup: HttpApiGroup.HttpApiGroup<"learnings", Http
458
461
  readonly bm25Rank: number;
459
462
  readonly vectorRank: number;
460
463
  readonly rerankerScore?: number | undefined;
464
+ readonly expansionHops?: number | undefined;
465
+ readonly expansionPath?: readonly number[] | undefined;
466
+ readonly sourceEdge?: "ANCHORED_TO" | "DERIVED_FROM" | "IMPORTS" | "CO_CHANGES_WITH" | "SIMILAR_TO" | "LINKS_TO" | "USED_IN_RUN" | "INVALIDATED_BY" | null | undefined;
461
467
  readonly feedbackScore?: number | undefined;
462
468
  readonly content: string;
463
469
  readonly sourceType: "compaction" | "run" | "manual" | "claude_md";
@@ -648,37 +654,173 @@ export declare const SyncGroup: HttpApiGroup.HttpApiGroup<"sync", HttpApiEndpoin
648
654
  readonly before: number;
649
655
  readonly after: number;
650
656
  }, never, never, never>, never, never, false>;
657
+ export declare const MessagesGroup: HttpApiGroup.HttpApiGroup<"messages", HttpApiEndpoint.HttpApiEndpoint<"sendMessage", "POST", never, never, {
658
+ readonly taskId?: string | undefined;
659
+ readonly metadata?: {
660
+ readonly [x: string]: unknown;
661
+ } | undefined;
662
+ readonly content: string;
663
+ readonly channel: string;
664
+ readonly sender?: string | undefined;
665
+ readonly ttlSeconds?: number | undefined;
666
+ readonly correlationId?: string | undefined;
667
+ }, never, {
668
+ readonly id: number & import("effect/Brand").Brand<"MessageId">;
669
+ readonly taskId: string | null;
670
+ readonly status: "pending" | "acked";
671
+ readonly createdAt: string;
672
+ readonly metadata: {
673
+ readonly [x: string]: unknown;
674
+ };
675
+ readonly content: string;
676
+ readonly channel: string;
677
+ readonly sender: string;
678
+ readonly correlationId: string | null;
679
+ readonly ackedAt: string | null;
680
+ readonly expiresAt: string | null;
681
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"inbox", "GET", {
682
+ readonly channel: string;
683
+ }, {
684
+ readonly limit?: number | undefined;
685
+ readonly sender?: string | undefined;
686
+ readonly correlationId?: string | undefined;
687
+ readonly afterId?: number | undefined;
688
+ readonly includeAcked?: string | undefined;
689
+ }, never, never, {
690
+ readonly messages: readonly {
691
+ readonly id: number & import("effect/Brand").Brand<"MessageId">;
692
+ readonly taskId: string | null;
693
+ readonly status: "pending" | "acked";
694
+ readonly createdAt: string;
695
+ readonly metadata: {
696
+ readonly [x: string]: unknown;
697
+ };
698
+ readonly content: string;
699
+ readonly channel: string;
700
+ readonly sender: string;
701
+ readonly correlationId: string | null;
702
+ readonly ackedAt: string | null;
703
+ readonly expiresAt: string | null;
704
+ }[];
705
+ readonly channel: string;
706
+ readonly count: number;
707
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"ackMessage", "POST", {
708
+ readonly id: number;
709
+ }, never, never, never, {
710
+ readonly message: {
711
+ readonly id: number & import("effect/Brand").Brand<"MessageId">;
712
+ readonly taskId: string | null;
713
+ readonly status: "pending" | "acked";
714
+ readonly createdAt: string;
715
+ readonly metadata: {
716
+ readonly [x: string]: unknown;
717
+ };
718
+ readonly content: string;
719
+ readonly channel: string;
720
+ readonly sender: string;
721
+ readonly correlationId: string | null;
722
+ readonly ackedAt: string | null;
723
+ readonly expiresAt: string | null;
724
+ };
725
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"ackAllMessages", "POST", {
726
+ readonly channel: string;
727
+ }, never, never, never, {
728
+ readonly channel: string;
729
+ readonly ackedCount: number;
730
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"pendingCount", "GET", {
731
+ readonly channel: string;
732
+ }, never, never, never, {
733
+ readonly channel: string;
734
+ readonly count: number;
735
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"gcMessages", "POST", never, never, {
736
+ readonly ackedOlderThanHours?: number | undefined;
737
+ }, never, {
738
+ readonly acked: number;
739
+ readonly expired: number;
740
+ }, never, never, never>, never, never, false>;
741
+ export declare const CyclesGroup: HttpApiGroup.HttpApiGroup<"cycles", HttpApiEndpoint.HttpApiEndpoint<"listCycles", "GET", never, never, never, never, {
742
+ readonly cycles: readonly {
743
+ readonly id: string;
744
+ readonly status: string;
745
+ readonly description: string;
746
+ readonly startedAt: string;
747
+ readonly endedAt: string | null;
748
+ readonly cycle: number;
749
+ readonly name: string;
750
+ readonly rounds: number;
751
+ readonly totalNewIssues: number;
752
+ readonly existingIssues: number;
753
+ readonly finalLoss: number;
754
+ readonly converged: boolean;
755
+ }[];
756
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"getCycle", "GET", {
757
+ readonly id: string;
758
+ }, never, never, never, {
759
+ readonly cycle: {
760
+ readonly id: string;
761
+ readonly status: string;
762
+ readonly description: string;
763
+ readonly startedAt: string;
764
+ readonly endedAt: string | null;
765
+ readonly cycle: number;
766
+ readonly name: string;
767
+ readonly rounds: number;
768
+ readonly totalNewIssues: number;
769
+ readonly existingIssues: number;
770
+ readonly finalLoss: number;
771
+ readonly converged: boolean;
772
+ };
773
+ readonly roundMetrics: readonly {
774
+ readonly cycle: number;
775
+ readonly existingIssues: number;
776
+ readonly round: number;
777
+ readonly loss: number;
778
+ readonly newIssues: number;
779
+ readonly duplicates: number;
780
+ readonly high: number;
781
+ readonly medium: number;
782
+ readonly low: number;
783
+ }[];
784
+ readonly issues: readonly {
785
+ readonly id: string;
786
+ readonly title: string;
787
+ readonly description: string;
788
+ readonly cycle: number;
789
+ readonly round: number;
790
+ readonly severity: string;
791
+ readonly issueType: string;
792
+ readonly file: string;
793
+ readonly line: number;
794
+ }[];
795
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"deleteCycle", "DELETE", {
796
+ readonly id: string;
797
+ }, never, never, never, {
798
+ readonly id: string;
799
+ readonly success: boolean;
800
+ readonly deletedIssues: number;
801
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"deleteIssues", "POST", never, never, {
802
+ readonly issueIds: readonly string[];
803
+ }, never, {
804
+ readonly success: boolean;
805
+ readonly deletedCount: number;
806
+ }, never, never, never>, never, never, false>;
651
807
  export declare const DocsGroup: HttpApiGroup.HttpApiGroup<"docs", HttpApiEndpoint.HttpApiEndpoint<"listDocs", "GET", never, {
652
808
  readonly status?: string | undefined;
653
809
  readonly kind?: string | undefined;
654
810
  }, never, never, {
655
811
  readonly docs: readonly {
656
812
  readonly id: number;
657
- readonly status: string;
813
+ readonly status: "changing" | "locked";
658
814
  readonly version: number;
659
815
  readonly title: string;
660
816
  readonly createdAt: string;
661
- readonly updatedAt: string | null;
662
817
  readonly name: string;
663
- readonly kind: string;
664
- readonly filePath: string | null;
665
818
  readonly hash: string;
819
+ readonly kind: "overview" | "prd" | "design";
820
+ readonly filePath: string;
821
+ readonly parentDocId: number | null;
666
822
  readonly lockedAt: string | null;
667
823
  }[];
668
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"getDoc", "GET", {
669
- readonly name: string;
670
- }, never, never, never, {
671
- readonly id: number;
672
- readonly status: string;
673
- readonly version: number;
674
- readonly title: string;
675
- readonly createdAt: string;
676
- readonly updatedAt: string | null;
677
- readonly name: string;
678
- readonly kind: string;
679
- readonly filePath: string | null;
680
- readonly hash: string;
681
- readonly lockedAt: string | null;
682
824
  }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"createDoc", "POST", never, never, {
683
825
  readonly title: string;
684
826
  readonly metadata?: {
@@ -689,15 +831,29 @@ export declare const DocsGroup: HttpApiGroup.HttpApiGroup<"docs", HttpApiEndpoin
689
831
  readonly yamlContent: string;
690
832
  }, never, {
691
833
  readonly id: number;
692
- readonly status: string;
834
+ readonly status: "changing" | "locked";
693
835
  readonly version: number;
694
836
  readonly title: string;
695
837
  readonly createdAt: string;
696
- readonly updatedAt: string | null;
697
838
  readonly name: string;
698
- readonly kind: string;
699
- readonly filePath: string | null;
700
839
  readonly hash: string;
840
+ readonly kind: "overview" | "prd" | "design";
841
+ readonly filePath: string;
842
+ readonly parentDocId: number | null;
843
+ readonly lockedAt: string | null;
844
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"getDoc", "GET", {
845
+ readonly name: string;
846
+ }, never, never, never, {
847
+ readonly id: number;
848
+ readonly status: "changing" | "locked";
849
+ readonly version: number;
850
+ readonly title: string;
851
+ readonly createdAt: string;
852
+ readonly name: string;
853
+ readonly hash: string;
854
+ readonly kind: "overview" | "prd" | "design";
855
+ readonly filePath: string;
856
+ readonly parentDocId: number | null;
701
857
  readonly lockedAt: string | null;
702
858
  }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"updateDoc", "PATCH", {
703
859
  readonly name: string;
@@ -705,139 +861,61 @@ export declare const DocsGroup: HttpApiGroup.HttpApiGroup<"docs", HttpApiEndpoin
705
861
  readonly yamlContent: string;
706
862
  }, never, {
707
863
  readonly id: number;
708
- readonly status: string;
864
+ readonly status: "changing" | "locked";
709
865
  readonly version: number;
710
866
  readonly title: string;
711
867
  readonly createdAt: string;
712
- readonly updatedAt: string | null;
713
868
  readonly name: string;
714
- readonly kind: string;
715
- readonly filePath: string | null;
716
869
  readonly hash: string;
870
+ readonly kind: "overview" | "prd" | "design";
871
+ readonly filePath: string;
872
+ readonly parentDocId: number | null;
717
873
  readonly lockedAt: string | null;
874
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"deleteDoc", "DELETE", {
875
+ readonly name: string;
876
+ }, never, never, never, {
877
+ readonly success: boolean;
878
+ readonly name: string;
718
879
  }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"lockDoc", "POST", {
719
880
  readonly name: string;
720
881
  }, never, never, never, {
721
882
  readonly id: number;
722
- readonly status: string;
883
+ readonly status: "changing" | "locked";
723
884
  readonly version: number;
724
885
  readonly title: string;
725
886
  readonly createdAt: string;
726
- readonly updatedAt: string | null;
727
887
  readonly name: string;
728
- readonly kind: string;
729
- readonly filePath: string | null;
730
888
  readonly hash: string;
889
+ readonly kind: "overview" | "prd" | "design";
890
+ readonly filePath: string;
891
+ readonly parentDocId: number | null;
731
892
  readonly lockedAt: string | null;
732
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"linkDoc", "POST", {
733
- readonly name: string;
734
- }, never, {
893
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"linkDocs", "POST", never, never, {
894
+ readonly fromName: string;
735
895
  readonly toName: string;
736
- readonly linkType?: string | undefined;
896
+ readonly linkType?: "overview_to_prd" | "overview_to_design" | "prd_to_design" | "design_patch" | undefined;
737
897
  }, never, {
738
- readonly success: boolean;
739
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"renderDoc", "POST", {
740
- readonly name: string;
741
- }, never, never, never, {
742
- readonly rendered: readonly string[];
743
- }, never, never, never>, never, never, false>;
744
- export declare const ClaimsGroup: HttpApiGroup.HttpApiGroup<"claims", HttpApiEndpoint.HttpApiEndpoint<"createClaim", "POST", never, never, {
745
- readonly taskId: string;
746
- readonly workerId: string;
747
- readonly leaseDurationMinutes?: number | undefined;
748
- }, never, {
749
- readonly id: number;
750
- readonly taskId: string;
751
- readonly status: string;
752
- readonly workerId: string;
753
- readonly claimedAt: string;
754
- readonly leaseExpiresAt: string;
755
- readonly renewedCount: number;
756
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"releaseClaim", "DELETE", {
757
- readonly taskId: string;
758
- readonly workerId: string;
759
- }, never, never, never, {
760
- readonly success: boolean;
761
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"renewClaim", "POST", {
762
- readonly taskId: string;
763
- readonly workerId: string;
764
- }, never, never, never, {
765
898
  readonly id: number;
766
- readonly taskId: string;
767
- readonly status: string;
768
- readonly workerId: string;
769
- readonly claimedAt: string;
770
- readonly leaseExpiresAt: string;
771
- readonly renewedCount: number;
772
- }, never, never, never>, never, never, false>;
773
- export declare const AttemptsGroup: HttpApiGroup.HttpApiGroup<"attempts", HttpApiEndpoint.HttpApiEndpoint<"listAttempts", "GET", {
774
- readonly id: string;
775
- }, never, never, never, {
776
- readonly attempts: readonly {
777
- readonly id: number & import("effect/Brand").Brand<"AttemptId">;
778
- readonly taskId: string & import("effect/Brand").Brand<"TaskId">;
779
- readonly createdAt: string;
780
- readonly approach: string;
781
- readonly outcome: "failed" | "succeeded";
782
- readonly reason: string | null;
783
- }[];
784
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"createAttempt", "POST", {
785
- readonly id: string;
786
- }, never, {
787
- readonly approach: string;
788
- readonly outcome: "failed" | "succeeded";
789
- readonly reason?: string | null | undefined;
790
- }, never, {
791
- readonly id: number & import("effect/Brand").Brand<"AttemptId">;
792
- readonly taskId: string & import("effect/Brand").Brand<"TaskId">;
793
899
  readonly createdAt: string;
794
- readonly approach: string;
795
- readonly outcome: "failed" | "succeeded";
796
- readonly reason: string | null;
797
- }, never, never, never>, never, never, false>;
798
- export declare const InvariantsGroup: HttpApiGroup.HttpApiGroup<"invariants", HttpApiEndpoint.HttpApiEndpoint<"listInvariants", "GET", never, {
799
- readonly status?: "changing" | "locked" | undefined;
800
- readonly enforcement?: "integration_test" | "linter" | "llm_as_judge" | undefined;
801
- readonly subsystem?: string | undefined;
802
- }, never, never, {
803
- readonly invariants: readonly {
900
+ readonly linkType: "overview_to_prd" | "overview_to_design" | "prd_to_design" | "design_patch";
901
+ readonly fromDocId: number;
902
+ readonly toDocId: number;
903
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"renderDocs", "POST", never, never, {
904
+ readonly name?: string | null | undefined;
905
+ }, never, {
906
+ readonly rendered: readonly string[];
907
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"getDocGraph", "GET", never, never, never, never, {
908
+ readonly nodes: readonly {
804
909
  readonly id: string;
805
- readonly status: string;
806
- readonly createdAt: string;
807
- readonly rule: string;
808
- readonly enforcement: string;
809
- readonly docId: number;
810
- readonly subsystem: string | null;
811
- readonly testRef: string | null;
812
- readonly lintRule: string | null;
813
- readonly promptRef: string | null;
910
+ readonly status?: string | undefined;
911
+ readonly kind: "task" | "overview" | "prd" | "design";
912
+ readonly label: string;
913
+ }[];
914
+ readonly edges: readonly {
915
+ readonly type: string;
916
+ readonly source: string;
917
+ readonly target: string;
814
918
  }[];
815
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"getInvariant", "GET", {
816
- readonly id: string;
817
- }, never, never, never, {
818
- readonly id: string;
819
- readonly status: string;
820
- readonly createdAt: string;
821
- readonly rule: string;
822
- readonly enforcement: string;
823
- readonly docId: number;
824
- readonly subsystem: string | null;
825
- readonly testRef: string | null;
826
- readonly lintRule: string | null;
827
- readonly promptRef: string | null;
828
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"checkInvariant", "POST", {
829
- readonly id: string;
830
- }, never, {
831
- readonly passed: boolean;
832
- readonly details?: string | undefined;
833
- readonly durationMs?: number | undefined;
834
- }, never, {
835
- readonly id: number;
836
- readonly invariantId: string;
837
- readonly passed: boolean;
838
- readonly details: string | null;
839
- readonly checkedAt: string;
840
- readonly durationMs: number | null;
841
919
  }, never, never, never>, never, never, false>;
842
920
  declare const TxApi_base: HttpApi.HttpApi<"tx", HttpApiGroup.HttpApiGroup<"health", HttpApiEndpoint.HttpApiEndpoint<"health", "GET", never, never, never, never, {
843
921
  readonly status: "healthy" | "degraded" | "unhealthy";
@@ -1169,6 +1247,9 @@ declare const TxApi_base: HttpApi.HttpApi<"tx", HttpApiGroup.HttpApiGroup<"healt
1169
1247
  readonly bm25Rank: number;
1170
1248
  readonly vectorRank: number;
1171
1249
  readonly rerankerScore?: number | undefined;
1250
+ readonly expansionHops?: number | undefined;
1251
+ readonly expansionPath?: readonly number[] | undefined;
1252
+ readonly sourceEdge?: "ANCHORED_TO" | "DERIVED_FROM" | "IMPORTS" | "CO_CHANGES_WITH" | "SIMILAR_TO" | "LINKS_TO" | "USED_IN_RUN" | "INVALIDATED_BY" | null | undefined;
1172
1253
  readonly feedbackScore?: number | undefined;
1173
1254
  readonly content: string;
1174
1255
  readonly sourceType: "compaction" | "run" | "manual" | "claude_md";
@@ -1235,6 +1316,9 @@ declare const TxApi_base: HttpApi.HttpApi<"tx", HttpApiGroup.HttpApiGroup<"healt
1235
1316
  readonly bm25Rank: number;
1236
1317
  readonly vectorRank: number;
1237
1318
  readonly rerankerScore?: number | undefined;
1319
+ readonly expansionHops?: number | undefined;
1320
+ readonly expansionPath?: readonly number[] | undefined;
1321
+ readonly sourceEdge?: "ANCHORED_TO" | "DERIVED_FROM" | "IMPORTS" | "CO_CHANGES_WITH" | "SIMILAR_TO" | "LINKS_TO" | "USED_IN_RUN" | "INVALIDATED_BY" | null | undefined;
1238
1322
  readonly feedbackScore?: number | undefined;
1239
1323
  readonly content: string;
1240
1324
  readonly sourceType: "compaction" | "run" | "manual" | "claude_md";
@@ -1422,37 +1506,171 @@ declare const TxApi_base: HttpApi.HttpApi<"tx", HttpApiGroup.HttpApiGroup<"healt
1422
1506
  }, never, {
1423
1507
  readonly before: number;
1424
1508
  readonly after: number;
1509
+ }, never, never, never>, never, never, false> | HttpApiGroup.HttpApiGroup<"messages", HttpApiEndpoint.HttpApiEndpoint<"sendMessage", "POST", never, never, {
1510
+ readonly taskId?: string | undefined;
1511
+ readonly metadata?: {
1512
+ readonly [x: string]: unknown;
1513
+ } | undefined;
1514
+ readonly content: string;
1515
+ readonly channel: string;
1516
+ readonly sender?: string | undefined;
1517
+ readonly ttlSeconds?: number | undefined;
1518
+ readonly correlationId?: string | undefined;
1519
+ }, never, {
1520
+ readonly id: number & import("effect/Brand").Brand<"MessageId">;
1521
+ readonly taskId: string | null;
1522
+ readonly status: "pending" | "acked";
1523
+ readonly createdAt: string;
1524
+ readonly metadata: {
1525
+ readonly [x: string]: unknown;
1526
+ };
1527
+ readonly content: string;
1528
+ readonly channel: string;
1529
+ readonly sender: string;
1530
+ readonly correlationId: string | null;
1531
+ readonly ackedAt: string | null;
1532
+ readonly expiresAt: string | null;
1533
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"inbox", "GET", {
1534
+ readonly channel: string;
1535
+ }, {
1536
+ readonly limit?: number | undefined;
1537
+ readonly sender?: string | undefined;
1538
+ readonly correlationId?: string | undefined;
1539
+ readonly afterId?: number | undefined;
1540
+ readonly includeAcked?: string | undefined;
1541
+ }, never, never, {
1542
+ readonly messages: readonly {
1543
+ readonly id: number & import("effect/Brand").Brand<"MessageId">;
1544
+ readonly taskId: string | null;
1545
+ readonly status: "pending" | "acked";
1546
+ readonly createdAt: string;
1547
+ readonly metadata: {
1548
+ readonly [x: string]: unknown;
1549
+ };
1550
+ readonly content: string;
1551
+ readonly channel: string;
1552
+ readonly sender: string;
1553
+ readonly correlationId: string | null;
1554
+ readonly ackedAt: string | null;
1555
+ readonly expiresAt: string | null;
1556
+ }[];
1557
+ readonly channel: string;
1558
+ readonly count: number;
1559
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"ackMessage", "POST", {
1560
+ readonly id: number;
1561
+ }, never, never, never, {
1562
+ readonly message: {
1563
+ readonly id: number & import("effect/Brand").Brand<"MessageId">;
1564
+ readonly taskId: string | null;
1565
+ readonly status: "pending" | "acked";
1566
+ readonly createdAt: string;
1567
+ readonly metadata: {
1568
+ readonly [x: string]: unknown;
1569
+ };
1570
+ readonly content: string;
1571
+ readonly channel: string;
1572
+ readonly sender: string;
1573
+ readonly correlationId: string | null;
1574
+ readonly ackedAt: string | null;
1575
+ readonly expiresAt: string | null;
1576
+ };
1577
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"ackAllMessages", "POST", {
1578
+ readonly channel: string;
1579
+ }, never, never, never, {
1580
+ readonly channel: string;
1581
+ readonly ackedCount: number;
1582
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"pendingCount", "GET", {
1583
+ readonly channel: string;
1584
+ }, never, never, never, {
1585
+ readonly channel: string;
1586
+ readonly count: number;
1587
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"gcMessages", "POST", never, never, {
1588
+ readonly ackedOlderThanHours?: number | undefined;
1589
+ }, never, {
1590
+ readonly acked: number;
1591
+ readonly expired: number;
1592
+ }, never, never, never>, never, never, false> | HttpApiGroup.HttpApiGroup<"cycles", HttpApiEndpoint.HttpApiEndpoint<"listCycles", "GET", never, never, never, never, {
1593
+ readonly cycles: readonly {
1594
+ readonly id: string;
1595
+ readonly status: string;
1596
+ readonly description: string;
1597
+ readonly startedAt: string;
1598
+ readonly endedAt: string | null;
1599
+ readonly cycle: number;
1600
+ readonly name: string;
1601
+ readonly rounds: number;
1602
+ readonly totalNewIssues: number;
1603
+ readonly existingIssues: number;
1604
+ readonly finalLoss: number;
1605
+ readonly converged: boolean;
1606
+ }[];
1607
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"getCycle", "GET", {
1608
+ readonly id: string;
1609
+ }, never, never, never, {
1610
+ readonly cycle: {
1611
+ readonly id: string;
1612
+ readonly status: string;
1613
+ readonly description: string;
1614
+ readonly startedAt: string;
1615
+ readonly endedAt: string | null;
1616
+ readonly cycle: number;
1617
+ readonly name: string;
1618
+ readonly rounds: number;
1619
+ readonly totalNewIssues: number;
1620
+ readonly existingIssues: number;
1621
+ readonly finalLoss: number;
1622
+ readonly converged: boolean;
1623
+ };
1624
+ readonly roundMetrics: readonly {
1625
+ readonly cycle: number;
1626
+ readonly existingIssues: number;
1627
+ readonly round: number;
1628
+ readonly loss: number;
1629
+ readonly newIssues: number;
1630
+ readonly duplicates: number;
1631
+ readonly high: number;
1632
+ readonly medium: number;
1633
+ readonly low: number;
1634
+ }[];
1635
+ readonly issues: readonly {
1636
+ readonly id: string;
1637
+ readonly title: string;
1638
+ readonly description: string;
1639
+ readonly cycle: number;
1640
+ readonly round: number;
1641
+ readonly severity: string;
1642
+ readonly issueType: string;
1643
+ readonly file: string;
1644
+ readonly line: number;
1645
+ }[];
1646
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"deleteCycle", "DELETE", {
1647
+ readonly id: string;
1648
+ }, never, never, never, {
1649
+ readonly id: string;
1650
+ readonly success: boolean;
1651
+ readonly deletedIssues: number;
1652
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"deleteIssues", "POST", never, never, {
1653
+ readonly issueIds: readonly string[];
1654
+ }, never, {
1655
+ readonly success: boolean;
1656
+ readonly deletedCount: number;
1425
1657
  }, never, never, never>, never, never, false> | HttpApiGroup.HttpApiGroup<"docs", HttpApiEndpoint.HttpApiEndpoint<"listDocs", "GET", never, {
1426
1658
  readonly status?: string | undefined;
1427
1659
  readonly kind?: string | undefined;
1428
1660
  }, never, never, {
1429
1661
  readonly docs: readonly {
1430
1662
  readonly id: number;
1431
- readonly status: string;
1663
+ readonly status: "changing" | "locked";
1432
1664
  readonly version: number;
1433
1665
  readonly title: string;
1434
1666
  readonly createdAt: string;
1435
- readonly updatedAt: string | null;
1436
1667
  readonly name: string;
1437
- readonly kind: string;
1438
- readonly filePath: string | null;
1439
1668
  readonly hash: string;
1669
+ readonly kind: "overview" | "prd" | "design";
1670
+ readonly filePath: string;
1671
+ readonly parentDocId: number | null;
1440
1672
  readonly lockedAt: string | null;
1441
1673
  }[];
1442
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"getDoc", "GET", {
1443
- readonly name: string;
1444
- }, never, never, never, {
1445
- readonly id: number;
1446
- readonly status: string;
1447
- readonly version: number;
1448
- readonly title: string;
1449
- readonly createdAt: string;
1450
- readonly updatedAt: string | null;
1451
- readonly name: string;
1452
- readonly kind: string;
1453
- readonly filePath: string | null;
1454
- readonly hash: string;
1455
- readonly lockedAt: string | null;
1456
1674
  }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"createDoc", "POST", never, never, {
1457
1675
  readonly title: string;
1458
1676
  readonly metadata?: {
@@ -1463,15 +1681,29 @@ declare const TxApi_base: HttpApi.HttpApi<"tx", HttpApiGroup.HttpApiGroup<"healt
1463
1681
  readonly yamlContent: string;
1464
1682
  }, never, {
1465
1683
  readonly id: number;
1466
- readonly status: string;
1684
+ readonly status: "changing" | "locked";
1467
1685
  readonly version: number;
1468
1686
  readonly title: string;
1469
1687
  readonly createdAt: string;
1470
- readonly updatedAt: string | null;
1471
1688
  readonly name: string;
1472
- readonly kind: string;
1473
- readonly filePath: string | null;
1474
1689
  readonly hash: string;
1690
+ readonly kind: "overview" | "prd" | "design";
1691
+ readonly filePath: string;
1692
+ readonly parentDocId: number | null;
1693
+ readonly lockedAt: string | null;
1694
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"getDoc", "GET", {
1695
+ readonly name: string;
1696
+ }, never, never, never, {
1697
+ readonly id: number;
1698
+ readonly status: "changing" | "locked";
1699
+ readonly version: number;
1700
+ readonly title: string;
1701
+ readonly createdAt: string;
1702
+ readonly name: string;
1703
+ readonly hash: string;
1704
+ readonly kind: "overview" | "prd" | "design";
1705
+ readonly filePath: string;
1706
+ readonly parentDocId: number | null;
1475
1707
  readonly lockedAt: string | null;
1476
1708
  }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"updateDoc", "PATCH", {
1477
1709
  readonly name: string;
@@ -1479,136 +1711,61 @@ declare const TxApi_base: HttpApi.HttpApi<"tx", HttpApiGroup.HttpApiGroup<"healt
1479
1711
  readonly yamlContent: string;
1480
1712
  }, never, {
1481
1713
  readonly id: number;
1482
- readonly status: string;
1714
+ readonly status: "changing" | "locked";
1483
1715
  readonly version: number;
1484
1716
  readonly title: string;
1485
1717
  readonly createdAt: string;
1486
- readonly updatedAt: string | null;
1487
1718
  readonly name: string;
1488
- readonly kind: string;
1489
- readonly filePath: string | null;
1490
1719
  readonly hash: string;
1720
+ readonly kind: "overview" | "prd" | "design";
1721
+ readonly filePath: string;
1722
+ readonly parentDocId: number | null;
1491
1723
  readonly lockedAt: string | null;
1724
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"deleteDoc", "DELETE", {
1725
+ readonly name: string;
1726
+ }, never, never, never, {
1727
+ readonly success: boolean;
1728
+ readonly name: string;
1492
1729
  }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"lockDoc", "POST", {
1493
1730
  readonly name: string;
1494
1731
  }, never, never, never, {
1495
1732
  readonly id: number;
1496
- readonly status: string;
1733
+ readonly status: "changing" | "locked";
1497
1734
  readonly version: number;
1498
1735
  readonly title: string;
1499
1736
  readonly createdAt: string;
1500
- readonly updatedAt: string | null;
1501
1737
  readonly name: string;
1502
- readonly kind: string;
1503
- readonly filePath: string | null;
1504
1738
  readonly hash: string;
1739
+ readonly kind: "overview" | "prd" | "design";
1740
+ readonly filePath: string;
1741
+ readonly parentDocId: number | null;
1505
1742
  readonly lockedAt: string | null;
1506
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"linkDoc", "POST", {
1507
- readonly name: string;
1508
- }, never, {
1743
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"linkDocs", "POST", never, never, {
1744
+ readonly fromName: string;
1509
1745
  readonly toName: string;
1510
- readonly linkType?: string | undefined;
1746
+ readonly linkType?: "overview_to_prd" | "overview_to_design" | "prd_to_design" | "design_patch" | undefined;
1511
1747
  }, never, {
1512
- readonly success: boolean;
1513
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"renderDoc", "POST", {
1514
- readonly name: string;
1515
- }, never, never, never, {
1516
- readonly rendered: readonly string[];
1517
- }, never, never, never>, never, never, false> | HttpApiGroup.HttpApiGroup<"claims", HttpApiEndpoint.HttpApiEndpoint<"createClaim", "POST", never, never, {
1518
- readonly taskId: string;
1519
- readonly workerId: string;
1520
- readonly leaseDurationMinutes?: number | undefined;
1521
- }, never, {
1522
- readonly id: number;
1523
- readonly taskId: string;
1524
- readonly status: string;
1525
- readonly workerId: string;
1526
- readonly claimedAt: string;
1527
- readonly leaseExpiresAt: string;
1528
- readonly renewedCount: number;
1529
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"releaseClaim", "DELETE", {
1530
- readonly taskId: string;
1531
- readonly workerId: string;
1532
- }, never, never, never, {
1533
- readonly success: boolean;
1534
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"renewClaim", "POST", {
1535
- readonly taskId: string;
1536
- readonly workerId: string;
1537
- }, never, never, never, {
1538
1748
  readonly id: number;
1539
- readonly taskId: string;
1540
- readonly status: string;
1541
- readonly workerId: string;
1542
- readonly claimedAt: string;
1543
- readonly leaseExpiresAt: string;
1544
- readonly renewedCount: number;
1545
- }, never, never, never>, never, never, false> | HttpApiGroup.HttpApiGroup<"attempts", HttpApiEndpoint.HttpApiEndpoint<"listAttempts", "GET", {
1546
- readonly id: string;
1547
- }, never, never, never, {
1548
- readonly attempts: readonly {
1549
- readonly id: number & import("effect/Brand").Brand<"AttemptId">;
1550
- readonly taskId: string & import("effect/Brand").Brand<"TaskId">;
1551
- readonly createdAt: string;
1552
- readonly approach: string;
1553
- readonly outcome: "failed" | "succeeded";
1554
- readonly reason: string | null;
1555
- }[];
1556
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"createAttempt", "POST", {
1557
- readonly id: string;
1558
- }, never, {
1559
- readonly approach: string;
1560
- readonly outcome: "failed" | "succeeded";
1561
- readonly reason?: string | null | undefined;
1562
- }, never, {
1563
- readonly id: number & import("effect/Brand").Brand<"AttemptId">;
1564
- readonly taskId: string & import("effect/Brand").Brand<"TaskId">;
1565
1749
  readonly createdAt: string;
1566
- readonly approach: string;
1567
- readonly outcome: "failed" | "succeeded";
1568
- readonly reason: string | null;
1569
- }, never, never, never>, never, never, false> | HttpApiGroup.HttpApiGroup<"invariants", HttpApiEndpoint.HttpApiEndpoint<"listInvariants", "GET", never, {
1570
- readonly status?: "changing" | "locked" | undefined;
1571
- readonly enforcement?: "integration_test" | "linter" | "llm_as_judge" | undefined;
1572
- readonly subsystem?: string | undefined;
1573
- }, never, never, {
1574
- readonly invariants: readonly {
1750
+ readonly linkType: "overview_to_prd" | "overview_to_design" | "prd_to_design" | "design_patch";
1751
+ readonly fromDocId: number;
1752
+ readonly toDocId: number;
1753
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"renderDocs", "POST", never, never, {
1754
+ readonly name?: string | null | undefined;
1755
+ }, never, {
1756
+ readonly rendered: readonly string[];
1757
+ }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"getDocGraph", "GET", never, never, never, never, {
1758
+ readonly nodes: readonly {
1575
1759
  readonly id: string;
1576
- readonly status: string;
1577
- readonly createdAt: string;
1578
- readonly rule: string;
1579
- readonly enforcement: string;
1580
- readonly docId: number;
1581
- readonly subsystem: string | null;
1582
- readonly testRef: string | null;
1583
- readonly lintRule: string | null;
1584
- readonly promptRef: string | null;
1760
+ readonly status?: string | undefined;
1761
+ readonly kind: "task" | "overview" | "prd" | "design";
1762
+ readonly label: string;
1763
+ }[];
1764
+ readonly edges: readonly {
1765
+ readonly type: string;
1766
+ readonly source: string;
1767
+ readonly target: string;
1585
1768
  }[];
1586
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"getInvariant", "GET", {
1587
- readonly id: string;
1588
- }, never, never, never, {
1589
- readonly id: string;
1590
- readonly status: string;
1591
- readonly createdAt: string;
1592
- readonly rule: string;
1593
- readonly enforcement: string;
1594
- readonly docId: number;
1595
- readonly subsystem: string | null;
1596
- readonly testRef: string | null;
1597
- readonly lintRule: string | null;
1598
- readonly promptRef: string | null;
1599
- }, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"checkInvariant", "POST", {
1600
- readonly id: string;
1601
- }, never, {
1602
- readonly passed: boolean;
1603
- readonly details?: string | undefined;
1604
- readonly durationMs?: number | undefined;
1605
- }, never, {
1606
- readonly id: number;
1607
- readonly invariantId: string;
1608
- readonly passed: boolean;
1609
- readonly details: string | null;
1610
- readonly checkedAt: string;
1611
- readonly durationMs: number | null;
1612
1769
  }, never, never, never>, never, never, false>, NotFound | BadRequest | InternalError | Unauthorized | Forbidden | ServiceUnavailable | import("@effect/platform/HttpApiError").HttpApiDecodeError, never>;
1613
1770
  export declare class TxApi extends TxApi_base {
1614
1771
  }