@qelos/aidev 0.5.1 → 0.5.3

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 (106) hide show
  1. package/.aidev/assets/86c8yjxrr/9ea11c36-311c-4022-889c-1bb0915122dc.jpg-40e6939e3b68e864260f7ae7e85bd623_exif.jpg +0 -0
  2. package/.env.aidev.example +92 -84
  3. package/CONTRIBUTING.md +78 -78
  4. package/LICENSE +21 -21
  5. package/README.md +735 -622
  6. package/dist/autoCompress.d.ts +54 -0
  7. package/dist/autoCompress.d.ts.map +1 -0
  8. package/dist/autoCompress.js +300 -0
  9. package/dist/autoCompress.js.map +1 -0
  10. package/dist/cli.js +13 -0
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/accepted.d.ts +7 -2
  13. package/dist/commands/accepted.d.ts.map +1 -1
  14. package/dist/commands/accepted.js +17 -2
  15. package/dist/commands/accepted.js.map +1 -1
  16. package/dist/commands/help.d.ts.map +1 -1
  17. package/dist/commands/help.js +80 -67
  18. package/dist/commands/help.js.map +1 -1
  19. package/dist/commands/init.js +105 -105
  20. package/dist/commands/run.d.ts +9 -1
  21. package/dist/commands/run.d.ts.map +1 -1
  22. package/dist/commands/run.js +307 -140
  23. package/dist/commands/run.js.map +1 -1
  24. package/dist/commands/tasks.d.ts +1 -0
  25. package/dist/commands/tasks.d.ts.map +1 -1
  26. package/dist/commands/tasks.js +29 -0
  27. package/dist/commands/tasks.js.map +1 -1
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +6 -0
  30. package/dist/config.js.map +1 -1
  31. package/dist/github.js +27 -27
  32. package/dist/hooks.d.ts +1 -1
  33. package/dist/hooks.d.ts.map +1 -1
  34. package/dist/providers/linear.d.ts +4 -1
  35. package/dist/providers/linear.d.ts.map +1 -1
  36. package/dist/providers/linear.js +142 -78
  37. package/dist/providers/linear.js.map +1 -1
  38. package/dist/providers/monday.js +39 -39
  39. package/dist/sessions.d.ts +20 -0
  40. package/dist/sessions.d.ts.map +1 -0
  41. package/dist/sessions.js +171 -0
  42. package/dist/sessions.js.map +1 -0
  43. package/dist/types.d.ts +2 -0
  44. package/dist/types.d.ts.map +1 -1
  45. package/package.json +51 -51
  46. package/scripts/run-tests.cjs +18 -18
  47. package/dist/__tests__/ai-runners.test.d.ts +0 -2
  48. package/dist/__tests__/ai-runners.test.d.ts.map +0 -1
  49. package/dist/__tests__/ai-runners.test.js +0 -367
  50. package/dist/__tests__/ai-runners.test.js.map +0 -1
  51. package/dist/__tests__/clickup-format.test.d.ts +0 -2
  52. package/dist/__tests__/clickup-format.test.d.ts.map +0 -1
  53. package/dist/__tests__/clickup-format.test.js +0 -256
  54. package/dist/__tests__/clickup-format.test.js.map +0 -1
  55. package/dist/__tests__/config.test.d.ts +0 -2
  56. package/dist/__tests__/config.test.d.ts.map +0 -1
  57. package/dist/__tests__/config.test.js +0 -418
  58. package/dist/__tests__/config.test.js.map +0 -1
  59. package/dist/__tests__/git.test.d.ts +0 -2
  60. package/dist/__tests__/git.test.d.ts.map +0 -1
  61. package/dist/__tests__/git.test.js +0 -697
  62. package/dist/__tests__/git.test.js.map +0 -1
  63. package/dist/__tests__/github.test.d.ts +0 -2
  64. package/dist/__tests__/github.test.d.ts.map +0 -1
  65. package/dist/__tests__/github.test.js +0 -273
  66. package/dist/__tests__/github.test.js.map +0 -1
  67. package/dist/__tests__/help.test.d.ts +0 -2
  68. package/dist/__tests__/help.test.d.ts.map +0 -1
  69. package/dist/__tests__/help.test.js +0 -34
  70. package/dist/__tests__/help.test.js.map +0 -1
  71. package/dist/__tests__/hooks.test.d.ts +0 -2
  72. package/dist/__tests__/hooks.test.d.ts.map +0 -1
  73. package/dist/__tests__/hooks.test.js +0 -381
  74. package/dist/__tests__/hooks.test.js.map +0 -1
  75. package/dist/__tests__/init.test.d.ts +0 -2
  76. package/dist/__tests__/init.test.d.ts.map +0 -1
  77. package/dist/__tests__/init.test.js +0 -596
  78. package/dist/__tests__/init.test.js.map +0 -1
  79. package/dist/__tests__/local-provider.test.d.ts +0 -2
  80. package/dist/__tests__/local-provider.test.d.ts.map +0 -1
  81. package/dist/__tests__/local-provider.test.js +0 -631
  82. package/dist/__tests__/local-provider.test.js.map +0 -1
  83. package/dist/__tests__/lockfile.test.d.ts +0 -2
  84. package/dist/__tests__/lockfile.test.d.ts.map +0 -1
  85. package/dist/__tests__/lockfile.test.js +0 -144
  86. package/dist/__tests__/lockfile.test.js.map +0 -1
  87. package/dist/__tests__/permissions.test.d.ts +0 -2
  88. package/dist/__tests__/permissions.test.d.ts.map +0 -1
  89. package/dist/__tests__/permissions.test.js +0 -151
  90. package/dist/__tests__/permissions.test.js.map +0 -1
  91. package/dist/__tests__/platform.test.d.ts +0 -2
  92. package/dist/__tests__/platform.test.d.ts.map +0 -1
  93. package/dist/__tests__/platform.test.js +0 -329
  94. package/dist/__tests__/platform.test.js.map +0 -1
  95. package/dist/__tests__/providers.test.d.ts +0 -2
  96. package/dist/__tests__/providers.test.d.ts.map +0 -1
  97. package/dist/__tests__/providers.test.js +0 -925
  98. package/dist/__tests__/providers.test.js.map +0 -1
  99. package/dist/__tests__/run.test.d.ts +0 -2
  100. package/dist/__tests__/run.test.d.ts.map +0 -1
  101. package/dist/__tests__/run.test.js +0 -767
  102. package/dist/__tests__/run.test.js.map +0 -1
  103. package/dist/__tests__/schedule.test.d.ts +0 -2
  104. package/dist/__tests__/schedule.test.d.ts.map +0 -1
  105. package/dist/__tests__/schedule.test.js +0 -258
  106. package/dist/__tests__/schedule.test.js.map +0 -1
