@lemoncat7/dsh-partner 1.0.0 → 1.3.9

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 (90) hide show
  1. package/README.md +24 -7
  2. package/lib/agent-runtime.d.ts +53 -4
  3. package/lib/agent-runtime.d.ts.map +1 -1
  4. package/lib/agent-runtime.js +674 -52
  5. package/lib/agent-runtime.js.map +1 -1
  6. package/lib/api.d.ts +2 -0
  7. package/lib/api.d.ts.map +1 -1
  8. package/lib/api.js +29 -2
  9. package/lib/api.js.map +1 -1
  10. package/lib/autonomy.d.ts +3 -0
  11. package/lib/autonomy.d.ts.map +1 -0
  12. package/lib/autonomy.js +44 -0
  13. package/lib/autonomy.js.map +1 -0
  14. package/lib/channel-message.d.ts +23 -0
  15. package/lib/channel-message.d.ts.map +1 -0
  16. package/lib/channel-message.js +8 -0
  17. package/lib/channel-message.js.map +1 -0
  18. package/lib/channels/manager.d.ts +28 -1
  19. package/lib/channels/manager.d.ts.map +1 -1
  20. package/lib/channels/manager.js +230 -15
  21. package/lib/channels/manager.js.map +1 -1
  22. package/lib/channels/weixin/api.d.ts +2 -0
  23. package/lib/channels/weixin/api.d.ts.map +1 -1
  24. package/lib/channels/weixin/api.js +80 -1
  25. package/lib/channels/weixin/api.js.map +1 -1
  26. package/lib/channels/weixin/media.d.ts +4 -0
  27. package/lib/channels/weixin/media.d.ts.map +1 -0
  28. package/lib/channels/weixin/media.js +78 -0
  29. package/lib/channels/weixin/media.js.map +1 -0
  30. package/lib/channels/weixin/types.d.ts +19 -2
  31. package/lib/channels/weixin/types.d.ts.map +1 -1
  32. package/lib/client-api.d.ts +43 -0
  33. package/lib/client-api.d.ts.map +1 -1
  34. package/lib/client-api.js.map +1 -1
  35. package/lib/client.d.ts.map +1 -1
  36. package/lib/client.js +939 -481
  37. package/lib/client.js.map +4 -4
  38. package/lib/concern-domain.d.ts +121 -0
  39. package/lib/concern-domain.d.ts.map +1 -0
  40. package/lib/concern-domain.js +182 -0
  41. package/lib/concern-domain.js.map +1 -0
  42. package/lib/concern-notification.d.ts +6 -0
  43. package/lib/concern-notification.d.ts.map +1 -0
  44. package/lib/concern-notification.js +27 -0
  45. package/lib/concern-notification.js.map +1 -0
  46. package/lib/concern-sources.d.ts +10 -0
  47. package/lib/concern-sources.d.ts.map +1 -0
  48. package/lib/concern-sources.js +81 -0
  49. package/lib/concern-sources.js.map +1 -0
  50. package/lib/concern-store.d.ts +41 -0
  51. package/lib/concern-store.d.ts.map +1 -0
  52. package/lib/concern-store.js +527 -0
  53. package/lib/concern-store.js.map +1 -0
  54. package/lib/daily-review.d.ts +3 -1
  55. package/lib/daily-review.d.ts.map +1 -1
  56. package/lib/daily-review.js +8 -2
  57. package/lib/daily-review.js.map +1 -1
  58. package/lib/domain.d.ts +4 -1
  59. package/lib/domain.d.ts.map +1 -1
  60. package/lib/domain.js +23 -0
  61. package/lib/domain.js.map +1 -1
  62. package/lib/heartbeat.d.ts +10 -2
  63. package/lib/heartbeat.d.ts.map +1 -1
  64. package/lib/heartbeat.js +81 -17
  65. package/lib/heartbeat.js.map +1 -1
  66. package/lib/index.d.ts.map +1 -1
  67. package/lib/index.js +39 -9
  68. package/lib/index.js.map +1 -1
  69. package/lib/memory-domain.d.ts +3 -0
  70. package/lib/memory-domain.d.ts.map +1 -1
  71. package/lib/memory-reflection.d.ts +8 -3
  72. package/lib/memory-reflection.d.ts.map +1 -1
  73. package/lib/memory-reflection.js +66 -13
  74. package/lib/memory-reflection.js.map +1 -1
  75. package/lib/memory-store.d.ts +8 -0
  76. package/lib/memory-store.d.ts.map +1 -1
  77. package/lib/memory-store.js +27 -0
  78. package/lib/memory-store.js.map +1 -1
  79. package/lib/store.d.ts.map +1 -1
  80. package/lib/store.js +39 -3
  81. package/lib/store.js.map +1 -1
  82. package/lib/time-format.d.ts +2 -0
  83. package/lib/time-format.d.ts.map +1 -0
  84. package/lib/time-format.js +20 -0
  85. package/lib/time-format.js.map +1 -0
  86. package/lib/workspace-ownership.d.ts +5 -0
  87. package/lib/workspace-ownership.d.ts.map +1 -0
  88. package/lib/workspace-ownership.js +18 -0
  89. package/lib/workspace-ownership.js.map +1 -0
  90. package/package.json +13 -2
