@jinion/core 0.5.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 (217) hide show
  1. package/dist/agent/agent.d.ts +3 -0
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/agent.js.map +1 -1
  4. package/dist/agent/claude/backend.d.ts +1 -1
  5. package/dist/agent/claude/backend.d.ts.map +1 -1
  6. package/dist/agent/claude/backend.js +2 -1
  7. package/dist/agent/claude/backend.js.map +1 -1
  8. package/dist/agent/claude/jinion-tools.d.ts +3 -1
  9. package/dist/agent/claude/jinion-tools.d.ts.map +1 -1
  10. package/dist/agent/claude/jinion-tools.js +10 -1
  11. package/dist/agent/claude/jinion-tools.js.map +1 -1
  12. package/dist/agent/claude/options.d.ts +4 -1
  13. package/dist/agent/claude/options.d.ts.map +1 -1
  14. package/dist/agent/claude/options.js +4 -4
  15. package/dist/agent/claude/options.js.map +1 -1
  16. package/dist/agent/claude/prompt.d.ts +2 -1
  17. package/dist/agent/claude/prompt.d.ts.map +1 -1
  18. package/dist/agent/claude/prompt.js +3 -1
  19. package/dist/agent/claude/prompt.js.map +1 -1
  20. package/dist/agent/claude/session.d.ts +9 -1
  21. package/dist/agent/claude/session.d.ts.map +1 -1
  22. package/dist/agent/claude/session.js +13 -3
  23. package/dist/agent/claude/session.js.map +1 -1
  24. package/dist/agent/claude/tool-calls.d.ts.map +1 -1
  25. package/dist/agent/claude/tool-calls.js +11 -2
  26. package/dist/agent/claude/tool-calls.js.map +1 -1
  27. package/dist/agent/codex/backend.d.ts +1 -1
  28. package/dist/agent/codex/backend.d.ts.map +1 -1
  29. package/dist/agent/codex/backend.js +2 -1
  30. package/dist/agent/codex/backend.js.map +1 -1
  31. package/dist/agent/codex/events.d.ts.map +1 -1
  32. package/dist/agent/codex/events.js +7 -4
  33. package/dist/agent/codex/events.js.map +1 -1
  34. package/dist/agent/codex/jinion-tools.d.ts +27 -4
  35. package/dist/agent/codex/jinion-tools.d.ts.map +1 -1
  36. package/dist/agent/codex/jinion-tools.js +18 -4
  37. package/dist/agent/codex/jinion-tools.js.map +1 -1
  38. package/dist/agent/codex/session.d.ts +3 -0
  39. package/dist/agent/codex/session.d.ts.map +1 -1
  40. package/dist/agent/codex/session.js +5 -2
  41. package/dist/agent/codex/session.js.map +1 -1
  42. package/dist/agent/demo/scenarios/pricing-card.d.ts +3 -0
  43. package/dist/agent/demo/scenarios/pricing-card.d.ts.map +1 -0
  44. package/dist/agent/demo/scenarios/pricing-card.js +43 -0
  45. package/dist/agent/demo/scenarios/pricing-card.js.map +1 -0
  46. package/dist/agent/demo/sessions.d.ts.map +1 -1
  47. package/dist/agent/demo/sessions.js +26 -1
  48. package/dist/agent/demo/sessions.js.map +1 -1
  49. package/dist/agent/review.d.ts +8 -2
  50. package/dist/agent/review.d.ts.map +1 -1
  51. package/dist/agent/review.js +27 -7
  52. package/dist/agent/review.js.map +1 -1
  53. package/dist/api/client.d.ts +212 -0
  54. package/dist/api/client.d.ts.map +1 -1
  55. package/dist/api/connection.d.ts +52 -0
  56. package/dist/api/connection.d.ts.map +1 -1
  57. package/dist/api/connection.js +2 -0
  58. package/dist/api/connection.js.map +1 -1
  59. package/dist/api/fields.d.ts +229 -1
  60. package/dist/api/fields.d.ts.map +1 -1
  61. package/dist/api/fields.js +3 -1
  62. package/dist/api/fields.js.map +1 -1
  63. package/dist/api/json-schema.d.ts +819 -181
  64. package/dist/api/json-schema.d.ts.map +1 -1
  65. package/dist/api/methods/git.js +1 -1
  66. package/dist/api/methods/git.js.map +1 -1
  67. package/dist/api/methods/sessions.d.ts.map +1 -1
  68. package/dist/api/methods/sessions.js +3 -2
  69. package/dist/api/methods/sessions.js.map +1 -1
  70. package/dist/api/methods/team.d.ts +4 -0
  71. package/dist/api/methods/team.d.ts.map +1 -0
  72. package/dist/api/methods/team.js +30 -0
  73. package/dist/api/methods/team.js.map +1 -0
  74. package/dist/api/protocol.d.ts +779 -2
  75. package/dist/api/protocol.d.ts.map +1 -1
  76. package/dist/api/protocol.js +36 -5
  77. package/dist/api/protocol.js.map +1 -1
  78. package/dist/api/schemas.d.ts +496 -0
  79. package/dist/api/schemas.d.ts.map +1 -1
  80. package/dist/api/schemas.js +6 -0
  81. package/dist/api/schemas.js.map +1 -1
  82. package/dist/commands/builtin.d.ts.map +1 -1
  83. package/dist/commands/builtin.js +3 -0
  84. package/dist/commands/builtin.js.map +1 -1
  85. package/dist/commands/team.d.ts +4 -0
  86. package/dist/commands/team.d.ts.map +1 -0
  87. package/dist/commands/team.js +11 -0
  88. package/dist/commands/team.js.map +1 -0
  89. package/dist/controllers/context.d.ts +4 -0
  90. package/dist/controllers/context.d.ts.map +1 -1
  91. package/dist/controllers/context.js +4 -0
  92. package/dist/controllers/context.js.map +1 -1
  93. package/dist/controllers/conversation.d.ts +16 -0
  94. package/dist/controllers/conversation.d.ts.map +1 -1
  95. package/dist/controllers/decision-view.d.ts +20 -0
  96. package/dist/controllers/decision-view.d.ts.map +1 -0
  97. package/dist/controllers/decision-view.js +59 -0
  98. package/dist/controllers/decision-view.js.map +1 -0
  99. package/dist/controllers/decisions.d.ts +29 -0
  100. package/dist/controllers/decisions.d.ts.map +1 -0
  101. package/dist/controllers/decisions.js +199 -0
  102. package/dist/controllers/decisions.js.map +1 -0
  103. package/dist/controllers/jinion.d.ts +17 -1
  104. package/dist/controllers/jinion.d.ts.map +1 -1
  105. package/dist/controllers/jinion.js +89 -5
  106. package/dist/controllers/jinion.js.map +1 -1
  107. package/dist/controllers/session.d.ts +21 -1
  108. package/dist/controllers/session.d.ts.map +1 -1
  109. package/dist/controllers/session.js +63 -1
  110. package/dist/controllers/session.js.map +1 -1
  111. package/dist/controllers/team.d.ts +216 -0
  112. package/dist/controllers/team.d.ts.map +1 -0
  113. package/dist/controllers/team.js +208 -0
  114. package/dist/controllers/team.js.map +1 -0
  115. package/dist/controllers/turns.d.ts +6 -0
  116. package/dist/controllers/turns.d.ts.map +1 -1
  117. package/dist/controllers/turns.js +17 -7
  118. package/dist/controllers/turns.js.map +1 -1
  119. package/dist/conversation/entries.d.ts +36 -0
  120. package/dist/conversation/entries.d.ts.map +1 -1
  121. package/dist/conversation/entries.js +26 -0
  122. package/dist/conversation/entries.js.map +1 -1
  123. package/dist/conversation/reducer.d.ts +132 -0
  124. package/dist/conversation/reducer.d.ts.map +1 -1
  125. package/dist/conversation/reducer.js +30 -1
  126. package/dist/conversation/reducer.js.map +1 -1
  127. package/dist/conversation/session.d.ts +24 -0
  128. package/dist/conversation/session.d.ts.map +1 -1
  129. package/dist/conversation/store.d.ts +13 -0
  130. package/dist/conversation/store.d.ts.map +1 -1
  131. package/dist/conversation/store.js +31 -7
  132. package/dist/conversation/store.js.map +1 -1
  133. package/dist/feedback/shared.d.ts +16 -0
  134. package/dist/feedback/shared.d.ts.map +1 -1
  135. package/dist/git/repos.d.ts.map +1 -1
  136. package/dist/git/repos.js +3 -1
  137. package/dist/git/repos.js.map +1 -1
  138. package/dist/git/staging.d.ts +2 -2
  139. package/dist/git/staging.d.ts.map +1 -1
  140. package/dist/git/staging.js +3 -3
  141. package/dist/git/staging.js.map +1 -1
  142. package/dist/git/types.d.ts +2 -0
  143. package/dist/git/types.d.ts.map +1 -1
  144. package/dist/git/types.js +2 -0
  145. package/dist/git/types.js.map +1 -1
  146. package/dist/jinion-account/account.d.ts +178 -0
  147. package/dist/jinion-account/account.d.ts.map +1 -1
  148. package/dist/jinion-account/account.js +30 -0
  149. package/dist/jinion-account/account.js.map +1 -1
  150. package/dist/jinion-account/api.d.ts +169 -0
  151. package/dist/jinion-account/api.d.ts.map +1 -1
  152. package/dist/jinion-account/api.js +39 -1
  153. package/dist/jinion-account/api.js.map +1 -1
  154. package/dist/jinion-account/user.d.ts +22 -0
  155. package/dist/jinion-account/user.d.ts.map +1 -1
  156. package/dist/jinion-account/user.js +9 -0
  157. package/dist/jinion-account/user.js.map +1 -1
  158. package/dist/map/review.d.ts +6 -4
  159. package/dist/map/review.d.ts.map +1 -1
  160. package/dist/map/review.js +21 -7
  161. package/dist/map/review.js.map +1 -1
  162. package/dist/state/jinion-account.d.ts +6 -0
  163. package/dist/state/jinion-account.d.ts.map +1 -1
  164. package/dist/state/session.d.ts +150 -0
  165. package/dist/state/session.d.ts.map +1 -1
  166. package/dist/state/session.js +2 -0
  167. package/dist/state/session.js.map +1 -1
  168. package/dist/state/team.d.ts +151 -0
  169. package/dist/state/team.d.ts.map +1 -0
  170. package/dist/state/team.js +4 -0
  171. package/dist/state/team.js.map +1 -0
  172. package/dist/team/anchoring.d.ts +9 -0
  173. package/dist/team/anchoring.d.ts.map +1 -0
  174. package/dist/team/anchoring.js +26 -0
  175. package/dist/team/anchoring.js.map +1 -0
  176. package/dist/team/config.d.ts +16 -0
  177. package/dist/team/config.d.ts.map +1 -0
  178. package/dist/team/config.js +37 -0
  179. package/dist/team/config.js.map +1 -0
  180. package/dist/team/decision.d.ts +255 -0
  181. package/dist/team/decision.d.ts.map +1 -0
  182. package/dist/team/decision.js +82 -0
  183. package/dist/team/decision.js.map +1 -0
  184. package/dist/team/decisions.d.ts +98 -0
  185. package/dist/team/decisions.d.ts.map +1 -0
  186. package/dist/team/decisions.js +166 -0
  187. package/dist/team/decisions.js.map +1 -0
  188. package/dist/team/history.d.ts +27 -0
  189. package/dist/team/history.d.ts.map +1 -0
  190. package/dist/team/history.js +49 -0
  191. package/dist/team/history.js.map +1 -0
  192. package/dist/team/prompt.d.ts +20 -0
  193. package/dist/team/prompt.d.ts.map +1 -0
  194. package/dist/team/prompt.js +44 -0
  195. package/dist/team/prompt.js.map +1 -0
  196. package/dist/team/repository.d.ts +12 -0
  197. package/dist/team/repository.d.ts.map +1 -0
  198. package/dist/team/repository.js +32 -0
  199. package/dist/team/repository.js.map +1 -0
  200. package/dist/team/secrets.d.ts +3 -0
  201. package/dist/team/secrets.d.ts.map +1 -0
  202. package/dist/team/secrets.js +18 -0
  203. package/dist/team/secrets.js.map +1 -0
  204. package/dist/team/tools.d.ts +82 -0
  205. package/dist/team/tools.d.ts.map +1 -0
  206. package/dist/team/tools.js +46 -0
  207. package/dist/team/tools.js.map +1 -0
  208. package/dist/team/types.d.ts +178 -0
  209. package/dist/team/types.d.ts.map +1 -0
  210. package/dist/team/types.js +60 -0
  211. package/dist/team/types.js.map +1 -0
  212. package/dist/team/visibility.d.ts +9 -0
  213. package/dist/team/visibility.d.ts.map +1 -0
  214. package/dist/team/visibility.js +36 -0
  215. package/dist/team/visibility.js.map +1 -0
  216. package/package.json +1 -1
  217. package/schema/api.json +3371 -503