@@ -4,10 +4,16 @@ exports.LinearProvider = void 0;
4
4
  const logger_1 = require("../logger");
5
5
  const LINEAR_GRAPHQL = 'https://api.linear.app/graphql';
6
6
  const SKIP_STATE_TYPES = new Set(['completed', 'canceled']);
7
+ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
8
+ function formatLinearError(e) {
9
+ const detail = e.extensions?.userPresentableMessage;
10
+ return detail ? `${e.message} (${detail})` : e.message;
11
+ }
7
12
  class LinearProvider {
8
13
  constructor(config) {
14
+ this.resolvedTeamId = null;
9
15
  this.apiKey = config.linearApiKey;
10
- this.teamId = config.linearTeamId;
16
+ this.teamIdInput = config.linearTeamId;
11
17
  this.label = config.linearLabel;
12
18
  this.pendingStatus = config.linearPendingStatus || 'Backlog';
13
19
  this.inReviewStatus = config.linearInReviewStatus || 'In Review';
@@ -17,36 +23,85 @@ class LinearProvider {
17
23
  method: 'POST',
18
24
  headers: {
19
25
  'Content-Type': 'application/json',
20
- Authorization: `Bearer ${this.apiKey}`,
26
+ Authorization: this.apiKey.startsWith('lin_api_') ? this.apiKey : `Bearer ${this.apiKey}`,
21
27
  },
22
28
  body: JSON.stringify({ query, variables }),
23
29
  });
24
30
  const raw = (await res.json());
25
31
  if (!res.ok) {
26
- const msg = raw.errors?.map((e) => e.message).join('; ') || res.statusText;
32
+ const msg = raw.errors?.map(formatLinearError).join('; ') || res.statusText;
27
33
  throw new Error(`Linear API error ${res.status}: ${msg}`);
28
34
  }
29
35
  if (raw.errors?.length) {
30
- throw new Error(`Linear GraphQL errors: ${raw.errors.map((e) => e.message).join('; ')}`);
36
+ throw new Error(`Linear GraphQL errors: ${raw.errors.map(formatLinearError).join('; ')}`);
31
37
  }
32
38
  if (raw.data === undefined) {
33
39
  throw new Error('Linear API returned no data');
34
40
  }
35
41
  return raw.data;
36
42
  }