@@ -0,0 +1,121 @@
1
+ export type ConcernOrigin = 'explicit' | 'implicit';
2
+ export type ConcernState = 'active' | 'watching' | 'snoozed' | 'resolved' | 'archived';
3
+ export type ConcernWatchKind = 'auto' | 'knowledge' | 'workspace' | 'web';
4
+ export type ObservationDecision = 'drop' | 'remember' | 'defer' | 'feed' | 'notify';
5
+ export type NotificationRuleEffect = 'auto' | 'notify' | 'suppress';
6
+ export type ConcernResourceKind = 'file' | 'knowledge';
7
+ export interface ConcernResource {
8
+ kind: ConcernResourceKind;
9
+ locator: string;
10
+ label: string;
11
+ }
12
+ export interface PartnerConcern {
13
+ id: string;
14
+ companionId: string;
15
+ scopeId: string;
16
+ subject: string;
17
+ reason: string;
18
+ origin: ConcernOrigin;
19
+ state: ConcernState;
20
+ priority: number;
21
+ confidence: number;
22
+ score: number;
23
+ watchKind: ConcernWatchKind;
24
+ watchQuery: string;
25
+ resources: ConcernResource[];
26
+ createdAt: number;
27
+ updatedAt: number;
28
+ lastActivityAt: number;
29
+ nextCheckAt: number;
30
+ lastCheckedAt?: number;
31
+ lastMentionedAt?: number;
32
+ resolvedAt?: number;
33
+ }
34
+ export interface ConcernCandidate {
35
+ subject: string;
36
+ reason: string;
37
+ operation: 'upsert' | 'resolve' | 'dismiss';
38
+ priority: number;
39
+ confidence: number;
40
+ watchKind: ConcernWatchKind;
41
+ watchQuery: string;
42
+ resources?: ConcernResource[];
43
+ }
44
+ export interface ConcernObservationCandidate {
45
+ concernId: string;
46
+ changed: boolean;
47
+ event: string;
48
+ evidence: string;
49
+ source: string;
50
+ relevance: number;
51
+ confidence: number;
52
+ actionability: number;
53
+ nextCheckInMinutes?: number;
54
+ notificationRuleEffect?: NotificationRuleEffect;
55
+ notificationRuleReason?: string;
56
+ }
57
+ export interface ConcernObservation {
58
+ id: string;
59
+ concernId: string;
60
+ companionId: string;
61
+ scopeId: string;
62
+ fingerprint: string;
63
+ event: string;
64
+ evidence: string;
65
+ source: string;
66
+ novelty: number;
67
+ relevance: number;
68
+ confidence: number;
69
+ actionability: number;
70
+ interruptScore: number;
71
+ decision: ObservationDecision;
72
+ notificationRuleEffect: NotificationRuleEffect;
73
+ notificationRuleReason: string;
74
+ decisionReason: string;
75
+ createdAt: number;
76
+ mentionedAt?: number;
77
+ }
78
+ export interface ConcernActivity {
79
+ concerns: PartnerConcern[];
80
+ observations: ConcernObservation[];
81
+ }
82
+ export type ConcernLifecycleAction = 'ignore' | 'resolve';
83
+ export interface ConcernLifecycleRequest {
84
+ action: ConcernLifecycleAction;
85
+ target: string;
86
+ }
87
+ export interface AppliedConcernLifecycleDirective extends ConcernLifecycleRequest {
88
+ concernId: string;
89
+ subject: string;
90
+ }
91
+ export declare function concernInterval(priority: number, origin: ConcernOrigin): number;
92
+ export declare const MIN_CONCERN_CHECK_MINUTES = 30;
93
+ export declare const MAX_CONCERN_CHECK_MINUTES: number;
94
+ export declare function boundedConcernCheckMinutes(value: unknown): number | undefined;
95
+ export declare function concernDecay(score: number, lastActivityAt: number, now: number, origin: ConcernOrigin): number;
96
+ export declare function interruptDecision(input: {
97
+ priority: number;
98
+ concernConfidence: number;
99
+ observationConfidence: number;
100
+ relevance: number;
101
+ novelty: number;
102
+ actionability: number;
103
+ recentlyMentioned: boolean;
104
+ firstObservation: boolean;
105
+ userRecentlyActive?: boolean;
106
+ notificationRuleEffect?: NotificationRuleEffect;
107
+ }): {
108
+ score: number;
109
+ decision: ObservationDecision;
110
+ reason: string;
111
+ };
112
+ export declare function normalizeConcernSubject(value: string): string;
113
+ /** Parse only explicit, named lifecycle commands; ambiguous references remain model-assisted. */
114
+ export declare function concernLifecycleRequest(value: string): ConcernLifecycleRequest | undefined;
115
+ /** Conservative fuzzy score for a named command and an existing concern subject. */
116
+ export declare function concernSubjectSimilarity(leftValue: string, rightValue: string): number;
117
+ export declare function selectConcernLifecycleTarget(request: ConcernLifecycleRequest, concerns: readonly PartnerConcern[]): PartnerConcern | undefined;
118
+ export declare function focusedConcernQuery(value: string): string;
119
+ export declare function extractConcernResources(value: string): ConcernResource[];
120
+ export declare function clamp(value: number): number;
121
+ //# sourceMappingURL=concern-domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concern-domain.d.ts","sourceRoot":"","sources":["../src/concern-domain.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,CAAA;AACnD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;AACtF,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,KAAK,CAAA;AACzE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AACnF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;AACnE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,WAAW,CAAA;AAEtD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,EAAE,YAAY,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,gBAAgB,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,eAAe,EAAE,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,gBAAgB,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAC/C,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,sBAAsB,EAAE,MAAM,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,YAAY,EAAE,kBAAkB,EAAE,CAAA;CACnC;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEzD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,sBAAsB,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gCAAiC,SAAQ,uBAAuB;IAC/E,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAG/E;AAED,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAC3C,eAAO,MAAM,yBAAyB,QAAe,CAAA;AAErD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG7E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAI9G;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,gBAAgB,EAAE,OAAO,CAAA;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;CAChD,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA6BnE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,iGAAiG;AACjG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAY1F;AAED,oFAAoF;AACpF,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAUtF;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,uBAAuB,EAChC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAClC,cAAc,GAAG,SAAS,CAW5B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE,CA0BxE;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C"}
@@ -0,0 +1,182 @@
1
+ export function concernInterval(priority, origin) {
2
+ const hours = priority >= .85 ? 3 : priority >= .65 ? 8 : priority >= .4 ? 24 : 72;
3
+ return hours * 3_600_000 * (origin === 'explicit' ? .75 : 1);
4
+ }
5
+ export const MIN_CONCERN_CHECK_MINUTES = 30;
6
+ export const MAX_CONCERN_CHECK_MINUTES = 30 * 24 * 60;
7
+ export function boundedConcernCheckMinutes(value) {
8
+ if (typeof value !== 'number' || !Number.isFinite(value))
9
+ return undefined;
10
+ return Math.min(MAX_CONCERN_CHECK_MINUTES, Math.max(MIN_CONCERN_CHECK_MINUTES, Math.round(value)));
11
+ }
12
+ export function concernDecay(score, lastActivityAt, now, origin) {
13
+ if (origin === 'explicit')
14
+ return score;
15
+ const inactiveDays = Math.max(0, (now - lastActivityAt) / 86_400_000);
16
+ return clamp(score * Math.exp(-inactiveDays / 30));
17
+ }
18
+ export function interruptDecision(input) {
19
+ if (input.observationConfidence < .45 || input.relevance < .35) {
20
+ return { score: 0, decision: 'drop', reason: '证据置信度或相关性不足' };
21
+ }
22
+ let score = input.priority * .24
23
+ + input.concernConfidence * .13
24
+ + input.observationConfidence * .17
25
+ + input.relevance * .2
26
+ + input.novelty * .12
27
+ + input.actionability * .14;
28
+ if (input.recentlyMentioned)
29
+ score -= .24;
30
+ if (input.firstObservation)
31
+ score -= .18;
32
+ if (input.userRecentlyActive)
33
+ score -= .12;
34
+ score = clamp(score);
35
+ if (input.notificationRuleEffect === 'notify' && input.observationConfidence >= .75 && input.relevance >= .75) {
36
+ return { score: Math.max(.82, score), decision: 'notify', reason: '命中关联知识文档中的明确提醒条件' };
37
+ }
38
+ if (input.notificationRuleEffect === 'suppress' && score >= .82) {
39
+ return { score: .819, decision: 'feed', reason: '关联知识文档明确要求暂不主动提醒' };
40
+ }
41
+ const decision = score >= .82 ? 'notify' : score >= .64 ? 'feed' : score >= .42 ? 'defer' : 'remember';
42
+ return {
43
+ score,
44
+ decision,
45
+ reason: decision === 'notify' ? '打扰分数达到主动提醒阈值'
46
+ : decision === 'feed' ? '变化进入伙伴动态,不主动打扰'
47
+ : decision === 'defer' ? '变化与未来对话相关时顺带提及'
48
+ : '变化仅静默记录',
49
+ };
50
+ }
51
+ export function normalizeConcernSubject(value) {
52
+ return value.toLocaleLowerCase().replace(/[\s\p{P}\p{S}]+/gu, '');
53
+ }
54
+ /** Parse only explicit, named lifecycle commands; ambiguous references remain model-assisted. */
55
+ export function concernLifecycleRequest(value) {
56
+ const text = value.normalize('NFKC').replace(/\s+/gu, ' ').trim();
57
+ if (!text || /[??]\s*$/u.test(text) || /^(?:为什么|为何|怎么|怎会|是不是|是否|难道)/u.test(text))
58
+ return undefined;
59
+ const ignoreVerb = '(?:不|不要|不用|无需|别|取消|停止)(?:再|继续)?(?:关注|留意|盯着|盯|跟进|惦记|记着|巡检|巡查|观察|检查|管)';
60
+ const leading = text.match(new RegExp(`^(?:(?:请|麻烦)[,,:: ]*)?(?:(?:我|你|伙伴)(?:现在|以后|也)?[,,:: ]*)?(?:让(?:伙伴|你)[,,:: ]*)?${ignoreVerb}(?:一下)?[,,:: ]*([^,。!?;;\\n]+)`, 'u'));
61
+ const trailing = text.match(new RegExp(`^([^,。!?;;\\n]+?)[,,:: ]*(?:我|让(?:伙伴|你))?[,,:: ]*${ignoreVerb}(?:了|啦|吧)?$`, 'u'));
62
+ const ignored = cleanLifecycleTarget(leading?.[1] ?? trailing?.[1] ?? '');
63
+ if (ignored)
64
+ return { action: 'ignore', target: ignored };
65
+ const resolved = text.match(/^([^,。!?;;\n]+?)[,,:: ]*(?:已经|已)?(?:解决|完成|搞定|闭环)(?:了|啦|吧)?$/u);
66
+ const resolvedTarget = cleanLifecycleTarget(resolved?.[1] ?? '');
67
+ return resolvedTarget ? { action: 'resolve', target: resolvedTarget } : undefined;
68
+ }
69
+ /** Conservative fuzzy score for a named command and an existing concern subject. */
70
+ export function concernSubjectSimilarity(leftValue, rightValue) {
71
+ const left = normalizeConcernSubject(leftValue.normalize('NFKC'));
72
+ const right = normalizeConcernSubject(rightValue.normalize('NFKC'));
73
+ if (!left || !right)
74
+ return 0;
75
+ if (left === right)
76
+ return 1;
77
+ const longest = Math.max(left.length, right.length);
78
+ const containment = left.includes(right) || right.includes(left) ? Math.min(left.length, right.length) / longest : 0;
79
+ const subsequence = longestCommonSubsequence(left, right) / longest;
80
+ const pairs = bigramDice(left, right);
81
+ return Math.max(containment, subsequence, pairs);
82
+ }
83
+ export function selectConcernLifecycleTarget(request, concerns) {
84
+ const ranked = concerns
85
+ .filter(item => item.state !== 'archived')
86
+ .map(item => ({ item, score: concernSubjectSimilarity(request.target, item.subject) }))
87
+ .filter(item => item.score >= .74)
88
+ .sort((left, right) => right.score - left.score || right.item.updatedAt - left.item.updatedAt);
89
+ const first = ranked[0];
90
+ if (first === undefined)
91
+ return undefined;
92
+ const second = ranked[1];
93
+ if (first.score < 1 && second !== undefined && first.score - second.score < .1)
94
+ return undefined;
95
+ return first.item;
96
+ }
97
+ export function focusedConcernQuery(value) {
98
+ return value.normalize('NFKC')
99
+ .replace(/(?:请|麻烦|帮我|替我|让伙伴|让你|关注|留意|盯着|跟进|惦记|记着|帮忙看看)/gu, ' ')
100
+ .replace(/[\/·||]+/gu, ' ')
101
+ .replace(/[,。!?、;;,.!?::()[\]{}]+/gu, ' ')
102
+ .replace(/\s+/gu, ' ')
103
+ .trim();
104
+ }
105
+ export function extractConcernResources(value) {
106
+ const resources = [];
107
+ const knowledgeRanges = [];
108
+ for (const match of value.matchAll(/@知识库\[([^\]/]{1,100})(?:\/([^\]]{1,240}))?\]/gu)) {
109
+ const token = match[0];
110
+ const base = match[1]?.trim();
111
+ if (!token || !base || match.index === undefined)
112
+ continue;
113
+ const document = match[2]?.trim();
114
+ knowledgeRanges.push([match.index, match.index + token.length]);
115
+ resources.push({ kind: 'knowledge', locator: document ? `${base}/${document}` : base, label: document ? `${base} · ${document}` : base });
116
+ }
117
+ for (const match of value.matchAll(/(?:^|\s)@(?:"([^"]+)"|([^\s]+))/gu)) {
118
+ const raw = (match[1] ?? match[2] ?? '').trim().replace(/[,。!?、;;,.!?]+$/u, '');
119
+ const at = (match.index ?? 0) + (match[0]?.indexOf('@') ?? 0);
120
+ if (!raw || raw.startsWith('知识库[') || knowledgeRanges.some(([start, end]) => at >= start && at < end))
121
+ continue;
122
+ const normalized = raw.replaceAll('\\', '/').replace(/^\.\//, '');
123
+ if (!normalized || normalized.startsWith('/') || normalized.split('/').includes('..') || /(?:^|\/)(?:memory|concerns)(?:\/|$)/iu.test(normalized))
124
+ continue;
125
+ resources.push({ kind: 'file', locator: normalized.slice(0, 500), label: normalized.slice(0, 240) });
126
+ }
127
+ const seen = new Set();
128
+ return resources.filter(item => {
129
+ const key = `${item.kind}\u0000${item.locator.toLocaleLowerCase('zh-CN')}`;
130
+ if (seen.has(key))
131
+ return false;
132
+ seen.add(key);
133
+ return true;
134
+ }).slice(0, 8);
135
+ }
136
+ export function clamp(value) {
137
+ return Number.isFinite(value) ? Math.min(1, Math.max(0, value)) : .5;
138
+ }
139
+ function cleanLifecycleTarget(value) {
140
+ const target = value
141
+ .replace(/^[“”"'「」『』\s]+|[“”"'「」『』\s]+$/gu, '')
142
+ .replace(/^(?:关于|对于|对|这个|这件事|那个)[,,:: ]*/u, '')
143
+ .replace(/[,,:: ]*(?:了|啦|吧|就行|即可)$/u, '')
144
+ .trim();
145
+ return /^(?:这个|这件事|那个|它|这些|那件事)$/u.test(target) || normalizeConcernSubject(target).length < 2 ? '' : target.slice(0, 300);
146
+ }
147
+ function longestCommonSubsequence(left, right) {
148
+ const previous = new Uint16Array(right.length + 1);
149
+ const current = new Uint16Array(right.length + 1);
150
+ for (const leftCharacter of left) {
151
+ current.fill(0);
152
+ let column = 1;
153
+ for (const rightCharacter of right) {
154
+ current[column] = leftCharacter === rightCharacter
155
+ ? (previous[column - 1] ?? 0) + 1
156
+ : Math.max(previous[column] ?? 0, current[column - 1] ?? 0);
157
+ column += 1;
158
+ }
159
+ previous.set(current);
160
+ }
161
+ return previous[right.length] ?? 0;
162
+ }
163
+ function bigramDice(left, right) {
164
+ if (left.length < 2 || right.length < 2)
165
+ return 0;
166
+ const available = new Map();
167
+ for (let index = 0; index < left.length - 1; index += 1) {
168
+ const pair = left.slice(index, index + 2);
169
+ available.set(pair, (available.get(pair) ?? 0) + 1);
170
+ }
171
+ let matches = 0;
172
+ for (let index = 0; index < right.length - 1; index += 1) {
173
+ const pair = right.slice(index, index + 2);
174
+ const count = available.get(pair) ?? 0;
175
+ if (count <= 0)
176
+ continue;
177
+ matches += 1;
178
+ available.set(pair, count - 1);
179
+ }
180
+ return (2 * matches) / (left.length + right.length - 2);
181
+ }
182
+ //# sourceMappingURL=concern-domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concern-domain.js","sourceRoot":"","sources":["../src/concern-domain.ts"],"names":[],"mappings":"AAoGA,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,MAAqB;IACrE,MAAM,KAAK,GAAG,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAClF,OAAO,KAAK,GAAG,SAAS,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAErD,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACpG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,cAAsB,EAAE,GAAW,EAAE,MAAqB;IACpG,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,KAAK,CAAA;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,UAAU,CAAC,CAAA;IACrE,OAAO,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAWjC;IACC,IAAI,KAAK,CAAC,qBAAqB,GAAG,GAAG,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;QAC/D,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;IAC9D,CAAC;IACD,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,GAAG;UAC5B,KAAK,CAAC,iBAAiB,GAAG,GAAG;UAC7B,KAAK,CAAC,qBAAqB,GAAG,GAAG;UACjC,KAAK,CAAC,SAAS,GAAG,EAAE;UACpB,KAAK,CAAC,OAAO,GAAG,GAAG;UACnB,KAAK,CAAC,aAAa,GAAG,GAAG,CAAA;IAC7B,IAAI,KAAK,CAAC,iBAAiB;QAAE,KAAK,IAAI,GAAG,CAAA;IACzC,IAAI,KAAK,CAAC,gBAAgB;QAAE,KAAK,IAAI,GAAG,CAAA;IACxC,IAAI,KAAK,CAAC,kBAAkB;QAAE,KAAK,IAAI,GAAG,CAAA;IAC1C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IACpB,IAAI,KAAK,CAAC,sBAAsB,KAAK,QAAQ,IAAI,KAAK,CAAC,qBAAqB,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;QAC9G,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;IACxF,CAAC;IACD,IAAI,KAAK,CAAC,sBAAsB,KAAK,UAAU,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QAChE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;IACtE,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAA;IACtG,OAAO;QACL,KAAK;QACL,QAAQ;QACR,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc;YAC5C,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB;gBACtC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB;oBACvC,CAAC,CAAC,SAAS;KAClB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,OAAO,KAAK,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAA;AACnE,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACjE,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IAClG,MAAM,UAAU,GAAG,sEAAsE,CAAA;IACzF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,kFAAkF,UAAU,gCAAgC,EAAE,GAAG,CAAC,CAAC,CAAA;IACzK,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,oDAAoD,UAAU,aAAa,EAAE,GAAG,CAAC,CAAC,CAAA;IACzH,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACzE,IAAI,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAEzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAA;IAC3F,MAAM,cAAc,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAChE,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnF,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,UAAkB;IAC5E,MAAM,IAAI,GAAG,uBAAuB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IACjE,MAAM,KAAK,GAAG,uBAAuB,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IACnE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAA;IAC7B,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACpH,MAAM,WAAW,GAAG,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,OAAO,CAAA;IACnE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACrC,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,OAAgC,EAChC,QAAmC;IAEnC,MAAM,MAAM,GAAG,QAAQ;SACpB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC;SACzC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACtF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;SACjC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAChG,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACxB,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,EAAE;QAAE,OAAO,SAAS,CAAA;IAChG,OAAO,KAAK,CAAC,IAAI,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;SAC3B,OAAO,CAAC,gDAAgD,EAAE,GAAG,CAAC;SAC9D,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC;SAC1B,OAAO,CAAC,2BAA2B,EAAE,GAAG,CAAC;SACzC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,IAAI,EAAE,CAAA;AACX,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,SAAS,GAAsB,EAAE,CAAA;IACvC,MAAM,eAAe,GAA4B,EAAE,CAAA;IACnD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,gDAAgD,CAAC,EAAE,CAAC;QACrF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;QAC7B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,SAAQ;QAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;QACjC,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/D,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3I,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;QACxE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;QAC/E,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC;YAAE,SAAQ;QAC/G,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QACjE,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,uCAAuC,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,SAAQ;QAC3J,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IACtG,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAA;QAC1E,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACb,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACtE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,MAAM,GAAG,KAAK;SACjB,OAAO,CAAC,iCAAiC,EAAE,EAAE,CAAC;SAC9C,OAAO,CAAC,iCAAiC,EAAE,EAAE,CAAC;SAC9C,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;SACxC,IAAI,EAAE,CAAA;IACT,OAAO,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC3H,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,KAAa;IAC3D,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACjD,KAAK,MAAM,aAAa,IAAI,IAAI,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACf,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,KAAK,MAAM,cAAc,IAAI,KAAK,EAAE,CAAC;YACnC,OAAO,CAAC,MAAM,CAAC,GAAG,aAAa,KAAK,cAAc;gBAChD,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;gBACjC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YAC7D,MAAM,IAAI,CAAC,CAAA;QACb,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACvB,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAAa;IAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QACzC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACrD,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,KAAK,IAAI,CAAC;YAAE,SAAQ;QACxB,OAAO,IAAI,CAAC,CAAA;QACZ,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACzD,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { SessionEvent } from '@deepseek-ai/dsh-session';
2
+ import type { PartnerConcern } from './concern-domain.js';
3
+ export declare const CONCERN_CREATED_NOTICE = "\u4F19\u4F34\u81EA\u52A8\u65B0\u589E\u5173\u6CE8";
4
+ export declare function renderConcernCreatedNotice(concerns: readonly PartnerConcern[]): string;
5
+ export declare function concernCreatedNoticeFromEvent(event: SessionEvent): string | undefined;
6
+ //# sourceMappingURL=concern-notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concern-notification.d.ts","sourceRoot":"","sources":["../src/concern-notification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,eAAO,MAAM,sBAAsB,qDAAa,CAAA;AAEhD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAYtF;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CASrF"}
@@ -0,0 +1,27 @@
1
+ export const CONCERN_CREATED_NOTICE = '伙伴自动新增关注';
2
+ export function renderConcernCreatedNotice(concerns) {
3
+ const lines = concerns.flatMap((concern, index) => [
4
+ `${index + 1}. ${concern.subject}`,
5
+ ...(concern.reason ? [` ${concern.reason}`] : []),
6
+ ]);
7
+ return [
8
+ `伙伴刚刚自动新增了 ${concerns.length} 条关注:`,
9
+ '',
10
+ ...lines,
11
+ '',
12
+ '可以在「伙伴 > 在意的事」中查看;不需要时选择「别管这个」。',
13
+ ].join('\n');
14
+ }
15
+ export function concernCreatedNoticeFromEvent(event) {
16
+ if (event.type !== 'user/message')
17
+ return undefined;
18
+ const source = event.data.source;
19
+ if (source.kind !== 'plugin' || source.plugin !== '@lemoncat7/dsh-partner'
20
+ || source.form !== 'notice' || source.summary !== CONCERN_CREATED_NOTICE)
21
+ return undefined;
22
+ const value = event.data.content
23
+ .filter((block) => block.type === 'text')
24
+ .map(block => block.text.trim()).filter(Boolean).join('\n');
25
+ return value || undefined;
26
+ }
27
+ //# sourceMappingURL=concern-notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concern-notification.js","sourceRoot":"","sources":["../src/concern-notification.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAA;AAEhD,MAAM,UAAU,0BAA0B,CAAC,QAAmC;IAC5E,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,GAAG,KAAK,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE;QAClC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC,CAAA;IACF,OAAO;QACL,aAAa,QAAQ,CAAC,MAAM,OAAO;QACnC,EAAE;QACF,GAAG,KAAK;QACR,EAAE;QACF,iCAAiC;KAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAmB;IAC/D,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,SAAS,CAAA;IACnD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAA;IAChC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,wBAAwB;WACrE,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,sBAAsB;QAAE,OAAO,SAAS,CAAA;IAC5F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO;SAC7B,MAAM,CAAC,CAAC,KAAK,EAA2C,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;SACjF,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7D,OAAO,KAAK,IAAI,SAAS,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface ConcernSource {
2
+ kind: 'file' | 'knowledge';
3
+ label: string;
4
+ detail: string;
5
+ token: string;
6
+ }
7
+ /** Bounded, symlink-free discovery for files that a partner can safely reference. */
8
+ export declare function listConcernFileSources(root: string, query?: string, limit?: number): Promise<ConcernSource[]>;
9
+ export declare function fileToken(locator: string): string;
10
+ //# sourceMappingURL=concern-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concern-sources.d.ts","sourceRoot":"","sources":["../src/concern-sources.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AASD,qFAAqF;AACrF,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA8C3G;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -0,0 +1,81 @@
1
+ import { readdir } from 'node:fs/promises';
2
+ import { join, relative, sep } from 'node:path';
3
+ const EXCLUDED_DIRECTORIES = new Set([
4
+ '.cache', '.git', '.svn', 'concerns', 'memory', 'node_modules',
5
+ ]);
6
+ const MAX_DIRECTORY_COUNT = 120;
7
+ const MAX_ENTRY_COUNT = 1_500;
8
+ const MAX_DEPTH = 6;
9
+ /** Bounded, symlink-free discovery for files that a partner can safely reference. */
10
+ export async function listConcernFileSources(root, query = '', limit = 24) {
11
+ const boundedLimit = Math.max(1, Math.min(Math.trunc(limit), 40));
12
+ const normalizedQuery = fold(query);
13
+ const queue = [{ path: root, depth: 0 }];
14
+ const matches = [];
15
+ let directories = 0;
16
+ let entries = 0;
17
+ while (queue.length > 0 && directories < MAX_DIRECTORY_COUNT && entries < MAX_ENTRY_COUNT) {
18
+ const current = queue.shift();
19
+ if (current === undefined)
20
+ break;
21
+ directories += 1;
22
+ let children;
23
+ try {
24
+ children = await readdir(current.path, { withFileTypes: true });
25
+ }
26
+ catch {
27
+ continue;
28
+ }
29
+ children.sort((left, right) => left.name.localeCompare(right.name, 'zh-CN'));
30
+ for (const child of children) {
31
+ entries += 1;
32
+ if (entries > MAX_ENTRY_COUNT)
33
+ break;
34
+ if (child.name.startsWith('.') || child.isSymbolicLink())
35
+ continue;
36
+ const childPath = join(current.path, child.name);
37
+ if (child.isDirectory()) {
38
+ if (current.depth < MAX_DEPTH && !EXCLUDED_DIRECTORIES.has(child.name.toLocaleLowerCase('en-US'))) {
39
+ queue.push({ path: childPath, depth: current.depth + 1 });
40
+ }
41
+ continue;
42
+ }
43
+ if (!child.isFile())
44
+ continue;
45
+ const locator = relative(root, childPath).split(sep).join('/');
46
+ if (locator.includes('"'))
47
+ continue;
48
+ const score = matchScore(locator, normalizedQuery);
49
+ if (score < 0)
50
+ continue;
51
+ matches.push({
52
+ kind: 'file',
53
+ label: locator,
54
+ detail: locator.includes('/') ? `当前会话文件 · ${locator.slice(0, locator.lastIndexOf('/'))}` : '当前会话文件',
55
+ token: fileToken(locator),
56
+ score,
57
+ });
58
+ }
59
+ }
60
+ return matches
61
+ .sort((left, right) => right.score - left.score || left.label.localeCompare(right.label, 'zh-CN'))
62
+ .slice(0, boundedLimit)
63
+ .map(({ score: _score, ...source }) => source);
64
+ }
65
+ export function fileToken(locator) {
66
+ return /\s/u.test(locator) ? `@"${locator.replaceAll('"', '\\"')}"` : `@${locator}`;
67
+ }
68
+ function matchScore(value, query) {
69
+ if (!query)
70
+ return 0;
71
+ const folded = fold(value);
72
+ const index = folded.indexOf(query);
73
+ if (index < 0)
74
+ return -1;
75
+ const name = folded.slice(folded.lastIndexOf('/') + 1);
76
+ return (name === query ? 80 : name.startsWith(query) ? 60 : name.includes(query) ? 40 : 20) - index * .01;
77
+ }
78
+ function fold(value) {
79
+ return value.trim().replace(/^@(?:"|知识库\[)?/u, '').toLocaleLowerCase('zh-CN');
80
+ }
81
+ //# sourceMappingURL=concern-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concern-sources.js","sourceRoot":"","sources":["../src/concern-sources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { type ConcernActivity, type ConcernCandidate, type ConcernObservation, type ConcernObservationCandidate, type AppliedConcernLifecycleDirective, type ConcernOrigin, type PartnerConcern } from './concern-domain.js';
2
+ export interface LegacyConcernSeed {
3
+ scopeId: string;
4
+ subject: string;
5
+ reason: string;
6
+ confidence: number;
7
+ origin: ConcernOrigin;
8
+ }
9
+ export interface ConcernDueOptions {
10
+ now?: number;
11
+ limit?: number;
12
+ includeFuture?: boolean;
13
+ concernId?: string;
14
+ }
15
+ export declare class PartnerConcernStore {
16
+ private readonly root;
17
+ private readonly writes;
18
+ constructor(root: string);
19
+ migrateLegacy(companionId: string, seeds: LegacyConcernSeed[]): Promise<boolean>;
20
+ applyCandidates(companionId: string, scopeId: string, candidates: ConcernCandidate[], origin: ConcernOrigin, at?: number): Promise<PartnerConcern[]>;
21
+ createExplicit(companionId: string, scopeId: string, subject: string, reason?: string): Promise<PartnerConcern>;
22
+ applyUserDirective(companionId: string, scopeId: string, value: string, now?: number): Promise<AppliedConcernLifecycleDirective | undefined>;
23
+ list(companionId: string, scopeId?: string, includeArchived?: boolean, limit?: number): Promise<PartnerConcern[]>;
24
+ due(companionId: string, scopeId: string, options?: ConcernDueOptions): Promise<PartnerConcern[]>;
25
+ recordObservations(concerns: PartnerConcern[], candidates: ConcernObservationCandidate[], now?: number, userRecentlyActive?: boolean): Promise<{
26
+ observations: ConcernObservation[];
27
+ notifications: ConcernObservation[];
28
+ }>;
29
+ activity(companionId: string, limit?: number): Promise<ConcernActivity>;
30
+ deferred(companionId: string, scopeId: string, query: string, limit?: number): Promise<ConcernObservation[]>;
31
+ pendingNotifications(companionId: string, scopeId: string, limit?: number): Promise<ConcernObservation[]>;
32
+ markMentioned(companionId: string, observationIds: string[], now?: number): Promise<void>;
33
+ act(companionId: string, concernId: string, action: 'watch' | 'ignore' | 'prioritize' | 'resolve', now?: number): Promise<void>;
34
+ clear(companionId: string): Promise<void>;
35
+ private upsert;
36
+ private open;
37
+ private path;
38
+ private serial;
39
+ private serialValue;
40
+ }
41
+ //# sourceMappingURL=concern-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concern-store.d.ts","sourceRoot":"","sources":["../src/concern-store.ts"],"names":[],"mappings":"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"}