@jinion/core 0.4.0 → 0.5.1

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 (250) hide show
  1. package/dist/agent/agent.d.ts +8 -1
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/agent.js +3 -2
  4. package/dist/agent/agent.js.map +1 -1
  5. package/dist/agent/claude/approvals.d.ts +2 -1
  6. package/dist/agent/claude/approvals.d.ts.map +1 -1
  7. package/dist/agent/claude/approvals.js +2 -2
  8. package/dist/agent/claude/approvals.js.map +1 -1
  9. package/dist/agent/claude/backend.d.ts +1 -1
  10. package/dist/agent/claude/backend.d.ts.map +1 -1
  11. package/dist/agent/claude/backend.js +3 -2
  12. package/dist/agent/claude/backend.js.map +1 -1
  13. package/dist/agent/claude/jinion-tools.d.ts +3 -1
  14. package/dist/agent/claude/jinion-tools.d.ts.map +1 -1
  15. package/dist/agent/claude/jinion-tools.js +10 -1
  16. package/dist/agent/claude/jinion-tools.js.map +1 -1
  17. package/dist/agent/claude/options.d.ts +4 -1
  18. package/dist/agent/claude/options.d.ts.map +1 -1
  19. package/dist/agent/claude/options.js +6 -4
  20. package/dist/agent/claude/options.js.map +1 -1
  21. package/dist/agent/claude/policy.d.ts +1 -1
  22. package/dist/agent/claude/policy.d.ts.map +1 -1
  23. package/dist/agent/claude/policy.js +1 -0
  24. package/dist/agent/claude/policy.js.map +1 -1
  25. package/dist/agent/claude/prompt.d.ts +2 -1
  26. package/dist/agent/claude/prompt.d.ts.map +1 -1
  27. package/dist/agent/claude/prompt.js +3 -1
  28. package/dist/agent/claude/prompt.js.map +1 -1
  29. package/dist/agent/claude/session.d.ts +10 -2
  30. package/dist/agent/claude/session.d.ts.map +1 -1
  31. package/dist/agent/claude/session.js +14 -3
  32. package/dist/agent/claude/session.js.map +1 -1
  33. package/dist/agent/claude/tool-calls.d.ts.map +1 -1
  34. package/dist/agent/claude/tool-calls.js +11 -2
  35. package/dist/agent/claude/tool-calls.js.map +1 -1
  36. package/dist/agent/codex/approvals.d.ts +1 -1
  37. package/dist/agent/codex/approvals.d.ts.map +1 -1
  38. package/dist/agent/codex/approvals.js +1 -1
  39. package/dist/agent/codex/approvals.js.map +1 -1
  40. package/dist/agent/codex/backend.d.ts +1 -1
  41. package/dist/agent/codex/backend.d.ts.map +1 -1
  42. package/dist/agent/codex/backend.js +3 -2
  43. package/dist/agent/codex/backend.js.map +1 -1
  44. package/dist/agent/codex/events.d.ts.map +1 -1
  45. package/dist/agent/codex/events.js +7 -4
  46. package/dist/agent/codex/events.js.map +1 -1
  47. package/dist/agent/codex/jinion-tools.d.ts +27 -4
  48. package/dist/agent/codex/jinion-tools.d.ts.map +1 -1
  49. package/dist/agent/codex/jinion-tools.js +18 -4
  50. package/dist/agent/codex/jinion-tools.js.map +1 -1
  51. package/dist/agent/codex/modes.d.ts +2 -2
  52. package/dist/agent/codex/modes.d.ts.map +1 -1
  53. package/dist/agent/codex/modes.js +4 -3
  54. package/dist/agent/codex/modes.js.map +1 -1
  55. package/dist/agent/codex/session.d.ts +4 -1
  56. package/dist/agent/codex/session.d.ts.map +1 -1
  57. package/dist/agent/codex/session.js +5 -2
  58. package/dist/agent/codex/session.js.map +1 -1
  59. package/dist/agent/demo/script.d.ts +2 -2
  60. package/dist/agent/demo/sessions.d.ts.map +1 -1
  61. package/dist/agent/demo/sessions.js +26 -1
  62. package/dist/agent/demo/sessions.js.map +1 -1
  63. package/dist/agent/demo/tasks.d.ts +1 -1
  64. package/dist/agent/events.d.ts +1 -0
  65. package/dist/agent/events.d.ts.map +1 -1
  66. package/dist/agent/modes.d.ts +15 -1
  67. package/dist/agent/modes.d.ts.map +1 -1
  68. package/dist/agent/modes.js +16 -1
  69. package/dist/agent/modes.js.map +1 -1
  70. package/dist/agent/review.d.ts +8 -2
  71. package/dist/agent/review.d.ts.map +1 -1
  72. package/dist/agent/review.js +27 -7
  73. package/dist/agent/review.js.map +1 -1
  74. package/dist/api/client.d.ts +216 -4
  75. package/dist/api/client.d.ts.map +1 -1
  76. package/dist/api/connection.d.ts +54 -2
  77. package/dist/api/connection.d.ts.map +1 -1
  78. package/dist/api/connection.js +2 -0
  79. package/dist/api/connection.js.map +1 -1
  80. package/dist/api/fields.d.ts +235 -7
  81. package/dist/api/fields.d.ts.map +1 -1
  82. package/dist/api/fields.js +3 -1
  83. package/dist/api/fields.js.map +1 -1
  84. package/dist/api/json-schema.d.ts +831 -187
  85. package/dist/api/json-schema.d.ts.map +1 -1
  86. package/dist/api/methods/git.js +1 -1
  87. package/dist/api/methods/git.js.map +1 -1
  88. package/dist/api/methods/sessions.d.ts.map +1 -1
  89. package/dist/api/methods/sessions.js +3 -2
  90. package/dist/api/methods/sessions.js.map +1 -1
  91. package/dist/api/methods/team.d.ts +4 -0
  92. package/dist/api/methods/team.d.ts.map +1 -0
  93. package/dist/api/methods/team.js +30 -0
  94. package/dist/api/methods/team.js.map +1 -0
  95. package/dist/api/protocol.d.ts +791 -8
  96. package/dist/api/protocol.d.ts.map +1 -1
  97. package/dist/api/protocol.js +36 -5
  98. package/dist/api/protocol.js.map +1 -1
  99. package/dist/api/schemas.d.ts +504 -2
  100. package/dist/api/schemas.d.ts.map +1 -1
  101. package/dist/api/schemas.js +6 -0
  102. package/dist/api/schemas.js.map +1 -1
  103. package/dist/commands/agent.js +3 -3
  104. package/dist/commands/agent.js.map +1 -1
  105. package/dist/commands/builtin.d.ts.map +1 -1
  106. package/dist/commands/builtin.js +3 -0
  107. package/dist/commands/builtin.js.map +1 -1
  108. package/dist/commands/team.d.ts +4 -0
  109. package/dist/commands/team.d.ts.map +1 -0
  110. package/dist/commands/team.js +11 -0
  111. package/dist/commands/team.js.map +1 -0
  112. package/dist/controllers/context.d.ts +4 -0
  113. package/dist/controllers/context.d.ts.map +1 -1
  114. package/dist/controllers/context.js +4 -0
  115. package/dist/controllers/context.js.map +1 -1
  116. package/dist/controllers/conversation.d.ts +16 -0
  117. package/dist/controllers/conversation.d.ts.map +1 -1
  118. package/dist/controllers/decision-view.d.ts +20 -0
  119. package/dist/controllers/decision-view.d.ts.map +1 -0
  120. package/dist/controllers/decision-view.js +59 -0
  121. package/dist/controllers/decision-view.js.map +1 -0
  122. package/dist/controllers/decisions.d.ts +29 -0
  123. package/dist/controllers/decisions.d.ts.map +1 -0
  124. package/dist/controllers/decisions.js +199 -0
  125. package/dist/controllers/decisions.js.map +1 -0
  126. package/dist/controllers/jinion.d.ts +17 -1
  127. package/dist/controllers/jinion.d.ts.map +1 -1
  128. package/dist/controllers/jinion.js +89 -5
  129. package/dist/controllers/jinion.js.map +1 -1
  130. package/dist/controllers/mode.d.ts +8 -4
  131. package/dist/controllers/mode.d.ts.map +1 -1
  132. package/dist/controllers/mode.js +30 -4
  133. package/dist/controllers/mode.js.map +1 -1
  134. package/dist/controllers/session.d.ts +21 -1
  135. package/dist/controllers/session.d.ts.map +1 -1
  136. package/dist/controllers/session.js +64 -2
  137. package/dist/controllers/session.js.map +1 -1
  138. package/dist/controllers/team.d.ts +216 -0
  139. package/dist/controllers/team.d.ts.map +1 -0
  140. package/dist/controllers/team.js +208 -0
  141. package/dist/controllers/team.js.map +1 -0
  142. package/dist/controllers/turns.d.ts +7 -0
  143. package/dist/controllers/turns.d.ts.map +1 -1
  144. package/dist/controllers/turns.js +21 -4
  145. package/dist/controllers/turns.js.map +1 -1
  146. package/dist/conversation/dialogs.d.ts +1 -0
  147. package/dist/conversation/dialogs.d.ts.map +1 -1
  148. package/dist/conversation/entries.d.ts +36 -0
  149. package/dist/conversation/entries.d.ts.map +1 -1
  150. package/dist/conversation/entries.js +26 -0
  151. package/dist/conversation/entries.js.map +1 -1
  152. package/dist/conversation/reducer.d.ts +135 -0
  153. package/dist/conversation/reducer.d.ts.map +1 -1
  154. package/dist/conversation/reducer.js +30 -1
  155. package/dist/conversation/reducer.js.map +1 -1
  156. package/dist/conversation/session.d.ts +24 -0
  157. package/dist/conversation/session.d.ts.map +1 -1
  158. package/dist/conversation/store.d.ts +13 -0
  159. package/dist/conversation/store.d.ts.map +1 -1
  160. package/dist/conversation/store.js +31 -7
  161. package/dist/conversation/store.js.map +1 -1
  162. package/dist/feedback/shared.d.ts +16 -0
  163. package/dist/feedback/shared.d.ts.map +1 -1
  164. package/dist/git/repos.d.ts.map +1 -1
  165. package/dist/git/repos.js +3 -1
  166. package/dist/git/repos.js.map +1 -1
  167. package/dist/git/staging.d.ts +2 -2
  168. package/dist/git/staging.d.ts.map +1 -1
  169. package/dist/git/staging.js +3 -3
  170. package/dist/git/staging.js.map +1 -1
  171. package/dist/git/types.d.ts +2 -0
  172. package/dist/git/types.d.ts.map +1 -1
  173. package/dist/git/types.js +2 -0
  174. package/dist/git/types.js.map +1 -1
  175. package/dist/jinion-account/account.d.ts +178 -0
  176. package/dist/jinion-account/account.d.ts.map +1 -1
  177. package/dist/jinion-account/account.js +30 -0
  178. package/dist/jinion-account/account.js.map +1 -1
  179. package/dist/jinion-account/api.d.ts +169 -0
  180. package/dist/jinion-account/api.d.ts.map +1 -1
  181. package/dist/jinion-account/api.js +39 -1
  182. package/dist/jinion-account/api.js.map +1 -1
  183. package/dist/jinion-account/user.d.ts +22 -0
  184. package/dist/jinion-account/user.d.ts.map +1 -1
  185. package/dist/jinion-account/user.js +9 -0
  186. package/dist/jinion-account/user.js.map +1 -1
  187. package/dist/map/review.d.ts +6 -4
  188. package/dist/map/review.d.ts.map +1 -1
  189. package/dist/map/review.js +21 -7
  190. package/dist/map/review.js.map +1 -1
  191. package/dist/settings/user.d.ts +2 -0
  192. package/dist/settings/user.d.ts.map +1 -1
  193. package/dist/settings/user.js.map +1 -1
  194. package/dist/state/agent.d.ts +2 -2
  195. package/dist/state/jinion-account.d.ts +6 -0
  196. package/dist/state/jinion-account.d.ts.map +1 -1
  197. package/dist/state/session.d.ts +155 -5
  198. package/dist/state/session.d.ts.map +1 -1
  199. package/dist/state/session.js +2 -0
  200. package/dist/state/session.js.map +1 -1
  201. package/dist/state/team.d.ts +151 -0
  202. package/dist/state/team.d.ts.map +1 -0
  203. package/dist/state/team.js +4 -0
  204. package/dist/state/team.js.map +1 -0
  205. package/dist/team/anchoring.d.ts +9 -0
  206. package/dist/team/anchoring.d.ts.map +1 -0
  207. package/dist/team/anchoring.js +26 -0
  208. package/dist/team/anchoring.js.map +1 -0
  209. package/dist/team/config.d.ts +16 -0
  210. package/dist/team/config.d.ts.map +1 -0
  211. package/dist/team/config.js +37 -0
  212. package/dist/team/config.js.map +1 -0
  213. package/dist/team/decision.d.ts +255 -0
  214. package/dist/team/decision.d.ts.map +1 -0
  215. package/dist/team/decision.js +82 -0
  216. package/dist/team/decision.js.map +1 -0
  217. package/dist/team/decisions.d.ts +98 -0
  218. package/dist/team/decisions.d.ts.map +1 -0
  219. package/dist/team/decisions.js +166 -0
  220. package/dist/team/decisions.js.map +1 -0
  221. package/dist/team/history.d.ts +27 -0
  222. package/dist/team/history.d.ts.map +1 -0
  223. package/dist/team/history.js +49 -0
  224. package/dist/team/history.js.map +1 -0
  225. package/dist/team/prompt.d.ts +20 -0
  226. package/dist/team/prompt.d.ts.map +1 -0
  227. package/dist/team/prompt.js +44 -0
  228. package/dist/team/prompt.js.map +1 -0
  229. package/dist/team/repository.d.ts +12 -0
  230. package/dist/team/repository.d.ts.map +1 -0
  231. package/dist/team/repository.js +32 -0
  232. package/dist/team/repository.js.map +1 -0
  233. package/dist/team/secrets.d.ts +3 -0
  234. package/dist/team/secrets.d.ts.map +1 -0
  235. package/dist/team/secrets.js +18 -0
  236. package/dist/team/secrets.js.map +1 -0
  237. package/dist/team/tools.d.ts +82 -0
  238. package/dist/team/tools.d.ts.map +1 -0
  239. package/dist/team/tools.js +46 -0
  240. package/dist/team/tools.js.map +1 -0
  241. package/dist/team/types.d.ts +178 -0
  242. package/dist/team/types.d.ts.map +1 -0
  243. package/dist/team/types.js +60 -0
  244. package/dist/team/types.js.map +1 -0
  245. package/dist/team/visibility.d.ts +9 -0
  246. package/dist/team/visibility.d.ts.map +1 -0
  247. package/dist/team/visibility.js +36 -0
  248. package/dist/team/visibility.js.map +1 -0
  249. package/package.json +1 -1
  250. package/schema/api.json +3372 -503