37
- async fetchWorkflowStateIds() {
38
- const query = `
39
- query WorkflowStates($filter: WorkflowStateFilter) {
40
- workflowStates(filter: $filter) {
41
- nodes {
42
- id
43
- name
44
- type
45
- }
43
+ async resolveTeamId() {
44
+ if (this.resolvedTeamId)
45
+ return this.resolvedTeamId;
46
+ if (!this.teamIdInput) {
47
+ throw new Error('Linear: LINEAR_TEAM_ID is not set');
48
+ }
49
+ if (UUID_REGEX.test(this.teamIdInput)) {
50
+ this.resolvedTeamId = this.teamIdInput;
51
+ return this.resolvedTeamId;
52
+ }
53
+ // Linear's team(id) accepts UUID or team key (e.g. "ENG", "JAC")
54
+ const query = `
55
+ query Team($id: String!) {
56
+ team(id: $id) { id }
57
+ }
58
+ `;
59
+ const data = await this.graphql(query, { id: this.teamIdInput });
60
+ if (!data.team?.id) {
61
+ throw new Error(`Linear: could not resolve LINEAR_TEAM_ID "${this.teamIdInput}". Set it to the team UUID or team key.`);
62
+ }
63
+ this.resolvedTeamId = data.team.id;
64
+ return this.resolvedTeamId;
65
+ }
66
+ async resolveLabelIds(teamId, names) {
67
+ if (!names.length)
68
+ return { ids: [], missing: [] };
69
+ const query = `
70
+ query Labels($filter: IssueLabelFilter) {
71
+ issueLabels(filter: $filter, first: 250) {
72
+ nodes { id name }
73
+ }
74
+ }
75
+ `;
76
+ const data = await this.graphql(query, { filter: { team: { id: { eq: teamId } } } });
77
+ const byName = new Map();
78
+ for (const node of data.issueLabels.nodes)
79
+ byName.set(node.name.toLowerCase(), node.id);
80
+ const ids = [];
81
+ const missing = [];
82
+ for (const name of names) {
83
+ const id = byName.get(name.toLowerCase());
84
+ if (id)
85
+ ids.push(id);
86
+ else
87
+ missing.push(name);
46
88
  }
47
- }
89
+ return { ids, missing };
90
+ }
91
+ async fetchWorkflowStateIds() {
92
+ const query = `
93
+ query WorkflowStates($filter: WorkflowStateFilter) {
94
+ workflowStates(filter: $filter) {
95
+ nodes {
96
+ id
97
+ name
98
+ type
99
+ }
100
+ }
101
+ }
48
102
  `;
49
- const data = await this.graphql(query, { filter: { team: { id: { eq: this.teamId } } } });
103
+ const teamId = await this.resolveTeamId();
104
+ const data = await this.graphql(query, { filter: { team: { id: { eq: teamId } } } });
50
105
  const byName = new Map();
51
106
  for (const node of data.workflowStates.nodes) {
52
107
  byName.set(node.name.toLowerCase(), node.id);
@@ -54,29 +109,30 @@ class LinearProvider {
54
109
  return byName;
55
110
  }
56
111
  async fetchTasks() {
57
- logger_1.logger.debug(`Fetching Linear issues for team ${this.teamId} with label "${this.label}"`);
58
- const query = `
59
- query Issues($filter: IssueFilter) {
60
- issues(filter: $filter, first: 100) {
61
- nodes {
62
- id
63
- identifier
64
- title
65
- description
66
- url
67
- state { id name type }
68
- priority
69
- labels { nodes { name } }
70
- }
71
- }
72
- }
112
+ const teamId = await this.resolveTeamId();
113
+ logger_1.logger.debug(`Fetching Linear issues for team ${teamId} with label "${this.label}"`);
114
+ const query = `
115
+ query Issues($filter: IssueFilter) {
116
+ issues(filter: $filter, first: 100) {
117
+ nodes {
118
+ id
119
+ identifier
120
+ title
121
+ description
122
+ url
123
+ state { id name type }
124
+ priority
125
+ labels { nodes { name } }
126
+ }
127
+ }
128
+ }
73
129
  `;
74
130
  const filter = {
75
- team: { id: { eq: this.teamId } },
131
+ team: { id: { eq: teamId } },
76
132
  state: { type: { nin: ['completed', 'canceled'] } },
77
133
  };
78
134
  if (this.label && this.label !== '*') {
79
- filter.labels = { name: { eq: this.label } };
135
+ filter.labels = { some: { name: { eq: this.label } } };
80
136
  }
81
137
  const data = await this.graphql(query, { filter });
82
138
  const skipTypes = new Set(SKIP_STATE_TYPES);
@@ -100,13 +156,13 @@ class LinearProvider {
100
156
  async postComment(taskId, text) {
101
157
  logger_1.logger.debug(`Posting comment to Linear issue ${taskId}`);
102
158
  const issueId = await this.resolveIssueId(taskId);
103
- const mutation = `
104
- mutation CreateComment($input: CommentCreateInput!) {
105
- commentCreate(input: $input) {
106
- success
107
- comment { id }
108
- }
109
- }
159
+ const mutation = `
160
+ mutation CreateComment($input: CommentCreateInput!) {
161
+ commentCreate(input: $input) {
162
+ success
163
+ comment { id }
164
+ }
165
+ }
110
166
  `;
111
167
  await this.graphql(mutation, {
112
168
  input: { issueId, body: text },
@@ -115,19 +171,19 @@ class LinearProvider {
115
171
  async getComments(taskId) {
116
172
  logger_1.logger.debug(`Fetching comments for Linear issue ${taskId}`);
117
173
  const issueId = await this.resolveIssueId(taskId);
118
- const query = `
119
- query IssueComments($id: String!) {
120
- issue(id: $id) {
121
- comments {
122
- nodes {
123
- id
124
- body
125
- user { name id }
126
- createdAt
127
- }
128
- }
129
- }
130
- }
174
+ const query = `
175
+ query IssueComments($id: String!) {
176
+ issue(id: $id) {
177
+ comments {
178
+ nodes {
179
+ id
180
+ body
181
+ user { name id }
182
+ createdAt
183
+ }
184
+ }
185
+ }
186
+ }
131
187
  `;
132
188
  const data = await this.graphql(query, { id: issueId });
133
189
  const nodes = data.issue?.comments?.nodes ?? [];
@@ -142,12 +198,12 @@ class LinearProvider {
142
198
  }
143
199
  async resolveIssueId(identifier) {
144
200
  if (/^[A-Z]+-\d+$/i.test(identifier)) {
145
- const query = `
146
- query IssueByIdentifier($filter: IssueFilter) {
147
- issues(filter: $filter, first: 1) {
148
- nodes { id }
149
- }
150
- }
201
+ const query = `
202
+ query IssueByIdentifier($filter: IssueFilter) {
203
+ issues(filter: $filter, first: 1) {
204
+ nodes { id }
205
+ }
206
+ }
151
207
  `;
152
208
  const data = await this.graphql(query, {
153
209
  filter: { identifier: { eq: identifier } },
@@ -156,12 +212,12 @@ class LinearProvider {
156
212
  if (id)
157
213
  return id;
158
214
  }
159
- const byIdQuery = `
160
- query Issue($id: String!) {
161
- issue(id: $id) {
162
- id
163
- }
164
- }
215
+ const byIdQuery = `
216
+ query Issue($id: String!) {
217
+ issue(id: $id) {
218
+ id
219
+ }
220
+ }
165
221
  `;
166
222
  const byId = await this.graphql(byIdQuery, { id: identifier });
167
223
  if (byId.issue?.id)
@@ -178,12 +234,12 @@ class LinearProvider {
178
234
  throw new Error(`Linear: no workflow state matching "${status}". Available: ${names}`);
179
235
  }
180
236
  const issueId = await this.resolveIssueId(taskId);
181
- const mutation = `
182
- mutation IssueUpdate($id: String!, $input: IssueUpdateInput!) {
183
- issueUpdate(id: $id, input: $input) {
184
- success
185
- }
186
- }
237
+ const mutation = `
238
+ mutation IssueUpdate($id: String!, $input: IssueUpdateInput!) {
239
+ issueUpdate(id: $id, input: $input) {
240
+ success
241
+ }
242
+ }
187
243
  `;
188
244
  await this.graphql(mutation, {
189
245
  id: issueId,
@@ -191,22 +247,30 @@ class LinearProvider {
191
247
  });
192
248
  }
193
249
  async createTask(params) {
194
- const mutation = `
195
- mutation IssueCreate($input: IssueCreateInput!) {
196
- issueCreate(input: $input) {
197
- success
198
- issue { id identifier url }
250
+ const teamId = await this.resolveTeamId();
251
+ const { ids: labelIds, missing } = await this.resolveLabelIds(teamId, params.tags || []);
252
+ if (missing.length) {
253
+ logger_1.logger.warn(`Linear: skipping unknown labels (create them in Linear first): ${missing.join(', ')}`);
199
254
  }
200
- }
255
+ const mutation = `
256
+ mutation IssueCreate($input: IssueCreateInput!) {
257
+ issueCreate(input: $input) {
258
+ success
259
+ issue { id identifier url }
260
+ }
261
+ }
201
262
  `;
202
263
  const input = {
203
- teamId: this.teamId,
264
+ teamId,
204
265
  title: params.title,
205
266
  description: params.description || undefined,
206
267
  };
207
268
  if (params.priority !== undefined) {
208
269
  input.priority = params.priority;
209
270
  }
271
+ if (labelIds.length) {
272
+ input.labelIds = labelIds;
273
+ }
210
274
  const data = await this.graphql(mutation, { input });
211
275
  const issue = data.issueCreate?.issue;
212
276
  if (!issue) {
@@ -1 +1 @@
1
- {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/providers/linear.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/providers/linear.ts"],"names":[],"mappings":";;;AAEA,sCAAmC;AAEnC,MAAM,cAAc,GAAG,gCAAgC,CAAC;AACxD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5D,MAAM,UAAU,GAAG,iEAAiE,CAAC;AAgBrF,SAAS,iBAAiB,CAAC,CAAqB;IAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,sBAAsB,CAAC;IACpD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACzD,CAAC;AAED,MAAa,cAAc;IAQzB,YAAY,MAAc;QALlB,mBAAc,GAAkB,IAAI,CAAC;QAM3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,mBAAmB,IAAI,SAAS,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,oBAAoB,IAAI,WAAW,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,KAAa,EAAE,SAAmC;QACzE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE;YACtC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE;aAC1F;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA6B,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;YACvC,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QACD,iEAAiE;QACjE,MAAM,KAAK,GAAG;;;;KAIb,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,CAAC,WAAW,yCAAyC,CACvG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,KAAe;QAC3D,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG;;;;;;KAMb,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,KAAK,EACL,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAC7C,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1C,IAAI,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;gBAChB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,MAAM,KAAK,GAAG;;;;;;;;;;KAUb,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAE5B,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAExD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,eAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,gBAAgB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAErF,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;KAeb,CAAC;QACF,MAAM,MAAM,GAA4B;YACtC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;YAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE;SACpD,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAa5B,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,EAAE,EAAE,CAAC,CAAC,UAAU;YAChB,IAAI,EAAE,CAAC,CAAC,KAAK;YACb,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;YAChC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;YACpB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACvC,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS;SAClC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAkB;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,IAAY;QAC5C,eAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG;;;;;;;KAOhB,CAAC;QACF,MAAM,IAAI,CAAC,OAAO,CAA0C,QAAQ,EAAE;YACpE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,eAAM,CAAC,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG;;;;;;;;;;;;;KAab,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAW5B,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAC5E,CAAC;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YAClB,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS;YACjC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;YAC1B,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;SACtC,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,UAAkB;QAC7C,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG;;;;;;OAMb,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAA+C,KAAK,EAAE;gBACnF,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;aAC3C,CAAC,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,EAAE;gBAAE,OAAO,EAAE,CAAC;QACpB,CAAC;QACD,MAAM,SAAS,GAAG;;;;;;KAMjB,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAmC,SAAS,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACjG,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,oCAAoC,UAAU,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,MAAc;QAC/C,eAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,eAAe,MAAM,GAAG,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,uCAAuC,MAAM,iBAAiB,KAAK,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG;;;;;;KAMhB,CAAC;QACF,MAAM,IAAI,CAAC,OAAO,CAAwC,QAAQ,EAAE;YAClE,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,EAAE,OAAO,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwB;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,eAAM,CAAC,IAAI,CAAC,kEAAkE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;QAED,MAAM,QAAQ,GAAG;;;;;;;KAOhB,CAAC;QACF,MAAM,KAAK,GAA4B;YACrC,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;SAC7C,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACnC,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAE5B,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAExB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAClD,CAAC;CACF;AAvUD,wCAuUC"}
@@ -53,21 +53,21 @@ class MondayProvider {
53
53
  }
54
54
  async fetchTasks() {
55
55
  logger_1.logger.debug(`Fetching items from Monday board ${this.boardId}`);
56
- const query = `
57
- query ($boardId: ID!, $limit: Int!) {
58
- boards(ids: [$boardId]) {
59
- items_page(limit: $limit) {
60
- cursor
61
- items {
62
- id
63
- name
64
- url
65
- description { description }
66
- column_values { id value text }
67
- }
68
- }
69
- }
70
- }
56
+ const query = `
57
+ query ($boardId: ID!, $limit: Int!) {
58
+ boards(ids: [$boardId]) {
59
+ items_page(limit: $limit) {
60
+ cursor
61
+ items {
62
+ id
63
+ name
64
+ url
65
+ description { description }
66
+ column_values { id value text }
67
+ }
68
+ }
69
+ }
70
+ }
71
71
  `;
72
72
  const data = await this.graphql(query, {
73
73
  boardId: this.boardId,
@@ -102,10 +102,10 @@ class MondayProvider {
102
102
  }
103
103
  async postComment(taskId, text) {
104
104
  logger_1.logger.debug(`Posting update to Monday item ${taskId}`);
105
- const mutation = `
106
- mutation ($itemId: ID!, $body: String!) {
107
- create_update(item_id: $itemId, body: $body) { id }
108
- }
105
+ const mutation = `
106
+ mutation ($itemId: ID!, $body: String!) {
107
+ create_update(item_id: $itemId, body: $body) { id }
108
+ }
109
109
  `;
110
110
  await this.graphql(mutation, {
111
111
  itemId: taskId,
@@ -114,18 +114,18 @@ class MondayProvider {
114
114
  }
115
115
  async getComments(taskId) {
116
116
  logger_1.logger.debug(`Fetching updates for Monday item ${taskId}`);
117
- const query = `
118
- query ($itemId: ID!) {
119
- items(ids: [$itemId]) {
120
- updates(limit: 100) {
121
- id
122
- text_body
123
- body
124
- created_at
125
- creator { id name }
126
- }
127
- }
128
- }
117
+ const query = `
118
+ query ($itemId: ID!) {
119
+ items(ids: [$itemId]) {
120
+ updates(limit: 100) {
121
+ id
122
+ text_body
123
+ body
124
+ created_at
125
+ creator { id name }
126
+ }
127
+ }
128
+ }
129
129
  `;
130
130
  const data = await this.graphql(query, { itemId: taskId });
131
131
  const item = data.items?.[0];
@@ -142,10 +142,10 @@ class MondayProvider {
142
142
  }
143
143
  async updateStatus(taskId, status) {
144
144
  logger_1.logger.debug(`Updating Monday item ${taskId} status to "${status}"`);
145
- const mutation = `
146
- mutation ($boardId: ID!, $itemId: ID!, $columnId: String!, $value: String!) {
147
- change_column_value(board_id: $boardId, item_id: $itemId, column_id: $columnId, value: $value) { id }
148
- }
145
+ const mutation = `
146
+ mutation ($boardId: ID!, $itemId: ID!, $columnId: String!, $value: String!) {
147
+ change_column_value(board_id: $boardId, item_id: $itemId, column_id: $columnId, value: $value) { id }
148
+ }
149
149
  `;
150
150
  const value = JSON.stringify({ label: status });
151
151
  await this.graphql(mutation, {
@@ -157,10 +157,10 @@ class MondayProvider {
157
157
  }
158
158
  async createTask(params) {
159
159
  const groupId = this.groupId || 'topics';
160
- const mutation = `
161
- mutation ($boardId: ID!, $groupId: String!, $itemName: String!, $columnValues: JSON) {
162
- create_item(board_id: $boardId, group_id: $groupId, item_name: $itemName, column_values: $columnValues) { id }
163
- }
160
+ const mutation = `
161
+ mutation ($boardId: ID!, $groupId: String!, $itemName: String!, $columnValues: JSON) {
162
+ create_item(board_id: $boardId, group_id: $groupId, item_name: $itemName, column_values: $columnValues) { id }
163
+ }
164
164
  `;
165
165
  const columnValues = {};
166
166
  if (this.statusColumnId) {
@@ -0,0 +1,20 @@
1
+ import { Comment, Config } from './types';
2
+ import { AIRunner } from './ai/base';
3
+ export interface Session {
4
+ taskId: string;
5
+ updatedAt: number;
6
+ fingerprint: string;
7
+ summary: string;
8
+ lastCommentId: string;
9
+ }
10
+ export declare function getSessionsDir(): string;
11
+ export declare function ensureSessionsDir(): void;
12
+ export declare function getSessionPath(taskId: string): string;
13
+ export declare function readSession(taskId: string): Session | null;
14
+ export declare function writeSession(taskId: string, data: Session): void;
15
+ export declare function fingerprintComments(comments: Comment[]): string;
16
+ export declare function shouldCompress(prompt: string, threshold: number): boolean;
17
+ export declare function summarizeWithRunner(comments: Comment[], runners: AIRunner[]): Promise<string | null>;
18
+ export declare function truncateFallback(comments: Comment[]): string;
19
+ export declare function buildCompressedContext(comments: Comment[], taskId: string, runners: AIRunner[], config: Config): Promise<string>;
20
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAMD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAkB1D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAGhE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAS/D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzE;AAUD,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,QAAQ,EAAE,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBxB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAI5D;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,EAAE,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAyCjB"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getSessionsDir = getSessionsDir;
37
+ exports.ensureSessionsDir = ensureSessionsDir;
38
+ exports.getSessionPath = getSessionPath;
39
+ exports.readSession = readSession;
40
+ exports.writeSession = writeSession;
41
+ exports.fingerprintComments = fingerprintComments;
42
+ exports.shouldCompress = shouldCompress;
43
+ exports.summarizeWithRunner = summarizeWithRunner;
44
+ exports.truncateFallback = truncateFallback;
45
+ exports.buildCompressedContext = buildCompressedContext;
46
+ const fs = __importStar(require("node:fs"));
47
+ const path = __importStar(require("node:path"));
48
+ const crypto = __importStar(require("node:crypto"));
49
+ const logger_1 = require("./logger");
50
+ function getSessionsDir() {
51
+ return path.join(process.cwd(), '.aidev', 'sessions');
52
+ }
53
+ function ensureSessionsDir() {
54
+ const dir = getSessionsDir();
55
+ if (!fs.existsSync(dir)) {
56
+ fs.mkdirSync(dir, { recursive: true });
57
+ }
58
+ }
59
+ function sanitizeTaskId(taskId) {
60
+ return taskId.replace(/[^a-zA-Z0-9_.-]/g, '_');
61
+ }
62
+ function getSessionPath(taskId) {
63
+ return path.join(getSessionsDir(), `${sanitizeTaskId(taskId)}.json`);
64
+ }
65
+ function readSession(taskId) {
66
+ const file = getSessionPath(taskId);
67
+ if (!fs.existsSync(file))
68
+ return null;
69
+ try {
70
+ const raw = fs.readFileSync(file, 'utf8');
71
+ const parsed = JSON.parse(raw);
72
+ if (parsed &&
73
+ typeof parsed.taskId === 'string' &&
74
+ typeof parsed.fingerprint === 'string' &&
75
+ typeof parsed.summary === 'string') {
76
+ return parsed;
77
+ }
78
+ return null;
79
+ }
80
+ catch {
81
+ return null;
82
+ }
83
+ }
84
+ function writeSession(taskId, data) {
85
+ ensureSessionsDir();
86
+ fs.writeFileSync(getSessionPath(taskId), JSON.stringify(data, null, 2), 'utf8');
87
+ }
88
+ function fingerprintComments(comments) {
89
+ const hash = crypto.createHash('sha256');
90
+ for (const c of comments) {
91
+ hash.update(c.id);
92
+ hash.update('\0');
93
+ hash.update(c.text);
94
+ hash.update('\0');
95
+ }
96
+ return hash.digest('hex');
97
+ }
98
+ function shouldCompress(prompt, threshold) {
99
+ return prompt.length > threshold;
100
+ }
101
+ function buildRawContext(comments) {
102
+ if (comments.length === 0)
103
+ return '';
104
+ return ('\n\nConversation context:\n' +
105
+ comments.map((c) => `${c.author}: ${c.text}`).join('\n'));
106
+ }
107
+ async function summarizeWithRunner(comments, runners) {
108
+ const conversation = comments.map((c) => `${c.author}: ${c.text}`).join('\n');
109
+ const prompt = 'Summarize the following conversation. Preserve any decisions, dev notes, dropped requirements, and open questions. Keep it concise (<1000 words). Output only the summary, no preamble.\n\n' +
110
+ conversation;
111
+ for (const runner of runners) {
112
+ if (!runner.isAvailable())
113
+ continue;
114
+ try {
115
+ const result = await runner.run(prompt);
116
+ if (result.success && result.output.trim()) {
117
+ return result.output.trim();
118
+ }
119
+ logger_1.logger.warn(`Summarization runner ${runner.name} returned no output`);
120
+ }
121
+ catch (err) {
122
+ logger_1.logger.warn(`Summarization runner ${runner.name} failed: ${err.message}`);
123
+ }
124
+ }
125
+ return null;
126
+ }
127
+ function truncateFallback(comments) {
128
+ const text = comments.map((c) => `${c.author}: ${c.text}`).join('\n');
129
+ if (text.length <= 3000)
130
+ return text;
131
+ return text.slice(0, 1500) + '\n…\n' + text.slice(-1500);
132
+ }
133
+ async function buildCompressedContext(comments, taskId, runners, config) {
134
+ if (!config.autoCompress || comments.length <= 1) {
135
+ return buildRawContext(comments);
136
+ }
137
+ const raw = buildRawContext(comments);
138
+ if (!shouldCompress(raw, config.compressThreshold)) {
139
+ return raw;
140
+ }
141
+ const lastComment = comments[comments.length - 1];
142
+ const earlier = comments.slice(0, -1);
143
+ const fingerprint = fingerprintComments(earlier);
144
+ let summary;
145
+ const cached = readSession(taskId);
146
+ if (cached && cached.fingerprint === fingerprint && cached.summary) {
147
+ summary = cached.summary;
148
+ }
149
+ else {
150
+ const runnerSummary = await summarizeWithRunner(earlier, runners);
151
+ if (runnerSummary) {
152
+ summary = runnerSummary;
153
+ }
154
+ else {
155
+ logger_1.logger.warn('Auto-compress: no runner produced a summary; using deterministic truncation');
156
+ summary = truncateFallback(earlier);
157
+ }
158
+ writeSession(taskId, {
159
+ taskId,
160
+ updatedAt: Date.now(),
161
+ fingerprint,
162
+ summary,
163
+ lastCommentId: lastComment.id,
164
+ });
165
+ }
166
+ return ('\n\nSummary of earlier conversation (auto-compressed):\n' +
167
+ summary +
168
+ '\n\nLatest comment:\n' +
169
+ `${lastComment.author}: ${lastComment.text}`);
170
+ }
171
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}