@@ -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"}
@@ -0,0 +1,255 @@
1
+ import { z } from 'zod';
2
+ /** `asked`: the user answered a question or approved a plan; `requested`: the user asked for it; `agent`: the agent's own call. */
3
+ export declare const DecisionOrigin: z.ZodEnum<{
4
+ agent: "agent";
5
+ asked: "asked";
6
+ requested: "requested";
7
+ }>;
8
+ export type DecisionOrigin = z.infer<typeof DecisionOrigin>;
9
+ /** How a decision came about, in the words its user reads in the apps. */
10
+ export declare const ORIGIN_WORDS: Record<DecisionOrigin, string>;
11
+ /** A `draft` is its author's alone until a commit carries it; `superseded` and `archived` bind no one. */
12
+ export declare const DecisionStatus: z.ZodEnum<{
13
+ active: "active";
14
+ archived: "archived";
15
+ draft: "draft";
16
+ superseded: "superseded";
17
+ }>;
18
+ export type DecisionStatus = z.infer<typeof DecisionStatus>;
19
+ /** A commit a decision is in; the pull request fields come from the GitHub App, when a project has it. */
20
+ export declare const DecisionAnchor: z.ZodObject<{
21
+ sha: z.ZodString;
22
+ kind: z.ZodEnum<{
23
+ commit: "commit";
24
+ merge: "merge";
25
+ }>;
26
+ pullRequest: z.ZodNullable<z.ZodNumber>;
27
+ pullRequestState: z.ZodNullable<z.ZodEnum<{
28
+ closed: "closed";
29
+ merged: "merged";
30
+ open: "open";
31
+ }>>;
32
+ baseBranch: z.ZodNullable<z.ZodString>;
33
+ }, z.core.$strip>;
34
+ export type DecisionAnchor = z.infer<typeof DecisionAnchor>;
35
+ /** Why a project's code is the way it is, as an agent recorded it, at api.jinion.co. */
36
+ export declare const Decision: z.ZodObject<{
37
+ id: z.ZodString;
38
+ title: z.ZodString;
39
+ decision: z.ZodString;
40
+ reason: z.ZodString;
41
+ turnedDown: z.ZodNullable<z.ZodString>;
42
+ origin: z.ZodEnum<{
43
+ agent: "agent";
44
+ asked: "asked";
45
+ requested: "requested";
46
+ }>;
47
+ status: z.ZodEnum<{
48
+ active: "active";
49
+ archived: "archived";
50
+ draft: "draft";
51
+ superseded: "superseded";
52
+ }>;
53
+ author: z.ZodNullable<z.ZodObject<{
54
+ id: z.ZodNumber;
55
+ name: z.ZodNullable<z.ZodString>;
56
+ email: z.ZodString;
57
+ }, z.core.$strip>>;
58
+ backend: z.ZodString;
59
+ model: z.ZodString;
60
+ branch: z.ZodNullable<z.ZodString>;
61
+ baseCommit: z.ZodNullable<z.ZodString>;
62
+ paths: z.ZodArray<z.ZodString>;
63
+ symbols: z.ZodArray<z.ZodString>;
64
+ supersedes: z.ZodNullable<z.ZodString>;
65
+ supersededBy: z.ZodNullable<z.ZodString>;
66
+ anchors: z.ZodArray<z.ZodObject<{
67
+ sha: z.ZodString;
68
+ kind: z.ZodEnum<{
69
+ commit: "commit";
70
+ merge: "merge";
71
+ }>;
72
+ pullRequest: z.ZodNullable<z.ZodNumber>;
73
+ pullRequestState: z.ZodNullable<z.ZodEnum<{
74
+ closed: "closed";
75
+ merged: "merged";
76
+ open: "open";
77
+ }>>;
78
+ baseBranch: z.ZodNullable<z.ZodString>;
79
+ }, z.core.$strip>>;
80
+ createdAt: z.ZodString;
81
+ updatedAt: z.ZodString;
82
+ version: z.ZodString;
83
+ }, z.core.$strip>;
84
+ export type Decision = z.infer<typeof Decision>;
85
+ /** What a client sends to record one; `anchors` when a commit already carries it, which makes it active at once. */
86
+ export declare const DecisionDraft: z.ZodObject<{
87
+ title: z.ZodString;
88
+ decision: z.ZodString;
89
+ reason: z.ZodString;
90
+ turnedDown: z.ZodOptional<z.ZodString>;
91
+ origin: z.ZodEnum<{
92
+ agent: "agent";
93
+ asked: "asked";
94
+ requested: "requested";
95
+ }>;
96
+ backend: z.ZodString;
97
+ model: z.ZodString;
98
+ branch: z.ZodOptional<z.ZodString>;
99
+ baseCommit: z.ZodOptional<z.ZodString>;
100
+ paths: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
+ symbols: z.ZodOptional<z.ZodArray<z.ZodString>>;
102
+ anchors: z.ZodOptional<z.ZodArray<z.ZodString>>;
103
+ supersedes: z.ZodOptional<z.ZodString>;
104
+ repository: z.ZodObject<{
105
+ remoteUrl: z.ZodString;
106
+ rootCommit: z.ZodString;
107
+ }, z.core.$strip>;
108
+ }, z.core.$strip>;
109
+ export type DecisionDraft = z.infer<typeof DecisionDraft>;
110
+ /** A decision deleted since a client synced it, which it drops from its copy. */
111
+ export declare const DecisionTombstone: z.ZodObject<{
112
+ id: z.ZodString;
113
+ deleted: z.ZodLiteral<true>;
114
+ version: z.ZodString;
115
+ }, z.core.$strip>;
116
+ export type DecisionTombstone = z.infer<typeof DecisionTombstone>;
117
+ /**
118
+ * Where a decision stands for the HEAD a session works on, from git alone. `binding`: a commit HEAD has carries it, so
119
+ * the agent keeps to it. `not-pulled`: the branch's upstream has it, as of the last fetch. `other-branch`: it waits on
120
+ * another branch or in a pull request. `dropped`: archived, superseded, or its pull request closed unmerged; not shown.
121
+ * `draft`: the user's own, not in a commit yet.
122
+ */
123
+ export declare const DecisionState: z.ZodEnum<{
124
+ binding: "binding";
125
+ draft: "draft";
126
+ dropped: "dropped";
127
+ "not-pulled": "not-pulled";
128
+ "other-branch": "other-branch";
129
+ }>;
130
+ export type DecisionState = z.infer<typeof DecisionState>;
131
+ /** A session's view of the project's decisions: those shown, in the order of their states, and how many are in each. */
132
+ export declare const SortedDecisions: z.ZodObject<{
133
+ decisions: z.ZodArray<z.ZodObject<{
134
+ id: z.ZodString;
135
+ title: z.ZodString;
136
+ decision: z.ZodString;
137
+ reason: z.ZodString;
138
+ turnedDown: z.ZodNullable<z.ZodString>;
139
+ origin: z.ZodEnum<{
140
+ agent: "agent";
141
+ asked: "asked";
142
+ requested: "requested";
143
+ }>;
144
+ status: z.ZodEnum<{
145
+ active: "active";
146
+ archived: "archived";
147
+ draft: "draft";
148
+ superseded: "superseded";
149
+ }>;
150
+ author: z.ZodNullable<z.ZodObject<{
151
+ id: z.ZodNumber;
152
+ name: z.ZodNullable<z.ZodString>;
153
+ email: z.ZodString;
154
+ }, z.core.$strip>>;
155
+ backend: z.ZodString;
156
+ model: z.ZodString;
157
+ branch: z.ZodNullable<z.ZodString>;
158
+ baseCommit: z.ZodNullable<z.ZodString>;
159
+ paths: z.ZodArray<z.ZodString>;
160
+ symbols: z.ZodArray<z.ZodString>;
161
+ supersedes: z.ZodNullable<z.ZodString>;
162
+ supersededBy: z.ZodNullable<z.ZodString>;
163
+ anchors: z.ZodArray<z.ZodObject<{
164
+ sha: z.ZodString;
165
+ kind: z.ZodEnum<{
166
+ commit: "commit";
167
+ merge: "merge";
168
+ }>;
169
+ pullRequest: z.ZodNullable<z.ZodNumber>;
170
+ pullRequestState: z.ZodNullable<z.ZodEnum<{
171
+ closed: "closed";
172
+ merged: "merged";
173
+ open: "open";
174
+ }>>;
175
+ baseBranch: z.ZodNullable<z.ZodString>;
176
+ }, z.core.$strip>>;
177
+ createdAt: z.ZodString;
178
+ updatedAt: z.ZodString;
179
+ version: z.ZodString;
180
+ state: z.ZodEnum<{
181
+ binding: "binding";
182
+ draft: "draft";
183
+ dropped: "dropped";
184
+ "not-pulled": "not-pulled";
185
+ "other-branch": "other-branch";
186
+ }>;
187
+ }, z.core.$strip>>;
188
+ counts: z.ZodRecord<z.ZodEnum<{
189
+ binding: "binding";
190
+ draft: "draft";
191
+ dropped: "dropped";
192
+ "not-pulled": "not-pulled";
193
+ "other-branch": "other-branch";
194
+ }>, z.ZodNumber>;
195
+ }, z.core.$strip>;
196
+ export type SortedDecisions = z.infer<typeof SortedDecisions>;
197
+ /** What changed since a cursor, oldest first; `more` asks for the next page from `cursor`. */
198
+ export declare const DecisionChanges: z.ZodObject<{
199
+ changes: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
200
+ id: z.ZodString;
201
+ title: z.ZodString;
202
+ decision: z.ZodString;
203
+ reason: z.ZodString;
204
+ turnedDown: z.ZodNullable<z.ZodString>;
205
+ origin: z.ZodEnum<{
206
+ agent: "agent";
207
+ asked: "asked";
208
+ requested: "requested";
209
+ }>;
210
+ status: z.ZodEnum<{
211
+ active: "active";
212
+ archived: "archived";
213
+ draft: "draft";
214
+ superseded: "superseded";
215
+ }>;
216
+ author: z.ZodNullable<z.ZodObject<{
217
+ id: z.ZodNumber;
218
+ name: z.ZodNullable<z.ZodString>;
219
+ email: z.ZodString;
220
+ }, z.core.$strip>>;
221
+ backend: z.ZodString;
222
+ model: z.ZodString;
223
+ branch: z.ZodNullable<z.ZodString>;
224
+ baseCommit: z.ZodNullable<z.ZodString>;
225
+ paths: z.ZodArray<z.ZodString>;
226
+ symbols: z.ZodArray<z.ZodString>;
227
+ supersedes: z.ZodNullable<z.ZodString>;
228
+ supersededBy: z.ZodNullable<z.ZodString>;
229
+ anchors: z.ZodArray<z.ZodObject<{
230
+ sha: z.ZodString;
231
+ kind: z.ZodEnum<{
232
+ commit: "commit";
233
+ merge: "merge";
234
+ }>;
235
+ pullRequest: z.ZodNullable<z.ZodNumber>;
236
+ pullRequestState: z.ZodNullable<z.ZodEnum<{
237
+ closed: "closed";
238
+ merged: "merged";
239
+ open: "open";
240
+ }>>;
241
+ baseBranch: z.ZodNullable<z.ZodString>;
242
+ }, z.core.$strip>>;
243
+ createdAt: z.ZodString;
244
+ updatedAt: z.ZodString;
245
+ version: z.ZodString;
246
+ }, z.core.$strip>, z.ZodObject<{
247
+ id: z.ZodString;
248
+ deleted: z.ZodLiteral<true>;
249
+ version: z.ZodString;
250
+ }, z.core.$strip>]>>;
251
+ cursor: z.ZodString;
252
+ more: z.ZodBoolean;
253
+ }, z.core.$strip>;
254
+ export type DecisionChanges = z.infer<typeof DecisionChanges>;
255
+ //# sourceMappingURL=decision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../../src/team/decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,mIAAmI;AACnI,eAAO,MAAM,cAAc;;;;EAA0C,CAAC;AAEtE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,0EAA0E;AAC1E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAmF,CAAC;AAE5I,0GAA0G;AAC1G,eAAO,MAAM,cAAc;;;;;EAAwD,CAAC;AAEpF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,0GAA0G;AAC1G,eAAO,MAAM,cAAc;;;;;;;;;;;;;iBAOzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,wFAAwF;AACxF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyBnB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,oHAAoH;AACpH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;iBAgBxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,iFAAiF;AACjF,eAAO,MAAM,iBAAiB;;;;iBAA8E,CAAC;AAE7G,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;;;EAAwE,CAAC;AAEnG,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wHAAwH;AACxH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAG1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,8FAA8F;AAC9F,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { z } from 'zod';
2
+ /** `asked`: the user answered a question or approved a plan; `requested`: the user asked for it; `agent`: the agent's own call. */
3
+ export const DecisionOrigin = z.enum(['asked', 'requested', 'agent']);
4
+ /** How a decision came about, in the words its user reads in the apps. */
5
+ export const ORIGIN_WORDS = { requested: 'you asked for it', asked: 'from your answer', agent: 'its call' };
6
+ /** A `draft` is its author's alone until a commit carries it; `superseded` and `archived` bind no one. */
7
+ export const DecisionStatus = z.enum(['draft', 'active', 'superseded', 'archived']);
8
+ /** A commit a decision is in; the pull request fields come from the GitHub App, when a project has it. */
9
+ export const DecisionAnchor = z.object({
10
+ sha: z.string(),
11
+ /** `commit` from its author's client, `merge` from the GitHub App after a squash or rebase merge. */
12
+ kind: z.enum(['commit', 'merge']),
13
+ pullRequest: z.number().int().nullable(),
14
+ pullRequestState: z.enum(['open', 'merged', 'closed']).nullable(),
15
+ baseBranch: z.string().nullable(),
16
+ });
17
+ /** Why a project's code is the way it is, as an agent recorded it, at api.jinion.co. */
18
+ export const Decision = z.object({
19
+ id: z.string(),
20
+ title: z.string(),
21
+ decision: z.string(),
22
+ reason: z.string(),
23
+ /** The alternatives and why they lost. */
24
+ turnedDown: z.string().nullable(),
25
+ origin: DecisionOrigin,
26
+ status: DecisionStatus,
27
+ /** Null once its author's account is gone. */
28
+ author: z.object({ id: z.number(), name: z.string().nullable(), email: z.string() }).nullable(),
29
+ backend: z.string(),
30
+ model: z.string(),
31
+ /** Where it was made, and HEAD then. */
32
+ branch: z.string().nullable(),
33
+ baseCommit: z.string().nullable(),
34
+ paths: z.array(z.string()),
35
+ symbols: z.array(z.string()),
36
+ supersedes: z.string().nullable(),
37
+ supersededBy: z.string().nullable(),
38
+ anchors: z.array(DecisionAnchor),
39
+ createdAt: z.string(),
40
+ updatedAt: z.string(),
41
+ /** The sync cursor this change has; a later change has a larger one. */
42
+ version: z.string(),
43
+ });
44
+ /** What a client sends to record one; `anchors` when a commit already carries it, which makes it active at once. */
45
+ export const DecisionDraft = z.object({
46
+ title: z.string(),
47
+ decision: z.string(),
48
+ reason: z.string(),
49
+ turnedDown: z.string().optional(),
50
+ origin: DecisionOrigin,
51
+ backend: z.string(),
52
+ model: z.string(),
53
+ branch: z.string().optional(),
54
+ baseCommit: z.string().optional(),
55
+ paths: z.array(z.string()).optional(),
56
+ symbols: z.array(z.string()).optional(),
57
+ anchors: z.array(z.string()).optional(),
58
+ supersedes: z.string().optional(),
59
+ /** The clone it is written from, which has to be the project's repository. */
60
+ repository: z.object({ remoteUrl: z.string(), rootCommit: z.string() }),
61
+ });
62
+ /** A decision deleted since a client synced it, which it drops from its copy. */
63
+ export const DecisionTombstone = z.object({ id: z.string(), deleted: z.literal(true), version: z.string() });
64
+ /**
65
+ * Where a decision stands for the HEAD a session works on, from git alone. `binding`: a commit HEAD has carries it, so
66
+ * the agent keeps to it. `not-pulled`: the branch's upstream has it, as of the last fetch. `other-branch`: it waits on
67
+ * another branch or in a pull request. `dropped`: archived, superseded, or its pull request closed unmerged; not shown.
68
+ * `draft`: the user's own, not in a commit yet.
69
+ */
70
+ export const DecisionState = z.enum(['binding', 'not-pulled', 'other-branch', 'dropped', 'draft']);
71
+ /** A session's view of the project's decisions: those shown, in the order of their states, and how many are in each. */
72
+ export const SortedDecisions = z.object({
73
+ decisions: z.array(Decision.extend({ state: DecisionState })),
74
+ counts: z.record(DecisionState, z.number().int()),
75
+ });
76
+ /** What changed since a cursor, oldest first; `more` asks for the next page from `cursor`. */
77
+ export const DecisionChanges = z.object({
78
+ changes: z.array(z.union([Decision, DecisionTombstone])),
79
+ cursor: z.string(),
80
+ more: z.boolean(),
81
+ });
82
+ //# sourceMappingURL=decision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision.js","sourceRoot":"","sources":["../../src/team/decision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import type { JinionAccount } from '../jinion-account/account.js';
2
+ import type { Decision, DecisionDraft } from './decision.js';
3
+ import type { RepositoryIdentity } from './repository.js';
4
+ /**
5
+ * The project's decisions, as a copy under ~/.jinion that its sessions read without a network: never in the repository,
6
+ * kept up to date from api.jinion.co, and gone once the user loses access.
7
+ */
8
+ export declare class DecisionStore {
9
+ readonly projectId: string;
10
+ private readonly account;
11
+ /** After every change to the copy, such as one a sync took in. */
12
+ private readonly changed;
13
+ private readonly file;
14
+ constructor(projectId: string, account: JinionAccount,
15
+ /** After every change to the copy, such as one a sync took in. */
16
+ changed?: () => void);
17
+ all(): {
18
+ id: string;
19
+ title: string;
20
+ decision: string;
21
+ reason: string;
22
+ turnedDown: string | null;
23
+ origin: "agent" | "asked" | "requested";
24
+ status: "active" | "archived" | "draft" | "superseded";
25
+ author: {
26
+ id: number;
27
+ name: string | null;
28
+ email: string;
29
+ } | null;
30
+ backend: string;
31
+ model: string;
32
+ branch: string | null;
33
+ baseCommit: string | null;
34
+ paths: string[];
35
+ symbols: string[];
36
+ supersedes: string | null;
37
+ supersededBy: string | null;
38
+ anchors: {
39
+ sha: string;
40
+ kind: "commit" | "merge";
41
+ pullRequest: number | null;
42
+ pullRequestState: "closed" | "merged" | "open" | null;
43
+ baseBranch: string | null;
44
+ }[];
45
+ createdAt: string;
46
+ updatedAt: string;
47
+ version: string;
48
+ }[];
49
+ get(id: string): {
50
+ id: string;
51
+ title: string;
52
+ decision: string;
53
+ reason: string;
54
+ turnedDown: string | null;
55
+ origin: "agent" | "asked" | "requested";
56
+ status: "active" | "archived" | "draft" | "superseded";
57
+ author: {
58
+ id: number;
59
+ name: string | null;
60
+ email: string;
61
+ } | null;
62
+ backend: string;
63
+ model: string;
64
+ branch: string | null;
65
+ baseCommit: string | null;
66
+ paths: string[];
67
+ symbols: string[];
68
+ supersedes: string | null;
69
+ supersededBy: string | null;
70
+ anchors: {
71
+ sha: string;
72
+ kind: "commit" | "merge";
73
+ pullRequest: number | null;
74
+ pullRequestState: "closed" | "merged" | "open" | null;
75
+ baseBranch: string | null;
76
+ }[];
77
+ createdAt: string;
78
+ updatedAt: string;
79
+ version: string;
80
+ } | undefined;
81
+ /** Sends what waits, then takes in every change since the last sync. */
82
+ sync(): Promise<void>;
83
+ /** Sent at once; while the API can't be reached, kept here under a local id and sent with the next sync. */
84
+ record(draft: DecisionDraft): Promise<Decision>;
85
+ delete(id: string): Promise<void>;
86
+ /** Its author's client telling which commit carries it; offline, it is anchored again at the next check. */
87
+ anchor(id: string, shas: string[], repository: RepositoryIdentity): Promise<void>;
88
+ /** As the user lost access to the project, or signed out. */
89
+ purge(): void;
90
+ /** The waiting writes in order, until the API can't be reached again; one it refuses for good is dropped. */
91
+ private flush;
92
+ private send;
93
+ /** How a decision recorded offline shows until the API has it: its author's draft. */
94
+ private waiting;
95
+ private saved;
96
+ private update;
97
+ }
98
+ //# sourceMappingURL=decisions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../../src/team/decisions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAgB1D;;;GAGG;AACH,qBAAa,aAAa;IAItB,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAE9B,YACW,SAAS,EAAE,MAAM,EACT,OAAO,EAAE,aAAa;IACvC,kEAAkE;IACjD,OAAO,GAAE,MAAM,IAAe,EAGhD;IAED,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAEF;IAED,GAAG,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAIb;IAED,wEAAwE;IAClE,IAAI,kBAmBT;IAED,4GAA4G;IACtG,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgBpD;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,iBAkBtB;IAED,4GAA4G;IACtG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,kBAAkB,iBAQtE;IAED,6DAA6D;IAC7D,KAAK,SAEJ;IAED,6GAA6G;YAC/F,KAAK;YAgBL,IAAI;IAYlB,sFAAsF;IACtF,OAAO,CAAC,OAAO;IA4Bf,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,MAAM;CAIf"}