@@ -80,6 +80,22 @@ export declare function sessionAtoms({ state: initial, features, selection: init
80
80
  added: number;
81
81
  removed: number;
82
82
  }[];
83
+ } | {
84
+ id: string;
85
+ kind: "decision";
86
+ decision: string;
87
+ title: string;
88
+ origin: "agent" | "asked" | "requested";
89
+ deleted?: boolean | undefined;
90
+ kept?: boolean | undefined;
91
+ by?: string | undefined;
92
+ madeAt?: string | undefined;
93
+ elsewhere?: {
94
+ branch: string | null;
95
+ pullRequest: number | null;
96
+ pullRequestState: "closed" | "merged" | "open" | null;
97
+ paths: string[];
98
+ } | undefined;
83
99
  } | {
84
100
  id: string;
85
101
  kind: "tool";
@@ -194,6 +210,22 @@ export declare function sessionAtoms({ state: initial, features, selection: init
194
210
  added: number;
195
211
  removed: number;
196
212
  }[];
213
+ } | {
214
+ id: string;
215
+ kind: "decision";
216
+ decision: string;
217
+ title: string;
218
+ origin: "agent" | "asked" | "requested";
219
+ deleted?: boolean | undefined;
220
+ kept?: boolean | undefined;
221
+ by?: string | undefined;
222
+ madeAt?: string | undefined;
223
+ elsewhere?: {
224
+ branch: string | null;
225
+ pullRequest: number | null;
226
+ pullRequestState: "closed" | "merged" | "open" | null;
227
+ paths: string[];
228
+ } | undefined;
197
229
  } | {
198
230
  id: string;
199
231
  kind: "tool";
@@ -365,7 +397,7 @@ export declare function sessionAtoms({ state: initial, features, selection: init
365
397
  }[];
366
398
  } | {
367
399
  type: "mode";
368
- mode: "auto" | "debug" | "edits" | "manual" | "plan";
400
+ mode: "auto" | "debug" | "edits" | "full" | "manual" | "plan";
369
401
  } | {
370
402
  type: "commands";
371
403
  commands: {
@@ -440,6 +472,34 @@ export declare function sessionAtoms({ state: initial, features, selection: init
440
472
  } | {
441
473
  type: "switch-agent";
442
474
  agent: string;
475
+ } | {
476
+ type: "decision";
477
+ decision: string;
478
+ title: string;
479
+ origin: "agent" | "asked" | "requested";
480
+ } | {
481
+ type: "decision-deleted";
482
+ decision: string;
483
+ } | {
484
+ type: "decision-kept";
485
+ decision: string;
486
+ title: string;
487
+ origin: "agent" | "asked" | "requested";
488
+ by: string;
489
+ madeAt?: string | undefined;
490
+ } | {
491
+ type: "decision-elsewhere";
492
+ decision: string;
493
+ title: string;
494
+ origin: "agent" | "asked" | "requested";
495
+ by: string;
496
+ madeAt: string;
497
+ elsewhere: {
498
+ branch: string | null;
499
+ pullRequest: number | null;
500
+ pullRequestState: "closed" | "merged" | "open" | null;
501
+ paths: string[];
502
+ };
443
503
  };
444
504
  at: number;
445
505
  }], void> & {
@@ -503,6 +563,22 @@ export declare function sessionAtoms({ state: initial, features, selection: init
503
563
  added: number;
504
564
  removed: number;
505
565
  }[];
566
+ } | {
567
+ id: string;
568
+ kind: "decision";
569
+ decision: string;
570
+ title: string;
571
+ origin: "agent" | "asked" | "requested";
572
+ deleted?: boolean | undefined;
573
+ kept?: boolean | undefined;
574
+ by?: string | undefined;
575
+ madeAt?: string | undefined;
576
+ elsewhere?: {
577
+ branch: string | null;
578
+ pullRequest: number | null;
579
+ pullRequestState: "closed" | "merged" | "open" | null;
580
+ paths: string[];
581
+ } | undefined;
506
582
  } | {
507
583
  id: string;
508
584
  kind: "tool";
@@ -606,8 +682,8 @@ export declare function sessionAtoms({ state: initial, features, selection: init
606
682
  };
607
683
  modelName: import("jotai/vanilla").Atom<string>;
608
684
  modelLabel: import("jotai/vanilla").Atom<string>;
609
- mode: import("jotai/vanilla").PrimitiveAtom<"auto" | "debug" | "edits" | "manual" | "plan"> & {
610
- init: "auto" | "debug" | "edits" | "manual" | "plan";
685
+ mode: import("jotai/vanilla").PrimitiveAtom<"auto" | "debug" | "edits" | "full" | "manual" | "plan"> & {
686
+ init: "auto" | "debug" | "edits" | "full" | "manual" | "plan";
611
687
  };
612
688
  tasks: import("jotai/vanilla").PrimitiveAtom<{
613
689
  id: string;
@@ -673,7 +749,7 @@ export declare function sessionAtoms({ state: initial, features, selection: init
673
749
  };
674
750
  } | {
675
751
  id: "plan";
676
- modes: ("auto" | "debug" | "edits" | "manual" | "plan")[];
752
+ modes: ("auto" | "debug" | "edits" | "full" | "manual" | "plan")[];
677
753
  } | undefined> & {
678
754
  init: {
679
755
  id: "ask";
@@ -700,7 +776,7 @@ export declare function sessionAtoms({ state: initial, features, selection: init
700
776
  };
701
777
  } | {
702
778
  id: "plan";
703
- modes: ("auto" | "debug" | "edits" | "manual" | "plan")[];
779
+ modes: ("auto" | "debug" | "edits" | "full" | "manual" | "plan")[];
704
780
  } | undefined;
705
781
  };
706
782
  /** The files put with its messages while it is open, each with how far reading it got. */
@@ -725,6 +801,80 @@ export declare function sessionAtoms({ state: initial, features, selection: init
725
801
  ratings: import("jotai/vanilla").PrimitiveAtom<Record<string, "disliked" | "liked">> & {
726
802
  init: Record<string, "disliked" | "liked">;
727
803
  };
804
+ /** The project's decisions as the HEAD of the folder it works in sees them; none outside a team the user is in. */
805
+ decisions: import("jotai/vanilla").PrimitiveAtom<{
806
+ decisions: {
807
+ id: string;
808
+ title: string;
809
+ decision: string;
810
+ reason: string;
811
+ turnedDown: string | null;
812
+ origin: "agent" | "asked" | "requested";
813
+ status: "active" | "archived" | "draft" | "superseded";
814
+ author: {
815
+ id: number;
816
+ name: string | null;
817
+ email: string;
818
+ } | null;
819
+ backend: string;
820
+ model: string;
821
+ branch: string | null;
822
+ baseCommit: string | null;
823
+ paths: string[];
824
+ symbols: string[];
825
+ supersedes: string | null;
826
+ supersededBy: string | null;
827
+ anchors: {
828
+ sha: string;
829
+ kind: "commit" | "merge";
830
+ pullRequest: number | null;
831
+ pullRequestState: "closed" | "merged" | "open" | null;
832
+ baseBranch: string | null;
833
+ }[];
834
+ createdAt: string;
835
+ updatedAt: string;
836
+ version: string;
837
+ state: "binding" | "draft" | "dropped" | "not-pulled" | "other-branch";
838
+ }[];
839
+ counts: Record<"binding" | "draft" | "dropped" | "not-pulled" | "other-branch", number>;
840
+ } | undefined> & {
841
+ init: {
842
+ decisions: {
843
+ id: string;
844
+ title: string;
845
+ decision: string;
846
+ reason: string;
847
+ turnedDown: string | null;
848
+ origin: "agent" | "asked" | "requested";
849
+ status: "active" | "archived" | "draft" | "superseded";
850
+ author: {
851
+ id: number;
852
+ name: string | null;
853
+ email: string;
854
+ } | null;
855
+ backend: string;
856
+ model: string;
857
+ branch: string | null;
858
+ baseCommit: string | null;
859
+ paths: string[];
860
+ symbols: string[];
861
+ supersedes: string | null;
862
+ supersededBy: string | null;
863
+ anchors: {
864
+ sha: string;
865
+ kind: "commit" | "merge";
866
+ pullRequest: number | null;
867
+ pullRequestState: "closed" | "merged" | "open" | null;
868
+ baseBranch: string | null;
869
+ }[];
870
+ createdAt: string;
871
+ updatedAt: string;
872
+ version: string;
873
+ state: "binding" | "draft" | "dropped" | "not-pulled" | "other-branch";
874
+ }[];
875
+ counts: Record<"binding" | "draft" | "dropped" | "not-pulled" | "other-branch", number>;
876
+ } | undefined;
877
+ };
728
878
  };
729
879
  export type SessionAtoms = ReturnType<typeof sessionAtoms>;
730
880
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/state/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK/D,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,sFAAsF;IACtF,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,2GAA2G;AAC3G,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,uHAAuH;AACvH,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiBhH,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAc/F,2GAA2G;;;;IAE3G,qDAAqD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWrD,gHAAgH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEhH,0FAA0F;;;;;;;;;;;;;;;;;;IAE1F,2EAA2E;;;;EAG9E;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/state/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM/D,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,sFAAsF;IACtF,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,2GAA2G;AAC3G,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,uHAAuH;AACvH,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiBhH,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAc/F,2GAA2G;;;;IAE3G,qDAAqD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWrD,gHAAgH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEhH,0FAA0F;;;;;;;;;;;;;;;;;;IAE1F,2EAA2E;;;;IAE3E,mHAAmH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGtH;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -53,6 +53,8 @@ export function sessionAtoms({ state: initial, features, selection: initialSelec
53
53
  attachments: atom([]),
54
54
  /** How the user rated each turn in this run, by the turn's first entry. */
55
55
  ratings: atom({}),
56
+ /** The project's decisions as the HEAD of the folder it works in sees them; none outside a team the user is in. */
57
+ decisions: atom(undefined),
56
58
  };
57
59
  }
58
60
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/state/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/state/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAuB,MAAM,oBAAoB,CAAC;AAIhF,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAsB,MAAM,4BAA4B,CAAC;AAKxE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAmB9C,uHAAuH;AACvH,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAgB;IAClH,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC;IACzD,yFAAyF;IACzF,MAAM,SAAS,GAAG,IAAI,CAA8B,SAAS,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEzC,4EAA4E;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAmB,EAAE,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAY,EAAE,CAAC,CAAC;IAEnC,OAAO;QACL,KAAK;QACL,+FAA+F;QAC/F,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAiB,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7G,OAAO;QACP,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QACtC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QACtC,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAC5C,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;QAClD,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC7B,SAAS;QACT,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,SAAS;QACT,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC;QACjE,KAAK,EAAE,IAAI,CAAe,EAAE,CAAC;QAC7B,2GAA2G;QAC3G,MAAM;QACN,qDAAqD;QACrD,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5D,KAAK;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;QACxB,SAAS;QACT,SAAS,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,UAAU,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;QAChB,KAAK;QACL,eAAe,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7E,qBAAqB,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QAC7G,gHAAgH;QAChH,MAAM,EAAE,IAAI,CAAqB,SAAS,CAAC;QAC3C,0FAA0F;QAC1F,WAAW,EAAE,IAAI,CAAe,EAAE,CAAC;QACnC,2EAA2E;QAC3E,OAAO,EAAE,IAAI,CAAyB,EAAE,CAAC;QACzC,mHAAmH;QACnH,SAAS,EAAE,IAAI,CAA8B,SAAS,CAAC;KACxD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,151 @@
1
+ /** Whether the project belongs to a team, and what its user may do there; unknown until it was first checked. */
2
+ export declare const teamAtom: import("jotai/vanilla").PrimitiveAtom<{
3
+ state: "unlinked";
4
+ } | {
5
+ state: "invalid";
6
+ problem: string;
7
+ } | {
8
+ state: "signed-out";
9
+ } | {
10
+ state: "member";
11
+ role: "admin" | "member" | "owner";
12
+ workspace: {
13
+ id: string;
14
+ name: string;
15
+ slug: string;
16
+ };
17
+ project: {
18
+ id: string;
19
+ name: string;
20
+ remoteUrl?: string | undefined;
21
+ };
22
+ } | {
23
+ state: "requested";
24
+ workspace: {
25
+ name: string;
26
+ };
27
+ } | {
28
+ state: "no-access";
29
+ workspace: {
30
+ name: string;
31
+ };
32
+ canRequest: boolean;
33
+ } | {
34
+ state: "not-found";
35
+ } | {
36
+ state: "mismatch";
37
+ } | {
38
+ state: "offline";
39
+ known?: {
40
+ state: "unlinked";
41
+ } | {
42
+ state: "invalid";
43
+ problem: string;
44
+ } | {
45
+ state: "signed-out";
46
+ } | {
47
+ state: "member";
48
+ role: "admin" | "member" | "owner";
49
+ workspace: {
50
+ id: string;
51
+ name: string;
52
+ slug: string;
53
+ };
54
+ project: {
55
+ id: string;
56
+ name: string;
57
+ remoteUrl?: string | undefined;
58
+ };
59
+ } | {
60
+ state: "requested";
61
+ workspace: {
62
+ name: string;
63
+ };
64
+ } | {
65
+ state: "no-access";
66
+ workspace: {
67
+ name: string;
68
+ };
69
+ canRequest: boolean;
70
+ } | {
71
+ state: "not-found";
72
+ } | {
73
+ state: "mismatch";
74
+ } | undefined;
75
+ } | undefined> & {
76
+ init: {
77
+ state: "unlinked";
78
+ } | {
79
+ state: "invalid";
80
+ problem: string;
81
+ } | {
82
+ state: "signed-out";
83
+ } | {
84
+ state: "member";
85
+ role: "admin" | "member" | "owner";
86
+ workspace: {
87
+ id: string;
88
+ name: string;
89
+ slug: string;
90
+ };
91
+ project: {
92
+ id: string;
93
+ name: string;
94
+ remoteUrl?: string | undefined;
95
+ };
96
+ } | {
97
+ state: "requested";
98
+ workspace: {
99
+ name: string;
100
+ };
101
+ } | {
102
+ state: "no-access";
103
+ workspace: {
104
+ name: string;
105
+ };
106
+ canRequest: boolean;
107
+ } | {
108
+ state: "not-found";
109
+ } | {
110
+ state: "mismatch";
111
+ } | {
112
+ state: "offline";
113
+ known?: {
114
+ state: "unlinked";
115
+ } | {
116
+ state: "invalid";
117
+ problem: string;
118
+ } | {
119
+ state: "signed-out";
120
+ } | {
121
+ state: "member";
122
+ role: "admin" | "member" | "owner";
123
+ workspace: {
124
+ id: string;
125
+ name: string;
126
+ slug: string;
127
+ };
128
+ project: {
129
+ id: string;
130
+ name: string;
131
+ remoteUrl?: string | undefined;
132
+ };
133
+ } | {
134
+ state: "requested";
135
+ workspace: {
136
+ name: string;
137
+ };
138
+ } | {
139
+ state: "no-access";
140
+ workspace: {
141
+ name: string;
142
+ };
143
+ canRequest: boolean;
144
+ } | {
145
+ state: "not-found";
146
+ } | {
147
+ state: "mismatch";
148
+ } | undefined;
149
+ } | undefined;
150
+ };
151
+ //# sourceMappingURL=team.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/state/team.ts"],"names":[],"mappings":"AAGA,iHAAiH;AACjH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { atom } from 'jotai/vanilla';
2
+ /** Whether the project belongs to a team, and what its user may do there; unknown until it was first checked. */
3
+ export const teamAtom = atom(undefined);
4
+ //# sourceMappingURL=team.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/state/team.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,iHAAiH;AACjH,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAwB,SAAS,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Decision } from './decision.js';
2
+ import type { Git } from './history.js';
3
+ /**
4
+ * The commit on `folder`'s branch that carries `draft`, however it was made: the first after its base that touches one
5
+ * of its paths, or the first at all for a draft without paths. A branch reset or rebased since the draft was recorded
6
+ * no longer has its base, so the search starts where the branch and the base part. Undefined while no commit carries it.
7
+ */
8
+ export declare function anchorOf(folder: string, draft: Pick<Decision, 'baseCommit' | 'paths'>, git: Git): Promise<string | undefined>;
9
+ //# sourceMappingURL=anchoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchoring.d.ts","sourceRoot":"","sources":["../../src/team/anchoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,+BA2BrG"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The commit on `folder`'s branch that carries `draft`, however it was made: the first after its base that touches one
3
+ * of its paths, or the first at all for a draft without paths. A branch reset or rebased since the draft was recorded
4
+ * no longer has its base, so the search starts where the branch and the base part. Undefined while no commit carries it.
5
+ */
6
+ export async function anchorOf(folder, draft, git) {
7
+ const succeeds = (args) => git(folder, args).then(() => true, () => false);
8
+ if (!draft.baseCommit || !(await succeeds(['cat-file', '-e', `${draft.baseCommit}^{commit}`])))
9
+ return undefined;
10
+ const base = (await succeeds(['merge-base', '--is-ancestor', draft.baseCommit, 'HEAD']))
11
+ ? draft.baseCommit
12
+ : (await git(folder, ['merge-base', draft.baseCommit, 'HEAD']).catch(() => '')).trim();
13
+ if (!base)
14
+ return undefined;
15
+ const log = await git(folder, ['log', '--reverse', '--ancestry-path', '--format=%x00%H', '--name-only', `${base}..HEAD`]);
16
+ const paths = new Set(draft.paths);
17
+ const commits = log
18
+ .split('\0')
19
+ .filter((chunk) => chunk.trim())
20
+ .map((chunk) => {
21
+ const [sha, ...files] = chunk.split('\n').filter(Boolean);
22
+ return { sha: sha, files };
23
+ });
24
+ return (paths.size === 0 ? commits[0] : commits.find((commit) => commit.files.some((file) => paths.has(file))))?.sha;
25
+ }
26
+ //# sourceMappingURL=anchoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchoring.js","sourceRoot":"","sources":["../../src/team/anchoring.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,KAA6C,EAAE,GAAQ;IACpG,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CACzD,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC;IAEF,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,WAAW,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAEjH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC,YAAY,EAAE,eAAe,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC,KAAK,CAAC,UAAU;QAClB,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzF,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC;IAC1H,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAG,GAAG;SAChB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE1D,OAAO,EAAE,GAAG,EAAE,GAAI,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACvH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { TeamConfig } from './types.js';
2
+ export type FoundConfig = {
3
+ path: string;
4
+ config: TeamConfig;
5
+ problem?: undefined;
6
+ } | {
7
+ path: string;
8
+ config?: undefined;
9
+ problem: string;
10
+ };
11
+ /** Where jinion.config.json is committed: git's top level, which a conversation's worktree has of its own; the folder itself outside git. */
12
+ export declare function repositoryRoot(folder: string): string;
13
+ /** The config at `root`, or why it can't be used; undefined where there is none. */
14
+ export declare function readConfig(root: string): FoundConfig | undefined;
15
+ export declare function writeConfig(root: string, ids: Pick<TeamConfig, 'workspaceId' | 'projectId'>): string;
16
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/team/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkC,UAAU,EAAE,MAAM,YAAY,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5I,6IAA6I;AAC7I,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,UAS5C;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAehE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,WAAW,CAAC,UAM3F"}
@@ -0,0 +1,37 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { join, resolve } from 'node:path';
4
+ import { z } from 'zod';
5
+ import { CONFIG_FILE, CONFIG_SCHEMA_URL, TeamConfig } from './types.js';
6
+ /** Where jinion.config.json is committed: git's top level, which a conversation's worktree has of its own; the folder itself outside git. */
7
+ export function repositoryRoot(folder) {
8
+ try {
9
+ // Relative, so the root is spelled like `folder` even through a symlink.
10
+ const up = execFileSync('git', ['rev-parse', '--show-cdup'], { cwd: folder, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
11
+ return resolve(folder, up);
12
+ }
13
+ catch {
14
+ return folder;
15
+ }
16
+ }
17
+ /** The config at `root`, or why it can't be used; undefined where there is none. */
18
+ export function readConfig(root) {
19
+ const path = join(root, CONFIG_FILE);
20
+ if (!existsSync(path))
21
+ return undefined;
22
+ let json;
23
+ try {
24
+ json = JSON.parse(readFileSync(path, 'utf8'));
25
+ }
26
+ catch {
27
+ return { path, problem: `${CONFIG_FILE} isn’t valid JSON.` };
28
+ }
29
+ const parsed = TeamConfig.safeParse(json);
30
+ return parsed.success ? { path, config: parsed.data } : { path, problem: `${CONFIG_FILE} doesn’t fit its schema:\n${z.prettifyError(parsed.error)}` };
31
+ }
32
+ export function writeConfig(root, ids) {
33
+ const path = join(root, CONFIG_FILE);
34
+ writeFileSync(path, `${JSON.stringify({ $schema: CONFIG_SCHEMA_URL, workspaceId: ids.workspaceId, projectId: ids.projectId }, null, 2)}\n`);
35
+ return path;
36
+ }
37
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/team/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIxE,6IAA6I;AAC7I,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,CAAC;QACH,yEAAyE;QACzE,MAAM,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAE5I,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAExC,IAAI,IAAa,CAAC;IAElB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,WAAW,oBAAoB,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,WAAW,6BAA6B,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AACxJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,GAAkD;IAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAErC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAE5I,OAAO,IAAI,CAAC;AACd,CAAC"}