@lexwdex-org/opencode-dcp 3.2.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.
Files changed (135) hide show
  1. package/LICENSE +619 -0
  2. package/README.md +234 -0
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +7946 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/auth.d.ts +4 -0
  8. package/dist/lib/auth.d.ts.map +1 -0
  9. package/dist/lib/commands/compression-targets.d.ts +14 -0
  10. package/dist/lib/commands/compression-targets.d.ts.map +1 -0
  11. package/dist/lib/commands/context.d.ts +52 -0
  12. package/dist/lib/commands/context.d.ts.map +1 -0
  13. package/dist/lib/commands/decompress.d.ts +12 -0
  14. package/dist/lib/commands/decompress.d.ts.map +1 -0
  15. package/dist/lib/commands/help.d.ts +17 -0
  16. package/dist/lib/commands/help.d.ts.map +1 -0
  17. package/dist/lib/commands/index.d.ts +8 -0
  18. package/dist/lib/commands/index.d.ts.map +1 -0
  19. package/dist/lib/commands/manual.d.ts +23 -0
  20. package/dist/lib/commands/manual.d.ts.map +1 -0
  21. package/dist/lib/commands/recompress.d.ts +12 -0
  22. package/dist/lib/commands/recompress.d.ts.map +1 -0
  23. package/dist/lib/commands/stats.d.ts +15 -0
  24. package/dist/lib/commands/stats.d.ts.map +1 -0
  25. package/dist/lib/commands/sweep.d.ts +23 -0
  26. package/dist/lib/commands/sweep.d.ts.map +1 -0
  27. package/dist/lib/compress/index.d.ts +4 -0
  28. package/dist/lib/compress/index.d.ts.map +1 -0
  29. package/dist/lib/compress/message-utils.d.ts +8 -0
  30. package/dist/lib/compress/message-utils.d.ts.map +1 -0
  31. package/dist/lib/compress/message.d.ts +4 -0
  32. package/dist/lib/compress/message.d.ts.map +1 -0
  33. package/dist/lib/compress/pipeline.d.ts +29 -0
  34. package/dist/lib/compress/pipeline.d.ts.map +1 -0
  35. package/dist/lib/compress/protected-content.d.ts +7 -0
  36. package/dist/lib/compress/protected-content.d.ts.map +1 -0
  37. package/dist/lib/compress/range-utils.d.ts +10 -0
  38. package/dist/lib/compress/range-utils.d.ts.map +1 -0
  39. package/dist/lib/compress/range.d.ts +4 -0
  40. package/dist/lib/compress/range.d.ts.map +1 -0
  41. package/dist/lib/compress/search.d.ts +11 -0
  42. package/dist/lib/compress/search.d.ts.map +1 -0
  43. package/dist/lib/compress/state.d.ts +9 -0
  44. package/dist/lib/compress/state.d.ts.map +1 -0
  45. package/dist/lib/compress/timing.d.ts +18 -0
  46. package/dist/lib/compress/timing.d.ts.map +1 -0
  47. package/dist/lib/compress/types.d.ts +94 -0
  48. package/dist/lib/compress/types.d.ts.map +1 -0
  49. package/dist/lib/compress-permission.d.ts +6 -0
  50. package/dist/lib/compress-permission.d.ts.map +1 -0
  51. package/dist/lib/config.d.ts +72 -0
  52. package/dist/lib/config.d.ts.map +1 -0
  53. package/dist/lib/hooks.d.ts +36 -0
  54. package/dist/lib/hooks.d.ts.map +1 -0
  55. package/dist/lib/host-permissions.d.ts +11 -0
  56. package/dist/lib/host-permissions.d.ts.map +1 -0
  57. package/dist/lib/logger.d.ts +31 -0
  58. package/dist/lib/logger.d.ts.map +1 -0
  59. package/dist/lib/message-ids.d.ts +19 -0
  60. package/dist/lib/message-ids.d.ts.map +1 -0
  61. package/dist/lib/messages/index.d.ts +9 -0
  62. package/dist/lib/messages/index.d.ts.map +1 -0
  63. package/dist/lib/messages/inject/inject.d.ts +8 -0
  64. package/dist/lib/messages/inject/inject.d.ts.map +1 -0
  65. package/dist/lib/messages/inject/subagent-results.d.ts +4 -0
  66. package/dist/lib/messages/inject/subagent-results.d.ts.map +1 -0
  67. package/dist/lib/messages/inject/utils.d.ts +24 -0
  68. package/dist/lib/messages/inject/utils.d.ts.map +1 -0
  69. package/dist/lib/messages/priority.d.ts +13 -0
  70. package/dist/lib/messages/priority.d.ts.map +1 -0
  71. package/dist/lib/messages/prune.d.ts +5 -0
  72. package/dist/lib/messages/prune.d.ts.map +1 -0
  73. package/dist/lib/messages/query.d.ts +7 -0
  74. package/dist/lib/messages/query.d.ts.map +1 -0
  75. package/dist/lib/messages/reasoning-strip.d.ts +8 -0
  76. package/dist/lib/messages/reasoning-strip.d.ts.map +1 -0
  77. package/dist/lib/messages/shape.d.ts +5 -0
  78. package/dist/lib/messages/shape.d.ts.map +1 -0
  79. package/dist/lib/messages/sync.d.ts +4 -0
  80. package/dist/lib/messages/sync.d.ts.map +1 -0
  81. package/dist/lib/messages/utils.d.ts +27 -0
  82. package/dist/lib/messages/utils.d.ts.map +1 -0
  83. package/dist/lib/prompts/compress-message.d.ts +2 -0
  84. package/dist/lib/prompts/compress-message.d.ts.map +1 -0
  85. package/dist/lib/prompts/compress-range.d.ts +2 -0
  86. package/dist/lib/prompts/compress-range.d.ts.map +1 -0
  87. package/dist/lib/prompts/context-limit-nudge.d.ts +2 -0
  88. package/dist/lib/prompts/context-limit-nudge.d.ts.map +1 -0
  89. package/dist/lib/prompts/extensions/nudge.d.ts +5 -0
  90. package/dist/lib/prompts/extensions/nudge.d.ts.map +1 -0
  91. package/dist/lib/prompts/extensions/system.d.ts +4 -0
  92. package/dist/lib/prompts/extensions/system.d.ts.map +1 -0
  93. package/dist/lib/prompts/extensions/tool.d.ts +3 -0
  94. package/dist/lib/prompts/extensions/tool.d.ts.map +1 -0
  95. package/dist/lib/prompts/index.d.ts +4 -0
  96. package/dist/lib/prompts/index.d.ts.map +1 -0
  97. package/dist/lib/prompts/iteration-nudge.d.ts +2 -0
  98. package/dist/lib/prompts/iteration-nudge.d.ts.map +1 -0
  99. package/dist/lib/prompts/store.d.ts +25 -0
  100. package/dist/lib/prompts/store.d.ts.map +1 -0
  101. package/dist/lib/prompts/system.d.ts +2 -0
  102. package/dist/lib/prompts/system.d.ts.map +1 -0
  103. package/dist/lib/prompts/turn-nudge.d.ts +2 -0
  104. package/dist/lib/prompts/turn-nudge.d.ts.map +1 -0
  105. package/dist/lib/protected-patterns.d.ts +5 -0
  106. package/dist/lib/protected-patterns.d.ts.map +1 -0
  107. package/dist/lib/state/index.d.ts +5 -0
  108. package/dist/lib/state/index.d.ts.map +1 -0
  109. package/dist/lib/state/persistence.d.ts +49 -0
  110. package/dist/lib/state/persistence.d.ts.map +1 -0
  111. package/dist/lib/state/state.d.ts +7 -0
  112. package/dist/lib/state/state.d.ts.map +1 -0
  113. package/dist/lib/state/tool-cache.d.ts +13 -0
  114. package/dist/lib/state/tool-cache.d.ts.map +1 -0
  115. package/dist/lib/state/types.d.ts +99 -0
  116. package/dist/lib/state/types.d.ts.map +1 -0
  117. package/dist/lib/state/utils.d.ts +22 -0
  118. package/dist/lib/state/utils.d.ts.map +1 -0
  119. package/dist/lib/strategies/deduplication.d.ts +10 -0
  120. package/dist/lib/strategies/deduplication.d.ts.map +1 -0
  121. package/dist/lib/strategies/index.d.ts +3 -0
  122. package/dist/lib/strategies/index.d.ts.map +1 -0
  123. package/dist/lib/strategies/purge-errors.d.ts +13 -0
  124. package/dist/lib/strategies/purge-errors.d.ts.map +1 -0
  125. package/dist/lib/subagents/subagent-results.d.ts +5 -0
  126. package/dist/lib/subagents/subagent-results.d.ts.map +1 -0
  127. package/dist/lib/token-utils.d.ts +19 -0
  128. package/dist/lib/token-utils.d.ts.map +1 -0
  129. package/dist/lib/ui/notification.d.ts +17 -0
  130. package/dist/lib/ui/notification.d.ts.map +1 -0
  131. package/dist/lib/ui/utils.d.ts +10 -0
  132. package/dist/lib/ui/utils.d.ts.map +1 -0
  133. package/dist/lib/update.d.ts +22 -0
  134. package/dist/lib/update.d.ts.map +1 -0
  135. package/package.json +72 -0
