@wirecat/cli-core 0.308.0 → 0.309.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/meeting-preparation-answer.d.ts +86 -0
- package/dist/cli/meeting-preparation-answer.d.ts.map +1 -1
- package/dist/cli/meeting-preparation-answer.js +4 -0
- package/dist/cli/meeting-preparation-answer.js.map +1 -1
- package/dist/cli/meeting-preparation-budget.d.ts.map +1 -1
- package/dist/cli/meeting-preparation-budget.js +19 -0
- package/dist/cli/meeting-preparation-budget.js.map +1 -1
- package/dist/cli/meeting-preparation-command.d.ts.map +1 -1
- package/dist/cli/meeting-preparation-command.js +2 -0
- package/dist/cli/meeting-preparation-command.js.map +1 -1
- package/dist/cli/meeting-preparation-projects.d.ts +88 -0
- package/dist/cli/meeting-preparation-projects.d.ts.map +1 -0
- package/dist/cli/meeting-preparation-projects.js +24 -0
- package/dist/cli/meeting-preparation-projects.js.map +1 -0
- package/dist/cli/meeting-preparation-read.d.ts +87 -0
- package/dist/cli/meeting-preparation-read.d.ts.map +1 -1
- package/dist/cli/meeting-preparation-read.js +4 -1
- package/dist/cli/meeting-preparation-read.js.map +1 -1
- package/dist/cli/messenger/backfill-command.d.ts.map +1 -1
- package/dist/cli/messenger/backfill-command.js +4 -1
- package/dist/cli/messenger/backfill-command.js.map +1 -1
- package/dist/cli/messenger/store-maintenance-command.d.ts +1 -1
- package/dist/cli/messenger/tasks-command.d.ts.map +1 -1
- package/dist/cli/messenger/tasks-command.js +34 -0
- package/dist/cli/messenger/tasks-command.js.map +1 -1
- package/dist/cli/store-settings.d.ts.map +1 -1
- package/dist/cli/store-settings.js +30 -0
- package/dist/cli/store-settings.js.map +1 -1
- package/dist/entities/index.d.ts +86 -0
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/meeting-preparation.d.ts +86 -0
- package/dist/entities/meeting-preparation.d.ts.map +1 -1
- package/dist/entities/meeting-preparation.js +15 -0
- package/dist/entities/meeting-preparation.js.map +1 -1
- package/dist/mcp/meeting-preparation.d.ts +86 -0
- package/dist/mcp/meeting-preparation.d.ts.map +1 -1
- package/dist/mcp/meeting-preparation.js +1 -1
- package/dist/mcp/meeting-preparation.js.map +1 -1
- package/dist/mcp/tools/tasks.d.ts.map +1 -1
- package/dist/mcp/tools/tasks.js +27 -0
- package/dist/mcp/tools/tasks.js.map +1 -1
- package/dist/meetings/mcp/index.d.ts +15 -15
- package/dist/meetings/mcp/index.d.ts.map +1 -1
- package/dist/sends/permissions.d.ts.map +1 -1
- package/dist/sends/permissions.js +1 -0
- package/dist/sends/permissions.js.map +1 -1
- package/dist/services/meeting-preparation-types.d.ts +14 -0
- package/dist/services/meeting-preparation-types.d.ts.map +1 -1
- package/dist/services/meeting-preparation-validation.d.ts +2 -0
- package/dist/services/meeting-preparation-validation.d.ts.map +1 -1
- package/dist/services/meeting-preparation-validation.js +7 -0
- package/dist/services/meeting-preparation-validation.js.map +1 -1
- package/dist/services/meeting-preparation.d.ts.map +1 -1
- package/dist/services/meeting-preparation.js +13 -2
- package/dist/services/meeting-preparation.js.map +1 -1
- package/dist/services/meeting-project-preparation.d.ts +4 -0
- package/dist/services/meeting-project-preparation.d.ts.map +1 -0
- package/dist/services/meeting-project-preparation.js +52 -0
- package/dist/services/meeting-project-preparation.js.map +1 -0
- package/dist/services/task-rules.d.ts +37 -5
- package/dist/services/task-rules.d.ts.map +1 -1
- package/dist/services/task-rules.js +57 -10
- package/dist/services/task-rules.js.map +1 -1
- package/dist/store/sqlite/task-close-store.d.ts +3 -0
- package/dist/store/sqlite/task-close-store.d.ts.map +1 -1
- package/dist/store/sqlite/task-close-store.js +3 -0
- package/dist/store/sqlite/task-close-store.js.map +1 -1
- package/dist/store/sqlite/task-first-pass.d.ts +12 -0
- package/dist/store/sqlite/task-first-pass.d.ts.map +1 -0
- package/dist/store/sqlite/task-first-pass.js +29 -0
- package/dist/store/sqlite/task-first-pass.js.map +1 -0
- package/package.json +1 -1
- package/parity.json +6 -0
- package/skills/follow-ups/SKILL.md +5 -0
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { createUpcomingMeetingReader, MeetingHistoryEntry, MeetingPreparationContext, MeetingPreparationContextStore, MeetingPreparationFact, MeetingPreparationKnowledgeStore, MeetingPreparationNote, MeetingPreparationNotesSelection, MeetingPreparationNotesStore, MeetingReadCapabilities, MeetingRelatedHistoryEntry, MeetingRelatedHistoryStore, MeetingSeriesContext, MeetingSeriesHistoryStore, MeetingStore, UpcomingMeetingResult } from "../meetings/index.js";
|
|
2
|
+
import type { MeetingProjectDiscoveryPage } from "../meetings/project-discovery.js";
|
|
2
3
|
import type { MeetingEvidencePacket } from "./meeting-evidence.js";
|
|
4
|
+
import type { readMeetingProjectDiscovery } from "./meeting-project-discovery.js";
|
|
3
5
|
export interface MeetingPreparationRequest {
|
|
6
|
+
project?: string;
|
|
4
7
|
after: number;
|
|
5
8
|
until: number;
|
|
6
9
|
historyAfter: number;
|
|
@@ -13,6 +16,7 @@ export interface MeetingPreparationRequest {
|
|
|
13
16
|
}
|
|
14
17
|
export interface MeetingPreparationPorts {
|
|
15
18
|
meetings: Pick<MeetingStore, "account"> & MeetingReadCapabilities & MeetingSeriesHistoryStore & MeetingPreparationContextStore & MeetingRelatedHistoryStore & Partial<MeetingPreparationKnowledgeStore & MeetingPreparationNotesStore>;
|
|
19
|
+
projectDiscovery?: Parameters<typeof readMeetingProjectDiscovery>[0];
|
|
16
20
|
upcoming: ReturnType<typeof createUpcomingMeetingReader>;
|
|
17
21
|
}
|
|
18
22
|
export interface MeetingPreparationEntry {
|
|
@@ -63,6 +67,16 @@ export interface MeetingPreparation {
|
|
|
63
67
|
otherSources: "not-queried";
|
|
64
68
|
};
|
|
65
69
|
};
|
|
70
|
+
projectEvidence?: {
|
|
71
|
+
project: string;
|
|
72
|
+
query: string;
|
|
73
|
+
pages: MeetingProjectDiscoveryPage[];
|
|
74
|
+
coverage: {
|
|
75
|
+
pageLimit: number;
|
|
76
|
+
hasMore: boolean;
|
|
77
|
+
outputLimited: boolean;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
66
80
|
limits: {
|
|
67
81
|
meetings: number;
|
|
68
82
|
cues: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-preparation-types.d.ts","sourceRoot":"","sources":["../../src/services/meeting-preparation-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,mBAAmB,EACnB,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,gCAAgC,EAChC,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,EACZ,qBAAqB,EACtB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"meeting-preparation-types.d.ts","sourceRoot":"","sources":["../../src/services/meeting-preparation-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ export declare const MEETING_PREPARATION_LIMITS: {
|
|
|
28
28
|
};
|
|
29
29
|
export declare const preparationCancelled: (signal?: AbortSignal) => void;
|
|
30
30
|
export declare const validateMeetingPreparationRequest: (externalId: string, original: MeetingPreparationRequest) => {
|
|
31
|
+
project?: string;
|
|
31
32
|
after: number;
|
|
32
33
|
until: number;
|
|
33
34
|
historyAfter: number;
|
|
@@ -39,6 +40,7 @@ export declare const validateMeetingPreparationRequest: (externalId: string, ori
|
|
|
39
40
|
maxReadBytes: number;
|
|
40
41
|
};
|
|
41
42
|
export declare const preparationRequest: (accountId: number, externalId: string, original: MeetingPreparationRequest) => {
|
|
43
|
+
project?: string;
|
|
42
44
|
after: number;
|
|
43
45
|
until: number;
|
|
44
46
|
historyAfter: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-preparation-validation.d.ts","sourceRoot":"","sources":["../../src/services/meeting-preparation-validation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAE/E,eAAO,MAAM,0BAA0B;aACrC,QAAQ;iBAAI,GAAG,EAAE,CAAC;iBAAE,GAAG,EAAE,EAAE;iBAAE,OAAO,EAAE,CAAC;;aACvC,IAAI;iBAAI,GAAG,EAAE,CAAC;iBAAE,GAAG,EAAE,GAAG;iBAAE,OAAO,EAAE,EAAE;;aACrC,YAAY;iBAAI,GAAG,EAAE,CAAC;iBAAE,GAAG,EAAE,GAAG;iBAAE,OAAO,EAAE,EAAE;;aAC7C,KAAK;iBAAI,GAAG,EAAE,IAAI;iBAAE,GAAG,EAAE,OAAO;iBAAE,OAAO,EAAE,KAAK;;aAChD,YAAY;iBAAI,GAAG,EAAE,CAAC;iBAAE,GAAG,EAAE,OAAO;iBAAE,OAAO,EAAE,MAAM;;CAC7C,CAAA;AAEV,eAAO,MAAM,oBAAoB,YAAa,WAAW,KAAG,IAO3D,CAAA;AACD,eAAO,MAAM,iCAAiC,eAAgB,MAAM,YAAY,yBAAyB
|
|
1
|
+
{"version":3,"file":"meeting-preparation-validation.d.ts","sourceRoot":"","sources":["../../src/services/meeting-preparation-validation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAE/E,eAAO,MAAM,0BAA0B;aACrC,QAAQ;iBAAI,GAAG,EAAE,CAAC;iBAAE,GAAG,EAAE,EAAE;iBAAE,OAAO,EAAE,CAAC;;aACvC,IAAI;iBAAI,GAAG,EAAE,CAAC;iBAAE,GAAG,EAAE,GAAG;iBAAE,OAAO,EAAE,EAAE;;aACrC,YAAY;iBAAI,GAAG,EAAE,CAAC;iBAAE,GAAG,EAAE,GAAG;iBAAE,OAAO,EAAE,EAAE;;aAC7C,KAAK;iBAAI,GAAG,EAAE,IAAI;iBAAE,GAAG,EAAE,OAAO;iBAAE,OAAO,EAAE,KAAK;;aAChD,YAAY;iBAAI,GAAG,EAAE,CAAC;iBAAE,GAAG,EAAE,OAAO;iBAAE,OAAO,EAAE,MAAM;;CAC7C,CAAA;AAEV,eAAO,MAAM,oBAAoB,YAAa,WAAW,KAAG,IAO3D,CAAA;AACD,eAAO,MAAM,iCAAiC,eAAgB,MAAM,YAAY,yBAAyB;;;;;;;;;;;CAsDxG,CAAA;AAED,eAAO,MAAM,kBAAkB,cAAe,MAAM,cAAc,MAAM,YAAY,yBAAyB;;;;;;;;;;;;;;;;;;;;CAY5G,CAAA"}
|
|
@@ -20,6 +20,7 @@ export const validateMeetingPreparationRequest = (externalId, original) => {
|
|
|
20
20
|
const input = { ...original };
|
|
21
21
|
for (const key of Object.keys(input))
|
|
22
22
|
if (![
|
|
23
|
+
"project",
|
|
23
24
|
"after",
|
|
24
25
|
"until",
|
|
25
26
|
"historyAfter",
|
|
@@ -41,6 +42,12 @@ export const validateMeetingPreparationRequest = (externalId, original) => {
|
|
|
41
42
|
throw new CliError("validation_error", `${key} must be an integer from ${limits.min} to ${limits.max}`);
|
|
42
43
|
return result;
|
|
43
44
|
};
|
|
45
|
+
if (input.project !== undefined &&
|
|
46
|
+
(typeof input.project !== "string" ||
|
|
47
|
+
!input.project.trim() ||
|
|
48
|
+
input.project.length > 200 ||
|
|
49
|
+
/[\p{Cc}\p{Cf}]/u.test(input.project)))
|
|
50
|
+
throw new CliError("validation_error", "project must name one existing project, key or alias");
|
|
44
51
|
const meetings = bounded("meetings");
|
|
45
52
|
const cues = bounded("cues");
|
|
46
53
|
const contextLimit = bounded("contextLimit");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-preparation-validation.js","sourceRoot":"","sources":["../../src/services/meeting-preparation-validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"meeting-preparation-validation.js","sourceRoot":"","sources":["../../src/services/meeting-preparation-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-preparation.d.ts","sourceRoot":"","sources":["../../src/services/meeting-preparation.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,oBAAoB,EAAwB,MAAM,sBAAsB,CAAA;AAI9G,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"meeting-preparation.d.ts","sourceRoot":"","sources":["../../src/services/meeting-preparation.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,oBAAoB,EAAwB,MAAM,sBAAsB,CAAA;AAI9G,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,gCAAgC,CAAA;AAOvC,eAAO,MAAM,+BAA+B,UACnC,oBAAoB,aAChB,MAAM,SACV,uBAAuB;IAmC5B,KAAK;IACC,OAAO,aAAa,MAAM,YAAY,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiHtG,CAAA"}
|
|
@@ -4,6 +4,7 @@ import { readMeetingEvidence } from "./meeting-evidence.js";
|
|
|
4
4
|
import { appendKnowledgePreparation } from "./meeting-knowledge-preparation.js";
|
|
5
5
|
import { appendNotesPreparation } from "./meeting-notes-preparation.js";
|
|
6
6
|
import { preparationCancelled, preparationRequest } from "./meeting-preparation-validation.js";
|
|
7
|
+
import { appendProjectPreparation } from "./meeting-project-preparation.js";
|
|
7
8
|
import { appendRelatedPreparation } from "./meeting-related-preparation.js";
|
|
8
9
|
const size = (value) => Buffer.byteLength(JSON.stringify(value), "utf8");
|
|
9
10
|
export const createMeetingPreparationService = (scope, accountId, ports) => {
|
|
@@ -11,6 +12,7 @@ export const createMeetingPreparationService = (scope, accountId, ports) => {
|
|
|
11
12
|
if (!Number.isSafeInteger(accountId) || accountId < 1)
|
|
12
13
|
throw new CliError("validation_error", "accountId must be a positive safe integer");
|
|
13
14
|
const store = ports?.meetings;
|
|
15
|
+
const projectDiscovery = ports?.projectDiscovery;
|
|
14
16
|
if (!store ||
|
|
15
17
|
[
|
|
16
18
|
"account",
|
|
@@ -24,7 +26,11 @@ export const createMeetingPreparationService = (scope, accountId, ports) => {
|
|
|
24
26
|
].some((key) => typeof store[key] !== "function") ||
|
|
25
27
|
typeof ports?.upcoming?.next !== "function" ||
|
|
26
28
|
(store.preparationKnowledge !== undefined && typeof store.preparationKnowledge !== "function") ||
|
|
27
|
-
(store.preparationNotes !== undefined && typeof store.preparationNotes !== "function")
|
|
29
|
+
(store.preparationNotes !== undefined && typeof store.preparationNotes !== "function") ||
|
|
30
|
+
(projectDiscovery !== undefined &&
|
|
31
|
+
(!projectDiscovery ||
|
|
32
|
+
typeof projectDiscovery.vocabulary?.resolveVocabulary !== "function" ||
|
|
33
|
+
typeof projectDiscovery.search?.searchHits !== "function")))
|
|
28
34
|
throw new CliError("configuration_error", "Meeting preparation requires bounded meeting reads and an upcoming reader");
|
|
29
35
|
if (ports.upcoming.scope?.provider !== fixed.provider || ports.upcoming.scope?.account !== fixed.account)
|
|
30
36
|
throw new CliError("configuration_error", "The upcoming reader belongs to another provider or account");
|
|
@@ -34,6 +40,8 @@ export const createMeetingPreparationService = (scope, accountId, ports) => {
|
|
|
34
40
|
async prepare(externalId, original) {
|
|
35
41
|
const input = preparationRequest(accountId, externalId, original);
|
|
36
42
|
const { signal, meetings, cues, contextLimit, maxReadBytes, bytes } = input;
|
|
43
|
+
if (input.project !== undefined && !projectDiscovery)
|
|
44
|
+
throw new CliError("configuration_error", "Project evidence is unavailable in this preparation host");
|
|
37
45
|
const owner = await store.account(accountId);
|
|
38
46
|
preparationCancelled(signal);
|
|
39
47
|
if (!owner || owner.provider !== fixed.provider || owner.account !== fixed.account)
|
|
@@ -81,8 +89,10 @@ export const createMeetingPreparationService = (scope, accountId, ports) => {
|
|
|
81
89
|
throw new CliError("invalid_response", "The history reader returned another series or exceeded its bound");
|
|
82
90
|
if (size(result) > bytes)
|
|
83
91
|
throw new CliError("validation_error", "Preparation metadata exceeds bytes; increase the output budget");
|
|
84
|
-
if (!history.series)
|
|
92
|
+
if (!history.series) {
|
|
93
|
+
await appendProjectPreparation(projectDiscovery, result, input);
|
|
85
94
|
return structuredClone(result);
|
|
95
|
+
}
|
|
86
96
|
const seriesId = history.series.id;
|
|
87
97
|
for (const meeting of history.items) {
|
|
88
98
|
preparationCancelled(signal);
|
|
@@ -131,6 +141,7 @@ export const createMeetingPreparationService = (scope, accountId, ports) => {
|
|
|
131
141
|
await appendRelatedPreparation(store, result, input);
|
|
132
142
|
await appendKnowledgePreparation(store, result, input);
|
|
133
143
|
await appendNotesPreparation(store, result, input);
|
|
144
|
+
await appendProjectPreparation(projectDiscovery, result, input);
|
|
134
145
|
preparationCancelled(signal);
|
|
135
146
|
if (size(result) > bytes)
|
|
136
147
|
throw new CliError("validation_error", "Preparation coverage exceeds bytes; increase the output budget");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meeting-preparation.js","sourceRoot":"","sources":["../../src/services/meeting-preparation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAA6B,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAMvE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAE3E,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;AAEjF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,KAA2B,EAC3B,SAAiB,EACjB,KAA8B,EAC9B,EAAE;IACF,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IACzC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;QACnD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,2CAA2C,CAAC,CAAA;IACrF,MAAM,KAAK,GAAG,KAAK,EAAE,QAAQ,CAAA;IAC7B,IACE,CAAC,KAAK;QACN;YACE,SAAS;YACT,eAAe;YACf,gBAAgB;YAChB,oBAAoB;YACpB,iBAAiB;YACjB,oBAAoB;YACpB,aAAa;YACb,gBAAgB;SACjB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,GAAyB,CAAC,KAAK,UAAU,CAAC;QACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,UAAU;QAC3C,CAAC,KAAK,CAAC,oBAAoB,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,oBAAoB,KAAK,UAAU,CAAC;QAC9F,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,gBAAgB,KAAK,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"meeting-preparation.js","sourceRoot":"","sources":["../../src/services/meeting-preparation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MeetingPreparation, MeetingPreparationPorts } from "./meeting-preparation-types.js";
|
|
2
|
+
import { type preparationRequest } from "./meeting-preparation-validation.js";
|
|
3
|
+
export declare const appendProjectPreparation: (ports: MeetingPreparationPorts["projectDiscovery"], result: MeetingPreparation, input: ReturnType<typeof preparationRequest>) => Promise<void>;
|
|
4
|
+
//# sourceMappingURL=meeting-project-preparation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meeting-project-preparation.d.ts","sourceRoot":"","sources":["../../src/services/meeting-project-preparation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACjG,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAMnG,eAAO,MAAM,wBAAwB,UAC5B,uBAAuB,CAAC,kBAAkB,CAAC,UAC1C,kBAAkB,SACnB,UAAU,CAAC,OAAO,kBAAkB,CAAC,kBA4C7C,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { prepareMeetingProjectEvidence } from "../meetings/project-evidence-query.js";
|
|
2
|
+
import { preparationCancelled } from "./meeting-preparation-validation.js";
|
|
3
|
+
import { readMeetingProjectDiscovery } from "./meeting-project-discovery.js";
|
|
4
|
+
const PAGE_LIMIT = 4;
|
|
5
|
+
const size = (value) => Buffer.byteLength(JSON.stringify(value), "utf8");
|
|
6
|
+
export const appendProjectPreparation = async (ports, result, input) => {
|
|
7
|
+
if (input.project === undefined || !ports || result.coverage.outputLimited)
|
|
8
|
+
return;
|
|
9
|
+
const prepared = prepareMeetingProjectEvidence(input.project, {
|
|
10
|
+
query: `started_at:["${new Date(input.historyAfter).toISOString()}" TO "${new Date(input.after - 1).toISOString()}"]`,
|
|
11
|
+
limit: Math.min(input.contextLimit, 20),
|
|
12
|
+
maxReadBytes: input.maxReadBytes,
|
|
13
|
+
signal: input.signal,
|
|
14
|
+
});
|
|
15
|
+
const section = {
|
|
16
|
+
project: prepared.project,
|
|
17
|
+
query: prepared.query,
|
|
18
|
+
pages: [],
|
|
19
|
+
coverage: { pageLimit: PAGE_LIMIT, hasMore: true, outputLimited: false },
|
|
20
|
+
};
|
|
21
|
+
result.projectEvidence = section;
|
|
22
|
+
if (size(result) > input.bytes) {
|
|
23
|
+
delete result.projectEvidence;
|
|
24
|
+
result.coverage.outputLimited = true;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
let cursor;
|
|
28
|
+
for (let index = 0; index < PAGE_LIMIT; index++) {
|
|
29
|
+
const page = await readMeetingProjectDiscovery(ports, prepared.project, {
|
|
30
|
+
...prepared.options,
|
|
31
|
+
accountId: result.accountId,
|
|
32
|
+
maxVocabularyReadBytes: input.maxReadBytes,
|
|
33
|
+
...(cursor === undefined ? {} : { cursor }),
|
|
34
|
+
}).catch((error) => {
|
|
35
|
+
preparationCancelled(input.signal);
|
|
36
|
+
throw error;
|
|
37
|
+
});
|
|
38
|
+
preparationCancelled(input.signal);
|
|
39
|
+
section.pages.push(page);
|
|
40
|
+
section.coverage.hasMore = page.hasMore;
|
|
41
|
+
if (size(result) > input.bytes) {
|
|
42
|
+
section.pages.pop();
|
|
43
|
+
section.coverage.hasMore = true;
|
|
44
|
+
section.coverage.outputLimited = result.coverage.outputLimited = true;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
if (!page.hasMore)
|
|
48
|
+
break;
|
|
49
|
+
cursor = page.nextCursor ?? undefined;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=meeting-project-preparation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meeting-project-preparation.js","sourceRoot":"","sources":["../../src/services/meeting-project-preparation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import type { Message, ReviewChat } from "../domain/models.js";
|
|
2
2
|
import type { AccountKey, MessageStore } from "../store/store.js";
|
|
3
|
-
import { type TaskStore } from "../tasks/index.js";
|
|
3
|
+
import { type TaskKind, type TaskStore } from "../tasks/index.js";
|
|
4
4
|
import { type TaskCategory } from "./task-categories.js";
|
|
5
5
|
export interface RuleResult {
|
|
6
6
|
added: number;
|
|
7
7
|
closed: number;
|
|
8
8
|
/** Opened tasks that may be the same job as another: on the review list (`tasks duplicates`). */
|
|
9
9
|
review: number;
|
|
10
|
+
/** Tasks the rules found but did not open: over the per-chat limit, or a dry run. */
|
|
11
|
+
held?: number;
|
|
12
|
+
/** Chats with at least one held task. */
|
|
13
|
+
heldChats?: number;
|
|
14
|
+
}
|
|
15
|
+
/** A task the rules would open, for a dry run. */
|
|
16
|
+
export interface HeldTask {
|
|
17
|
+
source: string;
|
|
18
|
+
kind: TaskKind;
|
|
19
|
+
category: string | null;
|
|
10
20
|
}
|
|
11
21
|
export declare const taskAccount: ({ provider, account }: AccountKey) => string;
|
|
12
22
|
/**
|
|
@@ -18,11 +28,16 @@ export declare const taskAccount: ({ provider, account }: AccountKey) => string;
|
|
|
18
28
|
*/
|
|
19
29
|
export declare const applyTaskRules: (review: {
|
|
20
30
|
chats: Pick<ReviewChat, "id" | "messages">[];
|
|
21
|
-
}, { store, account, now, categories, }: {
|
|
31
|
+
}, { store, account, now, categories, openLimit, dryRun, onHeld, }: {
|
|
22
32
|
store: TaskStore;
|
|
23
33
|
account: AccountKey;
|
|
24
34
|
now?: () => Date;
|
|
25
35
|
categories?: readonly TaskCategory[];
|
|
36
|
+
/** Per chat: the newest this many are opened, the rest held. */
|
|
37
|
+
openLimit?: number;
|
|
38
|
+
/** Changes nothing: what would open is held and passed to `onHeld`. */
|
|
39
|
+
dryRun?: boolean;
|
|
40
|
+
onHeld?: (task: HeldTask) => void;
|
|
26
41
|
}) => Promise<RuleResult>;
|
|
27
42
|
/** How far back `serve` looks when a message arrives: enough to see whether it answers a recent question. */
|
|
28
43
|
export declare const ARRIVAL_WINDOW = 50;
|
|
@@ -34,9 +49,10 @@ export declare const STORED_PASS_LIMIT = 1000;
|
|
|
34
49
|
* The rule pass over what is already stored, for a program that reads no messenger (memo): every chat of
|
|
35
50
|
* the account stored into after `since`, its new messages with the ARRIVAL_WINDOW before them, through the
|
|
36
51
|
* rules `review` applies. `until` is the newest store time it saw — the next pass's `since`, so a pass reads
|
|
37
|
-
* only what changed. A chat with more new messages than STORED_PASS_LIMIT has its oldest left unread.
|
|
52
|
+
* only what changed. A chat with more new messages than STORED_PASS_LIMIT has its oldest left unread. After
|
|
53
|
+
* `since`, a chat with nothing sent since is skipped: a backfill of old history is not new work.
|
|
38
54
|
*/
|
|
39
|
-
export declare const applyTaskRulesToStored: (store: MessageStore, account: AccountKey, since?: string, newerThan?: string) => Promise<RuleResult & {
|
|
55
|
+
export declare const applyTaskRulesToStored: (store: MessageStore, account: AccountKey, since?: string, newerThan?: string, openLimit?: number) => Promise<RuleResult & {
|
|
40
56
|
until: string | null;
|
|
41
57
|
}>;
|
|
42
58
|
/** How far back the first pass after a sync looks, by the newest message's time: older chats are history, not work. */
|
|
@@ -44,7 +60,8 @@ export declare const FIRST_PASS_DAYS = 14;
|
|
|
44
60
|
/**
|
|
45
61
|
* The task rules over what a sync stored, from where the account's last pass stopped. The first pass reads only
|
|
46
62
|
* chats with a message in the last FIRST_PASS_DAYS, so a store that already holds years of chats opens no task
|
|
47
|
-
* for a question asked long ago
|
|
63
|
+
* for a question asked long ago, and opens at most `task_first_pass_per_chat` per chat (0 by default): what it
|
|
64
|
+
* holds back is counted, for the owner to build with `tasks apply`.
|
|
48
65
|
*/
|
|
49
66
|
export declare const applyTaskRulesSinceLastPass: (store: MessageStore, account: AccountKey, now?: Date) => Promise<RuleResult>;
|
|
50
67
|
/**
|
|
@@ -52,4 +69,19 @@ export declare const applyTaskRulesSinceLastPass: (store: MessageStore, account:
|
|
|
52
69
|
* the task a source already has, so a message arriving twice opens one.
|
|
53
70
|
*/
|
|
54
71
|
export declare const openRequestTask: (store: MessageStore, account: AccountKey, message: Message) => Promise<boolean>;
|
|
72
|
+
/** What `tasks apply` did, or would do without `--yes`, in one chat. */
|
|
73
|
+
export interface ChatRulePass extends RuleResult {
|
|
74
|
+
chat: string;
|
|
75
|
+
messages: number;
|
|
76
|
+
tasks: HeldTask[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* `tasks apply`: the task rules over the newest `last` stored messages of chats the owner names — how a chat's
|
|
80
|
+
* history becomes tasks when the first sync left it alone. Without `yes` it changes nothing and lists what would
|
|
81
|
+
* open; with it, it opens them through the duplicate check, as a sync's pass would.
|
|
82
|
+
*/
|
|
83
|
+
export declare const applyTaskRulesToChats: (store: MessageStore, account: AccountKey, chatIds: readonly string[], { last, yes }?: {
|
|
84
|
+
last?: number;
|
|
85
|
+
yes?: boolean;
|
|
86
|
+
}) => Promise<ChatRulePass[]>;
|
|
55
87
|
//# sourceMappingURL=task-rules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-rules.d.ts","sourceRoot":"","sources":["../../src/services/task-rules.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAM,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"task-rules.d.ts","sourceRoot":"","sources":["../../src/services/task-rules.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAM,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAqB,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEpF,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEpE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,iGAAiG;IACjG,MAAM,EAAE,MAAM,CAAA;IACd,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,kDAAkD;AAClD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,eAAO,MAAM,WAAW,0BAA2B,UAAU,KAAG,MAAkC,CAAA;AAElG;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,WACjB;IAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,UAAU,CAAC,EAAE,CAAA;CAAE,mEASrD;IACD,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,UAAU,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;IACpC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;CAClC,KACA,OAAO,CAAC,UAAU,CA0DpB,CAAA;AAED,6GAA6G;AAC7G,eAAO,MAAM,cAAc,KAAK,CAAA;AAEhC,mHAAmH;AACnH,eAAO,MAAM,uBAAuB,UAC3B,YAAY,WACV,UAAU,WACV,OAAO,KACf,OAAO,CAAC,UAAU,CASpB,CAAA;AAED,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,OAAO,CAAA;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,UAC1B,YAAY,WACV,UAAU,UACX,MAAM,cACF,MAAM,cACN,MAAM,KACjB,OAAO,CAAC,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAgC/C,CAAA;AAED,uHAAuH;AACvH,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,UAC/B,YAAY,WACV,UAAU,iBAElB,OAAO,CAAC,UAAU,CAOpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAiB,YAAY,WAAW,UAAU,WAAW,OAAO,KAAG,OAAO,CAAC,OAAO,CAgBjH,CAAA;AAgBD,wEAAwE;AACxE,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAA;CAClB;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,UACzB,YAAY,WACV,UAAU,WACV,SAAS,MAAM,EAAE,kBACc;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,KACvE,OAAO,CAAC,YAAY,EAAE,CAaxB,CAAA"}
|
|
@@ -10,7 +10,7 @@ export const taskAccount = ({ provider, account }) => `${provider}:${account}`;
|
|
|
10
10
|
* Only the owner's answers count: the store knows no admins, and a review without `--unanswered` asks
|
|
11
11
|
* for none. A mention is one the messenger marks by id; an `@handle` is not seen.
|
|
12
12
|
*/
|
|
13
|
-
export const applyTaskRules = async (review, { store, account, now, categories, }) => {
|
|
13
|
+
export const applyTaskRules = async (review, { store, account, now, categories, openLimit, dryRun = false, onHeld, }) => {
|
|
14
14
|
const tasks = createTaskService({ store, ...(now ? { now } : {}) });
|
|
15
15
|
const owner = taskAccount(account);
|
|
16
16
|
const result = { added: 0, closed: 0, review: 0 };
|
|
@@ -33,18 +33,22 @@ export const applyTaskRules = async (review, { store, account, now, categories,
|
|
|
33
33
|
for (const task of await store.findBySource(owner, sourceOf(message))) {
|
|
34
34
|
if (task.kind !== kind || task.state !== "open")
|
|
35
35
|
continue;
|
|
36
|
+
result.closed += 1;
|
|
37
|
+
if (dryRun)
|
|
38
|
+
continue;
|
|
36
39
|
await tasks.close(task.id, { as: "done", by: "rule" });
|
|
37
40
|
if (answer)
|
|
38
41
|
await store.answer(task.id, { resolution: "answered by the owner", by: sourceOf(answer) });
|
|
39
|
-
result.closed += 1;
|
|
40
42
|
}
|
|
41
43
|
};
|
|
44
|
+
const hasTask = async (message) => (await store.findBySource(owner, sourceOf(message))).length > 0;
|
|
42
45
|
for (const chat of review.chats) {
|
|
46
|
+
const opens = [];
|
|
43
47
|
for (const { question, answer } of questions(chat.messages, { answerers: new Set() })) {
|
|
44
48
|
if (answer)
|
|
45
49
|
await close(question, "question", answer);
|
|
46
50
|
else
|
|
47
|
-
|
|
51
|
+
opens.push({ message: question, kind: "question" });
|
|
48
52
|
}
|
|
49
53
|
for (const [index, message] of chat.messages.entries()) {
|
|
50
54
|
if (message.outgoing || !message.mentions?.includes(account.account))
|
|
@@ -52,7 +56,22 @@ export const applyTaskRules = async (review, { store, account, now, categories,
|
|
|
52
56
|
if (ownerAnswered(chat.messages, index))
|
|
53
57
|
await close(message, "mention");
|
|
54
58
|
else
|
|
55
|
-
|
|
59
|
+
opens.push({ message, kind: "mention" });
|
|
60
|
+
}
|
|
61
|
+
opens.sort((a, b) => Date.parse(a.message.timestamp) - Date.parse(b.message.timestamp));
|
|
62
|
+
const keep = dryRun ? 0 : openLimit === undefined ? opens.length : Math.min(openLimit, opens.length);
|
|
63
|
+
let held = 0;
|
|
64
|
+
for (const [index, { message, kind }] of opens.entries()) {
|
|
65
|
+
if (index >= opens.length - keep)
|
|
66
|
+
await open(message, chat.id, kind);
|
|
67
|
+
else if (!(await hasTask(message))) {
|
|
68
|
+
held += 1;
|
|
69
|
+
onHeld?.({ source: sourceOf(message), kind, category: categorize(message.text, categories) });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (held > 0) {
|
|
73
|
+
result.held = (result.held ?? 0) + held;
|
|
74
|
+
result.heldChats = (result.heldChats ?? 0) + 1;
|
|
56
75
|
}
|
|
57
76
|
}
|
|
58
77
|
return result;
|
|
@@ -71,9 +90,10 @@ export const STORED_PASS_LIMIT = 1000;
|
|
|
71
90
|
* The rule pass over what is already stored, for a program that reads no messenger (memo): every chat of
|
|
72
91
|
* the account stored into after `since`, its new messages with the ARRIVAL_WINDOW before them, through the
|
|
73
92
|
* rules `review` applies. `until` is the newest store time it saw — the next pass's `since`, so a pass reads
|
|
74
|
-
* only what changed. A chat with more new messages than STORED_PASS_LIMIT has its oldest left unread.
|
|
93
|
+
* only what changed. A chat with more new messages than STORED_PASS_LIMIT has its oldest left unread. After
|
|
94
|
+
* `since`, a chat with nothing sent since is skipped: a backfill of old history is not new work.
|
|
75
95
|
*/
|
|
76
|
-
export const applyTaskRulesToStored = async (store, account, since, newerThan) => {
|
|
96
|
+
export const applyTaskRulesToStored = async (store, account, since, newerThan, openLimit) => {
|
|
77
97
|
const result = { added: 0, closed: 0, review: 0, until: since ?? null };
|
|
78
98
|
const categories = await store.tasks.categories();
|
|
79
99
|
for (const chat of await store.chats.chatStats(account)) {
|
|
@@ -86,13 +106,22 @@ export const applyTaskRulesToStored = async (store, account, since, newerThan) =
|
|
|
86
106
|
continue;
|
|
87
107
|
}
|
|
88
108
|
const fresh = since === undefined ? 0 : await store.messages.countMessages(account, chat.chatId, { since });
|
|
109
|
+
if (since !== undefined && fresh === 0) {
|
|
110
|
+
if (result.until === null || chat.lastStoredAt > result.until)
|
|
111
|
+
result.until = chat.lastStoredAt;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
89
114
|
const page = await store.messages.messages(account, chat.chatId, {
|
|
90
115
|
limit: Math.min(ARRIVAL_WINDOW + fresh, STORED_PASS_LIMIT),
|
|
91
116
|
});
|
|
92
|
-
const pass = await applyTaskRules({ chats: [{ id: chat.chatId, messages: page.items }] }, { store: store.tasks, account, categories });
|
|
117
|
+
const pass = await applyTaskRules({ chats: [{ id: chat.chatId, messages: page.items }] }, { store: store.tasks, account, categories, ...(openLimit === undefined ? {} : { openLimit }) });
|
|
93
118
|
result.added += pass.added;
|
|
94
119
|
result.closed += pass.closed;
|
|
95
120
|
result.review += pass.review;
|
|
121
|
+
if (pass.held) {
|
|
122
|
+
result.held = (result.held ?? 0) + pass.held;
|
|
123
|
+
result.heldChats = (result.heldChats ?? 0) + (pass.heldChats ?? 0);
|
|
124
|
+
}
|
|
96
125
|
if (result.until === null || chat.lastStoredAt > result.until)
|
|
97
126
|
result.until = chat.lastStoredAt;
|
|
98
127
|
}
|
|
@@ -103,15 +132,17 @@ export const FIRST_PASS_DAYS = 14;
|
|
|
103
132
|
/**
|
|
104
133
|
* The task rules over what a sync stored, from where the account's last pass stopped. The first pass reads only
|
|
105
134
|
* chats with a message in the last FIRST_PASS_DAYS, so a store that already holds years of chats opens no task
|
|
106
|
-
* for a question asked long ago
|
|
135
|
+
* for a question asked long ago, and opens at most `task_first_pass_per_chat` per chat (0 by default): what it
|
|
136
|
+
* holds back is counted, for the owner to build with `tasks apply`.
|
|
107
137
|
*/
|
|
108
138
|
export const applyTaskRulesSinceLastPass = async (store, account, now = new Date()) => {
|
|
109
139
|
const since = await store.sync.taskRulesStop(account);
|
|
110
140
|
const newerThan = since === null ? new Date(now.getTime() - FIRST_PASS_DAYS * 86_400_000).toISOString() : undefined;
|
|
111
|
-
const
|
|
141
|
+
const openLimit = since === null ? await store.tasks.firstPassPerChat() : undefined;
|
|
142
|
+
const { until, ...result } = await applyTaskRulesToStored(store, account, since ?? undefined, newerThan, openLimit);
|
|
112
143
|
if (until !== null && until !== since)
|
|
113
144
|
await store.sync.setTaskRulesStop(account, until);
|
|
114
|
-
return
|
|
145
|
+
return result;
|
|
115
146
|
};
|
|
116
147
|
/**
|
|
117
148
|
* A reply rule's `task` action: one `request` task pointing at the message. The service gives back
|
|
@@ -150,4 +181,20 @@ const ownerAnswered = (messages, index) => {
|
|
|
150
181
|
return repliedSender != null && repliedSender === message.senderId;
|
|
151
182
|
});
|
|
152
183
|
};
|
|
184
|
+
/**
|
|
185
|
+
* `tasks apply`: the task rules over the newest `last` stored messages of chats the owner names — how a chat's
|
|
186
|
+
* history becomes tasks when the first sync left it alone. Without `yes` it changes nothing and lists what would
|
|
187
|
+
* open; with it, it opens them through the duplicate check, as a sync's pass would.
|
|
188
|
+
*/
|
|
189
|
+
export const applyTaskRulesToChats = async (store, account, chatIds, { last = ARRIVAL_WINDOW, yes = false } = {}) => {
|
|
190
|
+
const categories = await store.tasks.categories();
|
|
191
|
+
const passes = [];
|
|
192
|
+
for (const chat of chatIds) {
|
|
193
|
+
const page = await store.messages.messages(account, chat, { limit: Math.min(last, STORED_PASS_LIMIT) });
|
|
194
|
+
const tasks = [];
|
|
195
|
+
const pass = await applyTaskRules({ chats: [{ id: chat, messages: page.items }] }, { store: store.tasks, account, categories, dryRun: !yes, onHeld: (task) => tasks.push(task) });
|
|
196
|
+
passes.push({ chat, messages: page.items.length, ...pass, tasks });
|
|
197
|
+
}
|
|
198
|
+
return passes;
|
|
199
|
+
};
|
|
153
200
|
//# sourceMappingURL=task-rules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-rules.js","sourceRoot":"","sources":["../../src/services/task-rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task-rules.js","sourceRoot":"","sources":["../../src/services/task-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,9 @@ export interface TaskCloseStore {
|
|
|
7
7
|
allowed?: boolean | null;
|
|
8
8
|
min?: number | null;
|
|
9
9
|
}): Promise<void>;
|
|
10
|
+
/** How many tasks the first rule pass after a sync may open per chat. */
|
|
11
|
+
firstPassPerChat(): Promise<number>;
|
|
12
|
+
saveFirstPassPerChat(value: number | null): Promise<void>;
|
|
10
13
|
closeSuggestion(id: string): Promise<CloseSuggestion | null>;
|
|
11
14
|
/**
|
|
12
15
|
* Marks an open task with the close an agent would make, replacing an earlier one, and releases its claim so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-close-store.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/task-close-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EACL,KAAK,kBAAkB,EAEvB,KAAK,eAAe,EAKrB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"task-close-store.d.ts","sourceRoot":"","sources":["../../../src/store/sqlite/task-close-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EACL,KAAK,kBAAkB,EAEvB,KAAK,eAAe,EAKrB,MAAM,iBAAiB,CAAA;AAMxB,MAAM,WAAW,cAAc;IAC7B,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACzC,cAAc,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxF,yEAAyE;IACzE,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACnC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAA;IAC5D;;;OAGG;IACH,YAAY,CACV,EAAE,EAAE,MAAM,EACV,UAAU,EAAE;QAAE,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,EACpF,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,2DAA2D;IAC3D,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnE;AAED,eAAO,MAAM,aAAa,YAAa,YAAY,KAAG,cA0DrD,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { authorActor } from "./memories.js";
|
|
3
3
|
import { CLEAR_SUGGESTION, certaintyOf, closeSuggestionOf, saveAgentClose, storeAgentClose, } from "./task-close.js";
|
|
4
|
+
import { DEFAULT_FIRST_PASS_PER_CHAT, savedFirstPassPerChat, saveFirstPassPerChat } from "./task-first-pass.js";
|
|
4
5
|
import { taskRowOf } from "./things.js";
|
|
5
6
|
import { write } from "./transaction.js";
|
|
6
7
|
import { recordTaskEvent } from "./work-tasks.js";
|
|
@@ -18,6 +19,8 @@ export const taskCloseOver = (context) => {
|
|
|
18
19
|
return {
|
|
19
20
|
agentClose: async () => storeAgentClose(database),
|
|
20
21
|
saveAgentClose: async (change) => write(database, () => saveAgentClose(database, change, now())),
|
|
22
|
+
firstPassPerChat: async () => savedFirstPassPerChat(database) ?? DEFAULT_FIRST_PASS_PER_CHAT,
|
|
23
|
+
saveFirstPassPerChat: async (value) => write(database, () => saveFirstPassPerChat(database, value, now())),
|
|
21
24
|
closeSuggestion: async (id) => closeSuggestionOf(database, liveRow(id)),
|
|
22
25
|
suggestClose: async (id, suggestion, by) => write(database, () => {
|
|
23
26
|
const row = liveRow(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-close-store.js","sourceRoot":"","sources":["../../../src/store/sqlite/task-close-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAe,WAAW,EAAE,MAAM,eAAe,CAAA;AAExD,OAAO,EAEL,gBAAgB,EAEhB,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"task-close-store.js","sourceRoot":"","sources":["../../../src/store/sqlite/task-close-store.ts"],"names":[],"mappings":"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"}
|