@@ -0,0 +1,36 @@
1
+ import type { SessionState, WithParts } from "./state";
2
+ import type { Logger } from "./logger";
3
+ import type { PluginConfig } from "./config";
4
+ import { type PromptStore } from "./prompts";
5
+ import { type HostPermissionSnapshot } from "./host-permissions";
6
+ export declare function createSystemPromptHandler(state: SessionState, logger: Logger, config: PluginConfig, prompts: PromptStore): (input: {
7
+ sessionID?: string;
8
+ model: {
9
+ limit: {
10
+ context: number;
11
+ };
12
+ };
13
+ }, output: {
14
+ system: string[];
15
+ }) => Promise<void>;
16
+ export declare function createChatMessageTransformHandler(client: any, state: SessionState, logger: Logger, config: PluginConfig, prompts: PromptStore, hostPermissions: HostPermissionSnapshot): (input: {}, output: {
17
+ messages: WithParts[];
18
+ }) => Promise<void>;
19
+ export declare function createCommandExecuteHandler(client: any, state: SessionState, logger: Logger, config: PluginConfig, workingDirectory: string, hostPermissions: HostPermissionSnapshot): (input: {
20
+ command: string;
21
+ sessionID: string;
22
+ arguments: string;
23
+ }, output: {
24
+ parts: any[];
25
+ }) => Promise<void>;
26
+ export declare function createTextCompleteHandler(): (_input: {
27
+ sessionID: string;
28
+ messageID: string;
29
+ partID: string;
30
+ }, output: {
31
+ text: string;
32
+ }) => Promise<void>;
33
+ export declare function createEventHandler(state: SessionState, logger: Logger): (input: {
34
+ event: any;
35
+ }) => Promise<void>;
36
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAc5C,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AAoBhE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAYhE,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,WAAW,IAGhB,OAAO;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;QAAE,KAAK,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,EACpE,QAAQ;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,mBAwCnC;AAED,wBAAgB,iCAAiC,CAC7C,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,WAAW,EACpB,eAAe,EAAE,sBAAsB,IAEzB,OAAO,EAAE,EAAE,QAAQ;IAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;CAAE,mBA4D7D;AAED,wBAAgB,2BAA2B,CACvC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,sBAAsB,IAGnC,OAAO;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAChE,QAAQ;IAAE,KAAK,EAAE,GAAG,EAAE,CAAA;CAAE,mBA0G/B;AAED,wBAAgB,yBAAyB,KAEjC,QAAQ;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAChE,QAAQ;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,mBAI/B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IACpD,OAAO;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE,mBAiFtC"}
@@ -0,0 +1,11 @@
1
+ export type PermissionAction = "ask" | "allow" | "deny";
2
+ export type PermissionValue = PermissionAction | Record<string, PermissionAction>;
3
+ export type PermissionConfig = Record<string, PermissionValue> | undefined;
4
+ export interface HostPermissionSnapshot {
5
+ global: PermissionConfig;
6
+ agents: Record<string, PermissionConfig>;
7
+ }
8
+ export declare const compressDisabledByOpencode: (...permissionConfigs: PermissionConfig[]) => boolean;
9
+ export declare const resolveEffectiveCompressPermission: (basePermission: PermissionAction, hostPermissions: HostPermissionSnapshot, agentName?: string) => PermissionAction;
10
+ export declare const hasExplicitToolPermission: (permissionConfig: PermissionConfig, tool: string) => boolean;
11
+ //# sourceMappingURL=host-permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-permissions.d.ts","sourceRoot":"","sources":["../../lib/host-permissions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;AAEvD,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAEjF,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,SAAS,CAAA;AAE1E,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,gBAAgB,CAAA;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CAC3C;AA6DD,eAAO,MAAM,0BAA0B,GAAI,GAAG,mBAAmB,gBAAgB,EAAE,KAAG,OAMrF,CAAA;AAED,eAAO,MAAM,kCAAkC,GAC3C,gBAAgB,gBAAgB,EAChC,iBAAiB,sBAAsB,EACvC,YAAY,MAAM,KACnB,gBAWF,CAAA;AAED,eAAO,MAAM,yBAAyB,GAClC,kBAAkB,gBAAgB,EAClC,MAAM,MAAM,KACb,OAEF,CAAA"}
@@ -0,0 +1,31 @@
1
+ export declare class Logger {
2
+ private logDir;
3
+ enabled: boolean;
4
+ constructor(enabled: boolean);
5
+ private ensureLogDir;
6
+ private formatData;
7
+ private getCallerFile;
8
+ private write;
9
+ info(message: string, data?: any): Promise<void>;
10
+ debug(message: string, data?: any): Promise<void>;
11
+ warn(message: string, data?: any): Promise<void>;
12
+ error(message: string, data?: any): Promise<void>;
13
+ /**
14
+ * Strips unnecessary metadata from messages for cleaner debug logs.
15
+ *
16
+ * Removed:
17
+ * - All IDs (id, sessionID, messageID, parentID)
18
+ * - summary, path, cost, model, agent, mode, finish, providerID, modelID
19
+ * - step-start and step-finish parts entirely
20
+ * - snapshot fields
21
+ * - ignored text parts
22
+ *
23
+ * Kept:
24
+ * - role, time (created only), tokens (input, output, reasoning, cache)
25
+ * - text, reasoning, tool parts with content
26
+ * - tool calls with: tool, callID, input, output, metadata
27
+ */
28
+ private minimizeForDebug;
29
+ saveContext(sessionId: string, messages: any[]): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../lib/logger.ts"],"names":[],"mappings":"AAKA,qBAAa,MAAM;IACf,OAAO,CAAC,MAAM,CAAQ;IACf,OAAO,EAAE,OAAO,CAAA;gBAEX,OAAO,EAAE,OAAO;YAMd,YAAY;IAM1B,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,aAAa;YAuBP,KAAK;IAqBnB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAKhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAKjC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAKhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAKjC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,gBAAgB;IAmFlB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;CAiBvD"}
@@ -0,0 +1,19 @@
1
+ import type { SessionState, WithParts } from "./state";
2
+ export declare const MESSAGE_REF_MAX_INDEX = 9999;
3
+ export type ParsedBoundaryId = {
4
+ kind: "message";
5
+ ref: string;
6
+ index: number;
7
+ } | {
8
+ kind: "compressed-block";
9
+ ref: string;
10
+ blockId: number;
11
+ };
12
+ export declare function formatMessageRef(index: number): string;
13
+ export declare function formatBlockRef(blockId: number): string;
14
+ export declare function parseMessageRef(ref: string): number | null;
15
+ export declare function parseBlockRef(ref: string): number | null;
16
+ export declare function parseBoundaryId(id: string): ParsedBoundaryId | null;
17
+ export declare function formatMessageIdTag(ref: string, attributes?: Record<string, string | undefined>): string;
18
+ export declare function assignMessageRefs(state: SessionState, messages: WithParts[]): number;
19
+ //# sourceMappingURL=message-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-ids.d.ts","sourceRoot":"","sources":["../../lib/message-ids.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAStD,eAAO,MAAM,qBAAqB,OAAO,CAAA;AAEzC,MAAM,MAAM,gBAAgB,GACtB;IACI,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CAChB,GACD;IACI,IAAI,EAAE,kBAAkB,CAAA;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAClB,CAAA;AAEP,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWtD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc1D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQxD;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAqBnE;AAUD,wBAAgB,kBAAkB,CAC9B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAChD,MAAM,CAaR;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAkCpF"}
@@ -0,0 +1,9 @@
1
+ export { prune } from "./prune";
2
+ export { syncCompressionBlocks } from "./sync";
3
+ export { injectCompressNudges } from "./inject/inject";
4
+ export { injectMessageIds } from "./inject/inject";
5
+ export { injectExtendedSubAgentResults } from "./inject/subagent-results";
6
+ export { stripStaleMetadata } from "./reasoning-strip";
7
+ export { buildPriorityMap } from "./priority";
8
+ export { buildToolIdList, stripHallucinations, stripHallucinationsFromString } from "./utils";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { SessionState, WithParts } from "../../state";
2
+ import type { Logger } from "../../logger";
3
+ import type { PluginConfig } from "../../config";
4
+ import type { RuntimePrompts } from "../../prompts/store";
5
+ import type { CompressionPriorityMap } from "../priority";
6
+ export declare const injectCompressNudges: (state: SessionState, config: PluginConfig, logger: Logger, messages: WithParts[], prompts: RuntimePrompts, compressionPriorities?: CompressionPriorityMap) => void;
7
+ export declare const injectMessageIds: (state: SessionState, config: PluginConfig, messages: WithParts[], compressionPriorities?: CompressionPriorityMap) => void;
8
+ //# sourceMappingURL=inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../../lib/messages/inject/inject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AA2BzD,eAAO,MAAM,oBAAoB,GAC7B,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,QAAQ,MAAM,EACd,UAAU,SAAS,EAAE,EACrB,SAAS,cAAc,EACvB,wBAAwB,sBAAsB,KAC/C,IA2HF,CAAA;AAED,eAAO,MAAM,gBAAgB,GACzB,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,UAAU,SAAS,EAAE,EACrB,wBAAwB,sBAAsB,KAC/C,IAiEF,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Logger } from "../../logger";
2
+ import type { SessionState, WithParts } from "../../state";
3
+ export declare const injectExtendedSubAgentResults: (client: any, state: SessionState, logger: Logger, messages: WithParts[], allowSubAgents: boolean) => Promise<void>;
4
+ //# sourceMappingURL=subagent-results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-results.d.ts","sourceRoot":"","sources":["../../../../lib/messages/inject/subagent-results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAiB1D,eAAO,MAAM,6BAA6B,GACtC,QAAQ,GAAG,EACX,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,UAAU,SAAS,EAAE,EACrB,gBAAgB,OAAO,KACxB,OAAO,CAAC,IAAI,CAyDd,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { SessionState, WithParts } from "../../state";
2
+ import type { PluginConfig } from "../../config";
3
+ import type { RuntimePrompts } from "../../prompts/store";
4
+ import { type CompressionPriorityMap } from "../priority";
5
+ export interface LastUserModelContext {
6
+ providerId: string | undefined;
7
+ modelId: string | undefined;
8
+ }
9
+ export interface LastNonIgnoredMessage {
10
+ message: WithParts;
11
+ index: number;
12
+ }
13
+ export declare function getNudgeFrequency(config: PluginConfig): number;
14
+ export declare function getIterationNudgeThreshold(config: PluginConfig): number;
15
+ export declare function findLastNonIgnoredMessage(messages: WithParts[]): LastNonIgnoredMessage | null;
16
+ export declare function countMessagesAfterIndex(messages: WithParts[], index: number): number;
17
+ export declare function getModelInfo(messages: WithParts[]): LastUserModelContext;
18
+ export declare function isContextOverLimits(config: PluginConfig, state: SessionState, providerId: string | undefined, modelId: string | undefined, messages: WithParts[]): {
19
+ overMaxLimit: boolean;
20
+ overMinLimit: boolean;
21
+ };
22
+ export declare function addAnchor(anchorMessageIds: Set<string>, anchorMessageId: string, anchorMessageIndex: number, messages: WithParts[], interval: number): boolean;
23
+ export declare function applyAnchoredNudges(state: SessionState, config: PluginConfig, messages: WithParts[], prompts: RuntimePrompts, compressionPriorities?: CompressionPriorityMap): void;
24
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../lib/messages/inject/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAMhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,EACH,KAAK,sBAAsB,EAG9B,MAAM,aAAa,CAAA;AAapB,MAAM,WAAW,oBAAoB;IACjC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,SAAS,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE9D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEvE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,qBAAqB,GAAG,IAAI,CAU7F;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYpF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,oBAAoB,CAcxE;AA+CD,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,SAAS,EAAE;;;EA0BxB;AAED,wBAAgB,SAAS,CACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,eAAe,EAAE,MAAM,EACvB,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,SAAS,EAAE,EACrB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAsBT;AAmID,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,SAAS,EAAE,EACrB,OAAO,EAAE,cAAc,EACvB,qBAAqB,CAAC,EAAE,sBAAsB,GAC/C,IAAI,CA4CN"}
@@ -0,0 +1,13 @@
1
+ import type { PluginConfig } from "../config";
2
+ import type { SessionState, WithParts } from "../state";
3
+ export type MessagePriority = "low" | "medium" | "high";
4
+ export interface CompressionPriorityEntry {
5
+ ref: string;
6
+ tokenCount: number;
7
+ priority: MessagePriority;
8
+ }
9
+ export type CompressionPriorityMap = Map<string, CompressionPriorityEntry>;
10
+ export declare function buildPriorityMap(config: PluginConfig, state: SessionState, messages: WithParts[]): CompressionPriorityMap;
11
+ export declare function classifyMessagePriority(tokenCount: number): MessagePriority;
12
+ export declare function listPriorityRefsBeforeIndex(messages: WithParts[], priorities: CompressionPriorityMap, anchorIndex: number, priority: MessagePriority): string[];
13
+ //# sourceMappingURL=priority.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority.d.ts","sourceRoot":"","sources":["../../../lib/messages/priority.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAG7C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAMvD,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEvD,MAAM,WAAW,wBAAwB;IACrC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,eAAe,CAAA;CAC5B;AAED,MAAM,MAAM,sBAAsB,GAAG,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAA;AAE1E,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,SAAS,EAAE,GACtB,sBAAsB,CAsCxB;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAU3E;AAED,wBAAgB,2BAA2B,CACvC,QAAQ,EAAE,SAAS,EAAE,EACrB,UAAU,EAAE,sBAAsB,EAClC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,eAAe,GAC1B,MAAM,EAAE,CAqBV"}
@@ -0,0 +1,5 @@
1
+ import type { SessionState, WithParts } from "../state";
2
+ import type { Logger } from "../logger";
3
+ import type { PluginConfig } from "../config";
4
+ export declare const prune: (state: SessionState, logger: Logger, config: PluginConfig, messages: WithParts[]) => void;
5
+ //# sourceMappingURL=prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAW7C,eAAO,MAAM,KAAK,GACd,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,QAAQ,YAAY,EACpB,UAAU,SAAS,EAAE,KACtB,IAMF,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { PluginConfig } from "../config";
2
+ import type { WithParts } from "../state";
3
+ export declare const getLastUserMessage: (messages: WithParts[], startIndex?: number) => WithParts | null;
4
+ export declare const messageHasCompress: (message: WithParts) => boolean;
5
+ export declare const isIgnoredUserMessage: (message: WithParts) => boolean;
6
+ export declare function isProtectedUserMessage(config: PluginConfig, message: WithParts): boolean;
7
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../lib/messages/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGzC,eAAO,MAAM,kBAAkB,GAC3B,UAAU,SAAS,EAAE,EACrB,aAAa,MAAM,KACpB,SAAS,GAAG,IAYd,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,SAAS,KAAG,OAcvD,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,SAAS,KAAG,OAqBzD,CAAA;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAWxF"}
@@ -0,0 +1,8 @@
1
+ import type { WithParts } from "../state";
2
+ /**
3
+ * Mirrors opencode's differentModel handling by preserving part content while
4
+ * dropping provider metadata on assistant parts that came from a different
5
+ * model/provider than the current turn's user message.
6
+ */
7
+ export declare function stripStaleMetadata(messages: WithParts[]): void;
8
+ //# sourceMappingURL=reasoning-strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoning-strip.d.ts","sourceRoot":"","sources":["../../../lib/messages/reasoning-strip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGzC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CA+B9D"}
@@ -0,0 +1,5 @@
1
+ import type { WithParts } from "../state";
2
+ export declare function isMessageWithInfo(message: unknown): message is WithParts;
3
+ export declare function filterMessages(messages: unknown): WithParts[];
4
+ export declare function filterMessagesInPlace(messages: unknown): WithParts[];
5
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../../lib/messages/shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,SAAS,CAsBxE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,CAM7D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,CAepE"}
@@ -0,0 +1,4 @@
1
+ import type { SessionState, WithParts } from "../state";
2
+ import type { Logger } from "../logger";
3
+ export declare const syncCompressionBlocks: (state: SessionState, logger: Logger, messages: WithParts[]) => void;
4
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../lib/messages/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAavC,eAAO,MAAM,qBAAqB,GAC9B,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,UAAU,SAAS,EAAE,KACtB,IAyGF,CAAA"}
@@ -0,0 +1,27 @@
1
+ import type { SessionState, WithParts } from "../state";
2
+ export declare const createSyntheticUserMessage: (baseMessage: WithParts, content: string, stableSeed?: string) => WithParts;
3
+ export declare const createSyntheticTextPart: (baseMessage: WithParts, content: string, stableSeed?: string) => {
4
+ id: string;
5
+ sessionID: string;
6
+ messageID: string;
7
+ type: "text";
8
+ text: string;
9
+ };
10
+ type MessagePart = WithParts["parts"][number];
11
+ type ToolPart = Extract<MessagePart, {
12
+ type: "tool";
13
+ }>;
14
+ type TextPart = Extract<MessagePart, {
15
+ type: "text";
16
+ }>;
17
+ export declare const appendToLastTextPart: (message: WithParts, injection: string) => boolean;
18
+ export declare const appendToTextPart: (part: TextPart, injection: string) => boolean;
19
+ export declare const appendToAllToolParts: (message: WithParts, tag: string) => boolean;
20
+ export declare const appendToToolPart: (part: ToolPart, tag: string) => boolean;
21
+ export declare const hasContent: (message: WithParts) => boolean;
22
+ export declare function buildToolIdList(state: SessionState, messages: WithParts[]): string[];
23
+ export declare const replaceBlockIdsWithBlocked: (text: string) => string;
24
+ export declare const stripHallucinationsFromString: (text: string) => string;
25
+ export declare const stripHallucinations: (messages: WithParts[]) => void;
26
+ export {};
27
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/messages/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAcvD,eAAO,MAAM,0BAA0B,GACnC,aAAa,SAAS,EACtB,SAAS,MAAM,EACf,aAAa,MAAM,KACpB,SA0BF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAChC,aAAa,SAAS,EACtB,SAAS,MAAM,EACf,aAAa,MAAM;;;;;;CAatB,CAAA;AAED,KAAK,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAC7C,KAAK,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AACtD,KAAK,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEtD,eAAO,MAAM,oBAAoB,GAAI,SAAS,SAAS,EAAE,WAAW,MAAM,KAAG,OAO5E,CAAA;AAaD,eAAO,MAAM,gBAAgB,GAAI,MAAM,QAAQ,EAAE,WAAW,MAAM,KAAG,OAgBpE,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,SAAS,EAAE,KAAK,MAAM,KAAG,OAQtE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,QAAQ,EAAE,KAAK,MAAM,KAAG,OAU9D,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,SAAS,SAAS,KAAG,OAU/C,CAAA;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAiBpF;AAED,eAAO,MAAM,0BAA0B,GAAI,MAAM,MAAM,KAAG,MAEzD,CAAA;AAED,eAAO,MAAM,6BAA6B,GAAI,MAAM,MAAM,KAAG,MAE5D,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,UAAU,SAAS,EAAE,KAAG,IAgB3D,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const COMPRESS_MESSAGE = "\u5C06\u5BF9\u8BDD\u4E2D\u9009\u5B9A\u7684\u5355\u6761\u6D88\u606F\u6298\u53E0\u4E3A\u8BE6\u7EC6\u6458\u8981\u3002\n\n\u6458\u8981\u8981\u6C42\n\u6458\u8981\u5FC5\u987B\u8BE6\u5C3D\u3002\u6355\u83B7\u6587\u4EF6\u8DEF\u5F84\u3001\u51FD\u6570\u7B7E\u540D\u3001\u6240\u505A\u51B3\u7B56\u3001\u53D1\u73B0\u7684\u7EA6\u675F\u3001\u5173\u952E\u53D1\u73B0\u3001\u5DE5\u5177\u7ED3\u679C\uFF0C\u4EE5\u53CA\u91CD\u8981\u7684\u7528\u6237\u610F\u56FE\u7EC6\u8282\u2026\u2026\u6240\u6709\u5728\u539F\u59CB\u6D88\u606F\u88AB\u79FB\u9664\u540E\u4FDD\u7559\u5176\u4EF7\u503C\u7684\u5185\u5BB9\u3002\n\n\u7528\u6237\u610F\u56FE\u4FDD\u771F\n\u5F53\u9009\u5B9A\u6D88\u606F\u5305\u542B\u7528\u6237\u610F\u56FE\u65F6\uFF0C\u683C\u5916\u5C0F\u5FC3\u5730\u4FDD\u7559\u8BE5\u610F\u56FE\u3002\u4E0D\u8981\u6539\u53D8\u8303\u56F4\u3001\u7EA6\u675F\u3001\u4F18\u5148\u7EA7\u3001\u9A8C\u6536\u6807\u51C6\u6216\u8BF7\u6C42\u7684\u7ED3\u679C\u3002\n\u5F53\u76F4\u63A5\u5F15\u7528\u7B80\u77ED\u7528\u6237\u6307\u4EE4\u6700\u80FD\u4FDD\u7559\u7CBE\u786E\u542B\u4E49\u65F6\uFF0C\u76F4\u63A5\u5F15\u7528\u3002\n\n\u540C\u65F6\u4FDD\u6301\u7CBE\u7B80\u3002\u53BB\u9664\u566A\u97F3\uFF1A\u65E0\u679C\u7684\u5931\u8D25\u5C1D\u8BD5\u3001\u5197\u957F\u7684\u5DE5\u5177\u8F93\u51FA\u548C\u91CD\u590D\u3002\u7559\u4E0B\u7684\u5E94\u8BE5\u662F\u7EAF\u4FE1\u53F7\u2014\u2014\u4FDD\u7559\u5B8C\u6574\u7406\u89E3\u3001\u96F6\u6B67\u4E49\u7684\u7CBE\u534E\u7EC6\u8282\u3002\n\u5982\u679C\u6D88\u606F\u4E0D\u5305\u542B\u91CD\u8981\u7684\u6280\u672F\u51B3\u7B56\u3001\u4EE3\u7801\u53D8\u66F4\u6216\u7528\u6237\u9700\u6C42\uFF0C\u751F\u6210\u6700\u5C0F\u5316\u7684\u4E00\u884C\u6458\u8981\u800C\u975E\u8BE6\u7EC6\u6458\u8981\u3002\n\n\u6D88\u606F ID\n\u4F7F\u7528\u5BF9\u8BDD\u4E2D\u53EF\u89C1\u7684\u6CE8\u5165 ID \u6309 ID \u6307\u5B9A\u5355\u6761\u539F\u59CB\u6D88\u606F\uFF1A\n\n- `mNNNN` ID \u6807\u8BC6\u539F\u59CB\u6D88\u606F\n\n\u6BCF\u6761\u6D88\u606F\u5728 XML \u5143\u6570\u636E\u6807\u7B7E\u5185\u6709 ID\uFF0C\u5982 ``\u3002\n\u76F8\u540C\u7684 ID \u6807\u7B7E\u51FA\u73B0\u5728\u8BE5\u6D88\u606F\u6240\u5C5E\u7684\u6BCF\u4E2A\u5DE5\u5177\u8F93\u51FA\u4E2D\u2014\u2014\u6BCF\u4E2A\u552F\u4E00 ID \u6807\u8BC6\u4E00\u6761\u5B8C\u6574\u6D88\u606F\u3002\n\u5C06\u8FD9\u4E9B\u6807\u7B7E\u4EC5\u89C6\u4E3A\u6D88\u606F\u5143\u6570\u636E\uFF0C\u800C\u975E\u8981\u6458\u8981\u7684\u5185\u5BB9\u3002\u53EA\u4F7F\u7528\u5185\u90E8\u7684 `mNNNN` \u503C\u4F5C\u4E3A `messageId`\u3002\n`priority` \u5C5E\u6027\u8868\u793A\u76F8\u5BF9\u4E0A\u4E0B\u6587\u6210\u672C\u3002\u5F53\u9AD8\u4F18\u5148\u7EA7\u6D88\u606F\u7684\u5B8C\u6574\u6587\u672C\u5BF9\u5F53\u524D\u4EFB\u52A1\u4E0D\u518D\u5FC5\u8981\u65F6\uFF0C\u4F60\u5FC5\u987B\u538B\u7F29\u5B83\u4EEC\u3002\n\u5982\u679C\u5B58\u5728\u4E4B\u524D\u7684\u538B\u7F29\u5DE5\u5177\u7ED3\u679C\uFF0C\u59CB\u7EC8\u5728\u66F4\u5E7F\u6CDB\u7684\u538B\u7F29\u8FC7\u7A0B\u4E2D\u5C06\u5B83\u4EEC\u6700\u5C0F\u5316\u5730\u538B\u7F29\u548C\u6458\u8981\u3002\u4E0D\u8981\u4EC5\u4E3A\u4E86\u91CD\u65B0\u538B\u7F29\u4E4B\u524D\u7684\u538B\u7F29\u7ED3\u679C\u800C\u8C03\u7528\u538B\u7F29\u5DE5\u5177\u3002\n\u6807\u8BB0\u4E3A `` \u7684\u6D88\u606F\u4E0D\u80FD\u88AB\u538B\u7F29\u3002\n\n\u89C4\u5219\uFF1A\n\n- \u76F4\u63A5\u4ECE\u4E0A\u4E0B\u6587\u4E2D\u53EF\u89C1\u7684\u6CE8\u5165 ID \u9009\u53D6\u6BCF\u4E2A `messageId`\u3002\n- \u53EA\u4F7F\u7528 `mNNNN` \u5F62\u5F0F\u7684\u539F\u59CB\u6D88\u606F ID\u3002\n- \u590D\u5236 ID \u65F6\u5FFD\u7565 `priority` \u7B49 XML \u5C5E\u6027\uFF1B\u53EA\u4F7F\u7528\u5185\u90E8\u7684 `mNNNN` \u503C\u3002\n- \u4E0D\u8981\u53D1\u660E ID\u3002\u53EA\u4F7F\u7528\u4E0A\u4E0B\u6587\u4E2D\u5B58\u5728\u7684 ID\u3002\n\n\u6279\u91CF\u5904\u7406\n\u5F53\u591A\u6761\u6D88\u606F\u53EF\u4EE5\u5B89\u5168\u538B\u7F29\u65F6\uFF0C\u5728\u5355\u6B21\u5DE5\u5177\u8C03\u7528\u4E2D\u9009\u62E9\u591A\u6761\u6D88\u606F\u3002\n\u6BCF\u4E2A\u6761\u76EE\u5E94\u6070\u597D\u6458\u8981\u4E00\u6761\u6D88\u606F\uFF0C\u5DE5\u5177\u53EF\u4EE5\u5728\u4E00\u6B21\u6279\u91CF\u4E2D\u63A5\u6536\u4EFB\u610F\u6570\u91CF\u7684\u6761\u76EE\u3002\n\n\u901A\u7528\u6E05\u7406\n\u4F7F\u7528\u4E3B\u9898\"\u901A\u7528\u6E05\u7406\"\u8FDB\u884C\u5E7F\u6CDB\u7684\u6E05\u7406\u3002\n\u5728\u901A\u7528\u6E05\u7406\u671F\u95F4\uFF0C\u538B\u7F29\u6240\u6709\u4E0E\u5F53\u524D\u4EFB\u52A1\u65E0\u5173\u7684\u4E2D\u9AD8\u4F18\u5148\u7EA7\u6D88\u606F\u3002\n\u4F18\u5316\u51CF\u5C11\u4E0A\u4E0B\u6587\u5360\u7528\uFF0C\u800C\u975E\u6309\u4E3B\u9898\u5206\u7EC4\u6D88\u606F\u3002\n\u4E0D\u8981\u538B\u7F29\u6389\u4ECD\u7136\u6D3B\u8DC3\u7684\u6307\u4EE4\u3001\u672A\u89E3\u51B3\u7684\u95EE\u9898\u6216\u53EF\u80FD\u5F88\u5FEB\u91CD\u8981\u7684\u7EA6\u675F\u3002\n\u4F18\u5148\u5904\u7406\u4E0A\u4E0B\u6587\u4E2D\u6700\u65E9\u7684\u6D88\u606F\uFF0C\u56E0\u4E3A\u5B83\u4EEC\u4E0E\u5F53\u524D\u4EFB\u52A1\u7684\u76F8\u5173\u6027\u6700\u4F4E\u3002\n\u901A\u7528\u6E05\u7406\u5E94\u5B9A\u671F\u5728\u5176\u4ED6\u6B63\u5E38\u538B\u7F29\u5DE5\u5177\u8C03\u7528\u4E4B\u95F4\u8FDB\u884C\uFF0C\u800C\u975E\u4F5C\u4E3A\u538B\u7F29\u7684\u4E3B\u8981\u5F62\u5F0F\u3002\n";
2
+ //# sourceMappingURL=compress-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-message.d.ts","sourceRoot":"","sources":["../../../lib/prompts/compress-message.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,o7JA0C5B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const COMPRESS_RANGE = "\u5C06\u5BF9\u8BDD\u4E2D\u7684\u4E00\u4E2A\u8303\u56F4\u6298\u53E0\u4E3A\u8BE6\u7EC6\u6458\u8981\u3002\n\n\u8F93\u51FA\u683C\u5F0F\n\u6BCF\u4E2A\u6458\u8981\u5FC5\u987B\u4F7F\u7528 Markdown \u6807\u9898\u7ED3\u6784\uFF1A\n\n```\n## \u5206\u6790\n[\u5206\u6790\uFF1A\u63A2\u7D22\u4E86\u4EC0\u4E48\u3001\u9047\u5230\u4E86\u4EC0\u4E48\u95EE\u9898\u3001\u5C1D\u8BD5\u4E86\u54EA\u4E9B\u65B9\u6CD5]\n\n## \u603B\u7ED3\n[\u603B\u7ED3\uFF1A\u6700\u7EC8\u7ED3\u8BBA\u3001\u5173\u952E\u51B3\u7B56\u3001\u91CD\u8981\u6587\u4EF6\u8DEF\u5F84\u3001\u51FD\u6570\u7B7E\u540D\u3001\u4EE3\u7801\u53D8\u66F4]\n```\n\n\u7981\u6B62\u4F7F\u7528 `<analysis>` \u6216 `<summary>` \u7B49 XML \u6807\u7B7E\u3002\u53EA\u4F7F\u7528 Markdown `## \u5206\u6790` \u548C `## \u603B\u7ED3` \u6807\u9898\u3002\n\n\u6458\u8981\u8981\u6C42\n\u6458\u8981\u5FC5\u987B\u8BE6\u5C3D\u3002\u6355\u83B7\u6587\u4EF6\u8DEF\u5F84\u3001\u51FD\u6570\u7B7E\u540D\u3001\u6240\u505A\u51B3\u7B56\u3001\u53D1\u73B0\u7684\u7EA6\u675F\u3001\u5173\u952E\u53D1\u73B0\u2026\u2026\u6240\u6709\u7EF4\u6301\u4E0A\u4E0B\u6587\u5B8C\u6574\u6027\u7684\u5185\u5BB9\u3002\u8FD9\u4E0D\u662F\u7B80\u77ED\u7B14\u8BB0\u2014\u2014\u800C\u662F\u4E00\u4EFD\u6743\u5A01\u8BB0\u5F55\uFF0C\u5FE0\u5B9E\u5230\u539F\u59CB\u5BF9\u8BDD\u4E0D\u518D\u6709\u4EFB\u4F55\u4EF7\u503C\u3002\n\n\u7528\u6237\u610F\u56FE\u4FDD\u771F\n\u5F53\u538B\u7F29\u8303\u56F4\u5305\u542B\u7528\u6237\u6D88\u606F\u65F6\uFF0C\u683C\u5916\u5C0F\u5FC3\u5730\u4FDD\u7559\u7528\u6237\u610F\u56FE\u3002\u4E0D\u8981\u6539\u53D8\u8303\u56F4\u3001\u7EA6\u675F\u3001\u4F18\u5148\u7EA7\u3001\u9A8C\u6536\u6807\u51C6\u6216\u8BF7\u6C42\u7684\u7ED3\u679C\u3002\n\u5F53\u7528\u6237\u6D88\u606F\u8DB3\u591F\u77ED\u65F6\u76F4\u63A5\u5F15\u7528\u3002\u76F4\u63A5\u5F15\u7528\u5728\u6700\u80FD\u4FDD\u7559\u7CBE\u786E\u542B\u4E49\u65F6\u4F18\u5148\u4F7F\u7528\u3002\n\n\u540C\u65F6\u4FDD\u6301\u7CBE\u7B80\u3002\u53BB\u9664\u566A\u97F3\uFF1A\u65E0\u679C\u7684\u5931\u8D25\u5C1D\u8BD5\u3001\u5197\u957F\u7684\u5DE5\u5177\u8F93\u51FA\u3001\u53CD\u590D\u63A2\u7D22\u3002\u7559\u4E0B\u7684\u5E94\u8BE5\u662F\u7EAF\u4FE1\u53F7\u2014\u2014\u4FDD\u7559\u5B8C\u6574\u7406\u89E3\u3001\u96F6\u6B67\u4E49\u7684\u7CBE\u534E\u7EC6\u8282\u3002\n\n\u538B\u7F29\u5757\u5360\u4F4D\u7B26\n\u5F53\u9009\u5B9A\u8303\u56F4\u5305\u542B\u4E4B\u524D\u538B\u7F29\u7684\u5757\u65F6\uFF0C\u5F15\u7528\u65F6\u4F7F\u7528\u4EE5\u4E0B\u7CBE\u786E\u5360\u4F4D\u7B26\u683C\u5F0F\uFF1A\n\n- `(bN)`\n\n\u4E0A\u4E0B\u6587\u4E2D\u7684\u538B\u7F29\u5757\u90E8\u5206\u7528\u6807\u9898\u660E\u786E\u6807\u8BB0\uFF1A\n\n- `[\u5DF2\u538B\u7F29\u7684\u5BF9\u8BDD\u90E8\u5206]`\n\n\u538B\u7F29\u5757 ID \u59CB\u7EC8\u4F7F\u7528 `bN` \u5F62\u5F0F\uFF08\u4E0D\u662F `mNNNN`\uFF09\uFF0C\u5E76\u4EE5\u76F8\u540C\u7684 XML \u5143\u6570\u636E\u6807\u7B7E\u683C\u5F0F\u8868\u793A\u3002\n\n\u89C4\u5219\uFF1A\n\n- \u6BCF\u4E2A\u5FC5\u9700\u7684\u5757\u5360\u4F4D\u7B26\u6070\u597D\u5305\u542B\u4E00\u6B21\u3002\n- \u4E0D\u8981\u4E3A\u9009\u5B9A\u8303\u56F4\u4E4B\u5916\u7684\u5757\u53D1\u660E\u5360\u4F4D\u7B26\u3002\n- \u5C06 `(bN)` \u5360\u4F4D\u7B26\u89C6\u4E3A\u4FDD\u7559\u6807\u8BB0\u3002\u9664\u4E86\u6709\u610F\u5360\u4F4D\u7B26\u5916\uFF0C\u4E0D\u8981\u5728\u4EFB\u4F55\u5730\u65B9\u8F93\u51FA `(bN)` \u6587\u672C\u3002\n- \u5982\u679C\u9700\u8981\u5728\u6B63\u6587\u4E2D\u63D0\u53CA\u4E00\u4E2A\u5757\uFF0C\u4F7F\u7528\u7EAF\u6587\u672C\u5982 `\u538B\u7F29\u5757 bN`\uFF08\u4E0D\u4F5C\u4E3A\u5360\u4F4D\u7B26\uFF09\u3002\n- \u6700\u7EC8\u786E\u5B9A\u524D\u7684\u9884\u68C0\uFF1A\u6458\u8981\u4E2D\u7684 `(bN)` \u5360\u4F4D\u7B26\u96C6\u5408\u5FC5\u987B\u4E0E\u5FC5\u9700\u96C6\u5408\u5B8C\u5168\u5339\u914D\uFF0C\u65E0\u91CD\u590D\u3002\n\n\u8FD9\u4E9B\u5360\u4F4D\u7B26\u662F\u8BED\u4E49\u5F15\u7528\u3002\u5F53\u5DE5\u5177\u5904\u7406\u4F60\u7684\u8F93\u51FA\u65F6\uFF0C\u5B83\u4EEC\u5C06\u88AB\u66FF\u6362\u4E3A\u5B8C\u6574\u7684\u5B58\u50A8\u538B\u7F29\u5757\u5185\u5BB9\u3002\n\n\u5360\u4F4D\u7B26\u7684\u6D41\u7545\u6027\n\u4F7F\u7528\u538B\u7F29\u5757\u5360\u4F4D\u7B26\u65F6\uFF0C\u7F16\u5199\u5468\u56F4\u7684\u6458\u8981\u6587\u672C\uFF0C\u4F7F\u5176\u5728\u5360\u4F4D\u7B26\u5C55\u5F00\u540E\u4ECD\u7136\u6B63\u786E\u53EF\u8BFB\u3002\n\n- \u5C06\u6BCF\u4E2A\u5360\u4F4D\u7B26\u89C6\u4E3A\u5B8C\u6574\u5BF9\u8BDD\u6BB5\u7684\u66FF\u4EE3\uFF0C\u800C\u4E0D\u662F\u77ED\u6807\u7B7E\u3002\n- \u786E\u4FDD\u6BCF\u4E2A\u5360\u4F4D\u7B26\u524D\u540E\u7684\u8FC7\u6E21\u4FDD\u7559\u65F6\u95F4\u987A\u5E8F\u548C\u56E0\u679C\u5173\u7CFB\u3002\n- \u4E0D\u8981\u7F16\u5199\u4F9D\u8D56\u4E8E\u5360\u4F4D\u7B26\u4FDD\u6301\u5B57\u9762\u610F\u4E49\u7684\u6587\u672C\uFF08\u4F8B\u5982\"\u5982 `(b2)` \u4E2D\u6240\u8FF0\"\uFF09\u3002\n- \u5F53\u6BCF\u4E2A\u5360\u4F4D\u7B26\u88AB\u66FF\u6362\u4E3A\u5176\u5B8C\u6574\u538B\u7F29\u5757\u5185\u5BB9\u540E\uFF0C\u6700\u7EC8\u542B\u4E49\u5FC5\u987B\u8FDE\u8D2F\u3002\n\n\u8FB9\u754C ID\n\u4F7F\u7528\u5BF9\u8BDD\u4E2D\u53EF\u89C1\u7684\u6CE8\u5165 ID \u6309 ID \u6307\u5B9A\u8FB9\u754C\uFF1A\n\n- `mNNNN` ID \u6807\u8BC6\u539F\u59CB\u6D88\u606F\n- `bN` ID \u6807\u8BC6\u4E4B\u524D\u538B\u7F29\u7684\u5757\n\n\u6BCF\u6761\u6D88\u606F\u5728 XML \u5143\u6570\u636E\u6807\u7B7E\u5185\u6709 ID\uFF0C\u5982 ``\u3002\n\u76F8\u540C\u7684 ID \u6807\u7B7E\u51FA\u73B0\u5728\u8BE5\u6D88\u606F\u6240\u5C5E\u7684\u6BCF\u4E2A\u5DE5\u5177\u8F93\u51FA\u4E2D\u2014\u2014\u6BCF\u4E2A\u552F\u4E00 ID \u6807\u8BC6\u4E00\u6761\u5B8C\u6574\u6D88\u606F\u3002\n\u5C06\u8FD9\u4E9B\u6807\u7B7E\u4EC5\u89C6\u4E3A\u8FB9\u754C\u5143\u6570\u636E\uFF0C\u800C\u975E\u5DE5\u5177\u7ED3\u679C\u5185\u5BB9\u3002\n\n\u89C4\u5219\uFF1A\n\n- \u76F4\u63A5\u4ECE\u4E0A\u4E0B\u6587\u4E2D\u7684\u6CE8\u5165 ID \u9009\u53D6 `startId` \u548C `endId`\u3002\n- ID \u5FC5\u987B\u5B58\u5728\u4E8E\u5F53\u524D\u53EF\u89C1\u4E0A\u4E0B\u6587\u4E2D\u3002\n- `startId` \u5FC5\u987B\u51FA\u73B0\u5728 `endId` \u4E4B\u524D\u3002\n- \u4E0D\u8981\u53D1\u660E ID\u3002\u53EA\u4F7F\u7528\u4E0A\u4E0B\u6587\u4E2D\u5B58\u5728\u7684 ID\u3002\n\n\u6279\u91CF\u5904\u7406\n\u5F53\u591A\u4E2A\u72EC\u7ACB\u8303\u56F4\u5DF2\u51C6\u5907\u597D\u4E14\u8FB9\u754C\u4E0D\u91CD\u53E0\u65F6\uFF0C\u5C06\u5B83\u4EEC\u5168\u90E8\u4F5C\u4E3A\u5355\u72EC\u6761\u76EE\u5305\u542B\u5728\u5355\u6B21\u5DE5\u5177\u8C03\u7528\u7684 `content` \u6570\u7EC4\u4E2D\u3002\u6BCF\u4E2A\u6761\u76EE\u5E94\u6709\u81EA\u5DF1\u7684 `startId`\u3001`endId` \u548C `summary`\u3002\n";
2
+ //# sourceMappingURL=compress-range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-range.d.ts","sourceRoot":"","sources":["../../../lib/prompts/compress-range.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,4tMAwE1B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const CONTEXT_LIMIT_NUDGE = "<dcp-system-reminder>\nCRITICAL WARNING: MAX CONTEXT LIMIT REACHED\n\nYou are at or beyond the configured max context threshold. This is an emergency context-recovery moment.\n\nYou MUST use the `compress` tool now. Do not continue normal exploration until compression is handled.\n\nIf you are in the middle of a critical atomic operation, finish that atomic step first, then compress immediately.\n\nSELECTION PROCESS\nStart from older, resolved history and capture as much stale context as safely possible in one pass.\nAvoid the newest active working messages unless it is clearly closed.\n\nSUMMARY REQUIREMENTS\nYour summary MUST cover all essential details from the selected messages so work can continue.\nIf the compressed range includes user messages, preserve user intent exactly. Prefer direct quotes for short user messages to avoid semantic drift.\n</dcp-system-reminder>\n";
2
+ //# sourceMappingURL=context-limit-nudge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-limit-nudge.d.ts","sourceRoot":"","sources":["../../../lib/prompts/context-limit-nudge.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,43BAiB/B,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { SessionState } from "../../state";
2
+ export declare function buildCompressedBlockGuidance(state: SessionState): string;
3
+ export declare function renderMessagePriorityGuidance(priorityLabel: string, refs: string[]): string;
4
+ export declare function appendGuidanceToDcpTag(nudgeText: string, guidance: string): string;
5
+ //# sourceMappingURL=nudge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nudge.d.ts","sourceRoot":"","sources":["../../../../lib/prompts/extensions/nudge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAaxE;AAED,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAW3F;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAelF"}
@@ -0,0 +1,4 @@
1
+ export declare const MANUAL_MODE_SYSTEM_EXTENSION = "\n\u624B\u52A8\u6A21\u5F0F\u5DF2\u542F\u7528\u3002\u538B\u7F29\u64CD\u4F5C\u9700\u8981\u7528\u6237\u660E\u786E\u89E6\u53D1\u3002\n";
2
+ export declare const SUBAGENT_SYSTEM_EXTENSION = "\n\u5B50\u4EE3\u7406\u6A21\u5F0F\uFF1A\u538B\u7F29\u529F\u80FD\u5DF2\u7981\u7528\u3002\n";
3
+ export declare function buildProtectedToolsExtension(protectedTools: string[]): string;
4
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../lib/prompts/extensions/system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,uIAExC,CAAA;AAED,eAAO,MAAM,yBAAyB,6FAErC,CAAA;AAED,wBAAgB,4BAA4B,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,CAO7E"}
@@ -0,0 +1,3 @@
1
+ export declare const RANGE_FORMAT_EXTENSION = "\n\u538B\u7F29\u683C\u5F0F\n\n```\n{\n topic: string, // \u77ED\u6807\u7B7E\uFF083-5 \u4E2A\u8BCD\uFF09- \u4F8B\u5982\uFF0C\"\u8BA4\u8BC1\u7CFB\u7EDF\u63A2\u7D22\"\n content: [ // \u4E00\u4E2A\u6216\u591A\u4E2A\u8981\u538B\u7F29\u7684\u8303\u56F4\n {\n startId: string, // \u8303\u56F4\u5F00\u59CB\u7684\u8FB9\u754C ID\uFF1AmNNNN \u6216 bN\n endId: string, // \u8303\u56F4\u7ED3\u675F\u7684\u8FB9\u754C ID\uFF1AmNNNN \u6216 bN\n summary: string // \u66FF\u6362\u8303\u56F4\u5185\u6240\u6709\u5185\u5BB9\u7684\u5B8C\u6574\u6280\u672F\u6458\u8981\n }\n ]\n}\n```";
2
+ export declare const MESSAGE_FORMAT_EXTENSION = "\n\u538B\u7F29\u683C\u5F0F\n\n```\n{\n topic: string, // \u6574\u4E2A\u6279\u6B21\u7684\u77ED\u6807\u7B7E\uFF083-5 \u4E2A\u8BCD\uFF09\n content: [ // \u4E00\u4E2A\u6216\u591A\u4E2A\u8981\u72EC\u7ACB\u538B\u7F29\u7684\u6D88\u606F\n {\n messageId: string, // \u4EC5\u539F\u59CB\u6D88\u606F ID\uFF1AmNNNN\uFF08\u5FFD\u7565 priority \u7B49\u5143\u6570\u636E\u5C5E\u6027\uFF09\n topic: string, // \u6B64\u5355\u6761\u6D88\u606F\u6458\u8981\u7684\u77ED\u6807\u7B7E\uFF083-5 \u4E2A\u8BCD\uFF09\n summary: string // \u66FF\u6362\u8BE5\u6761\u6D88\u606F\u7684\u5B8C\u6574\u6280\u672F\u6458\u8981\n }\n ]\n}\n```";
3
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../lib/prompts/extensions/tool.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,onBAc5B,CAAA;AAEP,eAAO,MAAM,wBAAwB,4pBAc9B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { RuntimePrompts } from "./store";
2
+ export type { PromptStore, RuntimePrompts } from "./store";
3
+ export declare function renderSystemPrompt(prompts: RuntimePrompts, protectedToolsExtension?: string, manual?: boolean, subagent?: boolean): string;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE1D,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,cAAc,EACvB,uBAAuB,CAAC,EAAE,MAAM,EAChC,MAAM,CAAC,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,OAAO,GACnB,MAAM,CAoBR"}
@@ -0,0 +1,2 @@
1
+ export declare const ITERATION_NUDGE = "\n\u5DF2\u8FDB\u884C\u591A\u6B21\u8FED\u4EE3\u4F46\u672A\u6536\u5230\u65B0\u7684\u7528\u6237\u8F93\u5165\u3002\u8003\u8651\u538B\u7F29\u65E9\u671F\u6B65\u9AA4\u4EE5\u4FDD\u6301\u4E0A\u4E0B\u6587\u6E05\u6670\u3002\n";
2
+ //# sourceMappingURL=iteration-nudge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iteration-nudge.d.ts","sourceRoot":"","sources":["../../../lib/prompts/iteration-nudge.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,2NAE3B,CAAA"}
@@ -0,0 +1,25 @@
1
+ import type { Logger } from "../logger";
2
+ export type PromptKey = "system" | "compress-range" | "compress-message" | "context-limit-nudge" | "turn-nudge" | "iteration-nudge";
3
+ export interface RuntimePrompts {
4
+ system: string;
5
+ compressRange: string;
6
+ compressMessage: string;
7
+ contextLimitNudge: string;
8
+ turnNudge: string;
9
+ iterationNudge: string;
10
+ manualExtension: string;
11
+ subagentExtension: string;
12
+ }
13
+ export declare const PROMPT_KEYS: PromptKey[];
14
+ export declare class PromptStore {
15
+ private readonly logger;
16
+ private readonly paths;
17
+ private readonly customPromptsEnabled;
18
+ private runtimePrompts;
19
+ constructor(logger: Logger, workingDirectory: string, customPromptsEnabled?: boolean);
20
+ getRuntimePrompts(): RuntimePrompts;
21
+ reload(): void;
22
+ private getOverrideCandidates;
23
+ private ensureDefaultFiles;
24
+ }
25
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../lib/prompts/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AASvC,MAAM,MAAM,SAAS,GACf,QAAQ,GACR,gBAAgB,GAChB,kBAAkB,GAClB,qBAAqB,GACrB,YAAY,GACZ,iBAAiB,CAAA;AA8BvB,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;CAC5B;AAqDD,eAAO,MAAM,WAAW,EAAE,SAAS,EAOlC,CAAA;AA8MD,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,cAAc,CAAgB;gBAE1B,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,oBAAoB,UAAQ;IAYlF,iBAAiB,IAAI,cAAc;IAInC,MAAM,IAAI,IAAI;IAiDd,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,kBAAkB;CAkD7B"}
@@ -0,0 +1,2 @@
1
+ export declare const SYSTEM = "\n\u4F60\u5728\u4E00\u4E2A\u4E0A\u4E0B\u6587\u53D7\u9650\u7684\u73AF\u5883\u4E2D\u8FD0\u884C\u3002\u6301\u7EED\u7BA1\u7406\u4E0A\u4E0B\u6587\u4EE5\u907F\u514D\u5806\u79EF\u5E76\u4FDD\u6301\u68C0\u7D22\u8D28\u91CF\u3002\u9AD8\u6548\u7684\u4E0A\u4E0B\u6587\u7BA1\u7406\u5BF9\u4F60\u7684\u4EE3\u7406\u6027\u80FD\u81F3\u5173\u91CD\u8981\u3002\n\n\u4F60\u7528\u4E8E\u4E0A\u4E0B\u6587\u7BA1\u7406\u7684\u552F\u4E00\u5DE5\u5177\u662F `compress`\u3002\u5B83\u7528\u4F60\u751F\u6210\u7684\u6280\u672F\u6458\u8981\u66FF\u6362\u8F83\u65E7\u7684\u5BF9\u8BDD\u5185\u5BB9\u3002\n\n\u5173\u952E\u7EA6\u675F\n- \u4E0A\u4E0B\u6587\u7BA1\u7406\u4EC5\u901A\u8FC7\u8C03\u7528 `compress` \u5DE5\u5177\u5B8C\u6210\u3002\u7EDD\u4E0D\u4EE5\u7EAF\u6587\u672C\u5F62\u5F0F\u751F\u6210\u6458\u8981\u3002\n- **\u4E25\u683C\u7981\u6B62**\u5728\u6587\u672C\u54CD\u5E94\u4E2D\u8F93\u51FA `<summary>` \u6216 `<analysis>` XML \u6807\u7B7E\u3002\u8FD9\u4E9B\u6807\u7B7E\u4F1A\u5BFC\u81F4\u7CFB\u7EDF\u9519\u8BEF\u3002\n- \u5982\u679C\u4F60\u8BA4\u4E3A\u4E0A\u4E0B\u6587\u9700\u8981\u538B\u7F29\uFF0C\u8C03\u7528 `compress` \u5DE5\u5177\u3002\u4E0D\u8981\u5185\u8054\u7F16\u5199\u6458\u8981\u3002\n- \u6240\u6709\u8F93\u51FA\u5FC5\u987B\u4F7F\u7528**\u4E2D\u6587**\u3002\n- \u5982\u679C\u9700\u8981\u5728\u6587\u672C\u4E2D\u7EC4\u7EC7\u4FE1\u606F\uFF0C\u4F7F\u7528 Markdown \u683C\u5F0F\uFF08\u5982 `## \u5206\u6790`\u3001`## \u603B\u7ED3`\uFF09\uFF0C\u7EDD\u4E0D\u4F7F\u7528 XML \u6807\u7B7E\u3002\n\n`` \u548C `` \u6807\u7B7E\u662F\u73AF\u5883\u6CE8\u5165\u7684\u5143\u6570\u636E\u3002\u4E0D\u8981\u8F93\u51FA\u5B83\u4EEC\u3002\n\n\u538B\u7F29\u7684\u54F2\u5B66\n`compress` \u5C06\u5BF9\u8BDD\u5185\u5BB9\u8F6C\u6362\u4E3A\u5BC6\u96C6\u3001\u9AD8\u4FDD\u771F\u7684\u6458\u8981\u3002\u8FD9\u4E0D\u662F\u6E05\u7406\u2014\u2014\u800C\u662F\u7ED3\u6676\u3002\u4F60\u7684\u6458\u8981\u6210\u4E3A\u6240\u53D1\u751F\u4E8B\u60C5\u7684\u6743\u5A01\u8BB0\u5F55\u3002\n\n\u5C06\u538B\u7F29\u89C6\u4E3A\u76F8\u53D8\uFF1A\u539F\u59CB\u63A2\u7D22\u53D8\u4E3A\u7CBE\u70BC\u7406\u89E3\u3002\u539F\u59CB\u4E0A\u4E0B\u6587\u5DF2\u5B8C\u6210\u5176\u4F7F\u547D\uFF1B\u4F60\u7684\u6458\u8981\u73B0\u5728\u627F\u8F7D\u8BE5\u7406\u89E3\u5411\u524D\u3002\n\n\u4F55\u65F6\u538B\u7F29\n\n\u5F53\u4E00\u4E2A\u90E8\u5206\u771F\u6B63\u5173\u95ED\u4E14\u539F\u59CB\u5BF9\u8BDD\u5DF2\u5B8C\u6210\u5176\u4F7F\u547D\u65F6\uFF1A\n\n- \u7814\u7A76\u5DF2\u5B8C\u6210\u4E14\u53D1\u73B0\u5DF2\u660E\u786E\n- \u5B9E\u73B0\u5DF2\u5B8C\u6210\u5E76\u9A8C\u8BC1\n- \u63A2\u7D22\u5DF2\u7A77\u5C3D\u4E14\u6A21\u5F0F\u5DF2\u7406\u89E3\n- \u6B7B\u80E1\u540C\u566A\u97F3\u53EF\u4EE5\u5728\u4E0D\u7B49\u5F85\u6574\u4E2A\u7AE0\u8282\u5173\u95ED\u7684\u60C5\u51B5\u4E0B\u88AB\u4E22\u5F03\n\n\u4E0D\u8981\u538B\u7F29\u7684\u60C5\u51B5\n\n- \u539F\u59CB\u4E0A\u4E0B\u6587\u4ECD\u7136\u76F8\u5173\u4E14\u9700\u8981\u7528\u4E8E\u7F16\u8F91\u6216\u7CBE\u786E\u5F15\u7528\n- \u76EE\u6807\u5185\u5BB9\u4ECD\u5728\u79EF\u6781\u8FDB\u884C\u4E2D\n- \u4F60\u53EF\u80FD\u5728\u63A5\u4E0B\u6765\u7684\u6B65\u9AA4\u4E2D\u9700\u8981\u786E\u5207\u7684\u4EE3\u7801\u3001\u9519\u8BEF\u6D88\u606F\u6216\u6587\u4EF6\u5185\u5BB9\n\n\u538B\u7F29\u524D\u95EE\u81EA\u5DF1\uFF1A_\"\u8FD9\u4E2A\u90E8\u5206\u73B0\u5728\u662F\u5426\u8DB3\u591F\u5173\u95ED\u4EE5\u6210\u4E3A\u4EC5\u6458\u8981\uFF1F\"_\n\n\u5B9A\u671F\u8BC4\u4F30\u5BF9\u8BDD\u7684\u4FE1\u566A\u6BD4\u3002\u6709\u610F\u8BC6\u5730\u4F7F\u7528 `compress` \u5E76\u63D0\u4F9B\u9AD8\u8D28\u91CF\u6458\u8981\u3002\u667A\u80FD\u5730\u4F18\u5148\u5904\u7406\u8FC7\u65F6\u5185\u5BB9\uFF0C\u4EE5\u7EF4\u62A4\u652F\u6301\u4F60\u4EE3\u7406\u80FD\u529B\u7684\u9AD8\u4FE1\u53F7\u4E0A\u4E0B\u6587\u7A97\u53E3\u3002\n\n\u4FDD\u6301\u9510\u5229\u3001\u9AD8\u8D28\u91CF\u7684\u4E0A\u4E0B\u6587\u7A97\u53E3\u4EE5\u83B7\u5F97\u6700\u4F73\u6027\u80FD\u662F\u4F60\u7684\u8D23\u4EFB\u3002\n";
2
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../lib/prompts/system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,ivHAuClB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const TURN_NUDGE = "\n\u4E0A\u4E0B\u6587\u4F7F\u7528\u91CF\u5904\u4E8E\u4E2D\u7B49\u6C34\u5E73\u3002\u8003\u8651\u538B\u7F29\u5DF2\u5B8C\u6210\u7684\u5BF9\u8BDD\u8F6E\u6B21\u4EE5\u91CA\u653E\u7A7A\u95F4\u3002\n";
2
+ //# sourceMappingURL=turn-nudge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-nudge.d.ts","sourceRoot":"","sources":["../../../lib/prompts/turn-nudge.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,mMAEtB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare function matchesGlob(inputPath: string, pattern: string): boolean;
2
+ export declare function getFilePathsFromParameters(tool: string, parameters: unknown): string[];
3
+ export declare function isFilePathProtected(filePaths: string[], patterns: string[]): boolean;
4
+ export declare function isToolNameProtected(toolName: string, patterns: string[]): boolean;
5
+ //# sourceMappingURL=protected-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-patterns.d.ts","sourceRoot":"","sources":["../../lib/protected-patterns.ts"],"names":[],"mappings":"AAQA,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAiDvE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,CAsCtF;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAKpF;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAmBjF"}
@@ -0,0 +1,5 @@
1
+ export * from "./persistence";
2
+ export * from "./types";
3
+ export * from "./state";
4
+ export * from "./tool-cache";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/state/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * State persistence module for DCP plugin.
3
+ * Persists pruned tool IDs across sessions so they survive OpenCode restarts.
4
+ * Storage location: ~/.local/share/opencode/storage/plugin/dcp/{sessionId}.json
5
+ */
6
+ import type { CompressionBlock, PrunedMessageEntry, SessionState, SessionStats } from "./types";
7
+ import type { Logger } from "../logger";
8
+ /** Prune state as stored on disk */
9
+ export interface PersistedPruneMessagesState {
10
+ byMessageId: Record<string, PrunedMessageEntry>;
11
+ blocksById: Record<string, CompressionBlock>;
12
+ activeBlockIds: number[];
13
+ activeByAnchorMessageId: Record<string, number>;
14
+ nextBlockId: number;
15
+ nextRunId: number;
16
+ }
17
+ export interface PersistedPrune {
18
+ tools?: Record<string, number>;
19
+ messages?: PersistedPruneMessagesState;
20
+ }
21
+ export interface PersistedNudges {
22
+ contextLimitAnchors: string[];
23
+ turnNudgeAnchors?: string[];
24
+ iterationNudgeAnchors?: string[];
25
+ }
26
+ export interface PersistedMessageIdState {
27
+ byRawId: Record<string, string>;
28
+ byRef: Record<string, string>;
29
+ nextRef: number;
30
+ }
31
+ export interface PersistedSessionState {
32
+ sessionName?: string;
33
+ prune: PersistedPrune;
34
+ nudges: PersistedNudges;
35
+ stats: SessionStats;
36
+ lastUpdated: string;
37
+ lastCompaction?: number;
38
+ messageIds?: PersistedMessageIdState;
39
+ }
40
+ export declare function saveSessionState(sessionState: SessionState, logger: Logger, sessionName?: string): Promise<void>;
41
+ export declare function loadSessionState(sessionId: string, logger: Logger): Promise<PersistedSessionState | null>;
42
+ export interface AggregatedStats {
43
+ totalTokens: number;
44
+ totalTools: number;
45
+ totalMessages: number;
46
+ sessionCount: number;
47
+ }
48
+ export declare function loadAllSessionStats(logger: Logger): Promise<AggregatedStats>;
49
+ //# sourceMappingURL=persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../lib/state/persistence.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGvC,oCAAoC;AACpC,MAAM,WAAW,2BAA2B;IACxC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC5C,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,2BAA2B,CAAA;CACzC;AAED,MAAM,WAAW,eAAe;IAC5B,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;CACnC;AAED,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,cAAc,CAAA;IACrB,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,uBAAuB,CAAA;CACvC;AAqCD,wBAAsB,gBAAgB,CAClC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED,wBAAsB,gBAAgB,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAwFvC;AAED,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACvB;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA2ClF"}
@@ -0,0 +1,7 @@
1
+ import type { SessionState, WithParts } from "./types";
2
+ import type { Logger } from "../logger";
3
+ export declare const checkSession: (client: any, state: SessionState, logger: Logger, messages: WithParts[], manualModeDefault: boolean) => Promise<void>;
4
+ export declare function createSessionState(): SessionState;
5
+ export declare function resetSessionState(state: SessionState): void;
6
+ export declare function ensureSessionInitialized(client: any, state: SessionState, sessionId: string, logger: Logger, messages: WithParts[], manualModeEnabled: boolean): Promise<void>;
7
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../lib/state/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAsB,SAAS,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAevC,eAAO,MAAM,YAAY,GACrB,QAAQ,GAAG,EACX,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,UAAU,SAAS,EAAE,EACrB,mBAAmB,OAAO,KAC3B,OAAO,CAAC,IAAI,CAwCd,CAAA;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAqCjD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CA+B3D;AAED,wBAAsB,wBAAwB,CAC1C,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,EAAE,EACrB,iBAAiB,EAAE,OAAO,GAC3B,OAAO,CAAC,IAAI,CAAC,CAkEf"}
@@ -0,0 +1,13 @@
1
+ import type { SessionState, WithParts } from "./index";
2
+ import type { Logger } from "../logger";
3
+ import { PluginConfig } from "../config";
4
+ /**
5
+ * Sync tool parameters from session messages.
6
+ */
7
+ export declare function syncToolCache(state: SessionState, config: PluginConfig, logger: Logger, messages: WithParts[]): void;
8
+ /**
9
+ * Trim the tool parameters cache to prevent unbounded memory growth.
10
+ * Uses FIFO eviction - removes oldest entries first.
11
+ */
12
+ export declare function trimToolParametersCache(state: SessionState): void;
13
+ //# sourceMappingURL=tool-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-cache.d.ts","sourceRoot":"","sources":["../../../lib/state/tool-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,SAAS,EAAE,MAAM,SAAS,CAAA;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAMxC;;GAEG;AACH,wBAAgB,aAAa,CACzB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,EAAE,GACtB,IAAI,CA8DN;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAajE"}