@oyasmi/pipiclaw 0.5.0 → 0.5.2

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 (173) hide show
  1. package/dist/agent/channel-runner.d.ts +46 -0
  2. package/dist/agent/channel-runner.d.ts.map +1 -0
  3. package/dist/agent/channel-runner.js +434 -0
  4. package/dist/agent/channel-runner.js.map +1 -0
  5. package/dist/agent/index.d.ts +4 -0
  6. package/dist/agent/index.d.ts.map +1 -0
  7. package/dist/agent/index.js +3 -0
  8. package/dist/agent/index.js.map +1 -0
  9. package/dist/agent/progress-formatter.d.ts +5 -0
  10. package/dist/agent/progress-formatter.d.ts.map +1 -0
  11. package/dist/agent/progress-formatter.js +53 -0
  12. package/dist/agent/progress-formatter.js.map +1 -0
  13. package/dist/agent/run-queue.d.ts +8 -0
  14. package/dist/agent/run-queue.d.ts.map +1 -0
  15. package/dist/agent/run-queue.js +27 -0
  16. package/dist/agent/run-queue.js.map +1 -0
  17. package/dist/agent/runner-factory.d.ts +4 -0
  18. package/dist/agent/runner-factory.d.ts.map +1 -0
  19. package/dist/agent/runner-factory.js +11 -0
  20. package/dist/agent/runner-factory.js.map +1 -0
  21. package/dist/agent/session-events.d.ts +15 -0
  22. package/dist/agent/session-events.d.ts.map +1 -0
  23. package/dist/agent/session-events.js +216 -0
  24. package/dist/agent/session-events.js.map +1 -0
  25. package/dist/agent/type-guards.d.ts +23 -0
  26. package/dist/agent/type-guards.d.ts.map +1 -0
  27. package/dist/agent/type-guards.js +107 -0
  28. package/dist/agent/type-guards.js.map +1 -0
  29. package/dist/agent/types.d.ts +161 -0
  30. package/dist/agent/types.d.ts.map +1 -0
  31. package/dist/agent/types.js +23 -0
  32. package/dist/agent/types.js.map +1 -0
  33. package/dist/agent.d.ts +2 -15
  34. package/dist/agent.d.ts.map +1 -1
  35. package/dist/agent.js +1 -781
  36. package/dist/agent.js.map +1 -1
  37. package/dist/context.d.ts +58 -14
  38. package/dist/context.d.ts.map +1 -1
  39. package/dist/context.js +50 -7
  40. package/dist/context.js.map +1 -1
  41. package/dist/index.d.ts +12 -12
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +12 -12
  44. package/dist/index.js.map +1 -1
  45. package/dist/main.js +5 -404
  46. package/dist/main.js.map +1 -1
  47. package/dist/memory/bootstrap.d.ts +7 -0
  48. package/dist/memory/bootstrap.d.ts.map +1 -0
  49. package/dist/memory/bootstrap.js +47 -0
  50. package/dist/memory/bootstrap.js.map +1 -0
  51. package/dist/{memory-candidates.d.ts → memory/candidates.d.ts} +2 -1
  52. package/dist/memory/candidates.d.ts.map +1 -0
  53. package/dist/{memory-candidates.js → memory/candidates.js} +34 -21
  54. package/dist/memory/candidates.js.map +1 -0
  55. package/dist/memory/chinese-words.d.ts +2 -0
  56. package/dist/memory/chinese-words.d.ts.map +1 -0
  57. package/dist/memory/chinese-words.js +210 -0
  58. package/dist/memory/chinese-words.js.map +1 -0
  59. package/dist/{memory-consolidation.d.ts → memory/consolidation.d.ts} +1 -1
  60. package/dist/memory/consolidation.d.ts.map +1 -0
  61. package/dist/{memory-consolidation.js → memory/consolidation.js} +27 -35
  62. package/dist/memory/consolidation.js.map +1 -0
  63. package/dist/{memory-files.d.ts → memory/files.d.ts} +1 -6
  64. package/dist/memory/files.d.ts.map +1 -0
  65. package/dist/{memory-files.js → memory/files.js} +12 -36
  66. package/dist/memory/files.js.map +1 -0
  67. package/dist/{memory-lifecycle.d.ts → memory/lifecycle.d.ts} +24 -6
  68. package/dist/memory/lifecycle.d.ts.map +1 -0
  69. package/dist/memory/lifecycle.js +247 -0
  70. package/dist/memory/lifecycle.js.map +1 -0
  71. package/dist/{memory-recall.d.ts → memory/recall.d.ts} +2 -2
  72. package/dist/memory/recall.d.ts.map +1 -0
  73. package/dist/memory/recall.js +435 -0
  74. package/dist/memory/recall.js.map +1 -0
  75. package/dist/{session-memory.d.ts → memory/session.d.ts} +2 -1
  76. package/dist/memory/session.d.ts.map +1 -0
  77. package/dist/{session-memory.js → memory/session.js} +32 -62
  78. package/dist/memory/session.js.map +1 -0
  79. package/dist/runtime/bootstrap.d.ts +48 -0
  80. package/dist/runtime/bootstrap.d.ts.map +1 -0
  81. package/dist/runtime/bootstrap.js +451 -0
  82. package/dist/runtime/bootstrap.js.map +1 -0
  83. package/dist/runtime/delivery.d.ts.map +1 -0
  84. package/dist/{delivery.js → runtime/delivery.js} +1 -1
  85. package/dist/runtime/delivery.js.map +1 -0
  86. package/dist/{dingtalk.d.ts → runtime/dingtalk.d.ts} +10 -0
  87. package/dist/runtime/dingtalk.d.ts.map +1 -0
  88. package/dist/{dingtalk.js → runtime/dingtalk.js} +87 -27
  89. package/dist/runtime/dingtalk.js.map +1 -0
  90. package/dist/runtime/events.d.ts.map +1 -0
  91. package/dist/{events.js → runtime/events.js} +1 -1
  92. package/dist/runtime/events.js.map +1 -0
  93. package/dist/{store.d.ts → runtime/store.d.ts} +5 -0
  94. package/dist/runtime/store.d.ts.map +1 -0
  95. package/dist/{store.js → runtime/store.js} +60 -19
  96. package/dist/runtime/store.js.map +1 -0
  97. package/dist/shared/markdown-sections.d.ts +7 -0
  98. package/dist/shared/markdown-sections.d.ts.map +1 -0
  99. package/dist/{markdown-sections.js → shared/markdown-sections.js} +10 -3
  100. package/dist/shared/markdown-sections.js.map +1 -0
  101. package/dist/shared/text-utils.d.ts +10 -0
  102. package/dist/shared/text-utils.d.ts.map +1 -0
  103. package/dist/shared/text-utils.js +37 -0
  104. package/dist/shared/text-utils.js.map +1 -0
  105. package/dist/shared/type-guards.d.ts +6 -0
  106. package/dist/shared/type-guards.d.ts.map +1 -0
  107. package/dist/shared/type-guards.js +13 -0
  108. package/dist/shared/type-guards.js.map +1 -0
  109. package/dist/shared/types.d.ts +15 -0
  110. package/dist/shared/types.d.ts.map +1 -0
  111. package/dist/shared/types.js +2 -0
  112. package/dist/shared/types.js.map +1 -0
  113. package/dist/sidecar-worker.d.ts.map +1 -1
  114. package/dist/sidecar-worker.js +1 -7
  115. package/dist/sidecar-worker.js.map +1 -1
  116. package/dist/{sub-agents.d.ts → subagents/discovery.d.ts} +1 -1
  117. package/dist/subagents/discovery.d.ts.map +1 -0
  118. package/dist/{sub-agents.js → subagents/discovery.js} +3 -3
  119. package/dist/subagents/discovery.js.map +1 -0
  120. package/dist/{tools/subagent.d.ts → subagents/tool.d.ts} +3 -16
  121. package/dist/{tools/subagent.d.ts.map → subagents/tool.d.ts.map} +1 -1
  122. package/dist/{tools/subagent.js → subagents/tool.js} +17 -38
  123. package/dist/subagents/tool.js.map +1 -0
  124. package/dist/tools/index.d.ts +1 -1
  125. package/dist/tools/index.d.ts.map +1 -1
  126. package/dist/tools/index.js +1 -1
  127. package/dist/tools/index.js.map +1 -1
  128. package/docs/memory-audit.md +330 -0
  129. package/docs/memory-optimization-round2.md +319 -0
  130. package/package.json +1 -1
  131. package/dist/delivery.d.ts.map +0 -1
  132. package/dist/delivery.js.map +0 -1
  133. package/dist/dingtalk.d.ts.map +0 -1
  134. package/dist/dingtalk.js.map +0 -1
  135. package/dist/events.d.ts.map +0 -1
  136. package/dist/events.js.map +0 -1
  137. package/dist/markdown-sections.d.ts +0 -6
  138. package/dist/markdown-sections.d.ts.map +0 -1
  139. package/dist/markdown-sections.js.map +0 -1
  140. package/dist/memory-candidates.d.ts.map +0 -1
  141. package/dist/memory-candidates.js.map +0 -1
  142. package/dist/memory-consolidation.d.ts.map +0 -1
  143. package/dist/memory-consolidation.js.map +0 -1
  144. package/dist/memory-files.d.ts.map +0 -1
  145. package/dist/memory-files.js.map +0 -1
  146. package/dist/memory-lifecycle.d.ts.map +0 -1
  147. package/dist/memory-lifecycle.js +0 -150
  148. package/dist/memory-lifecycle.js.map +0 -1
  149. package/dist/memory-recall.d.ts.map +0 -1
  150. package/dist/memory-recall.js +0 -218
  151. package/dist/memory-recall.js.map +0 -1
  152. package/dist/session-memory-files.d.ts +0 -2
  153. package/dist/session-memory-files.d.ts.map +0 -1
  154. package/dist/session-memory-files.js +0 -2
  155. package/dist/session-memory-files.js.map +0 -1
  156. package/dist/session-memory.d.ts.map +0 -1
  157. package/dist/session-memory.js.map +0 -1
  158. package/dist/store.d.ts.map +0 -1
  159. package/dist/store.js.map +0 -1
  160. package/dist/sub-agents.d.ts.map +0 -1
  161. package/dist/sub-agents.js.map +0 -1
  162. package/dist/tools/subagent.js.map +0 -1
  163. package/docs/proj-review.md +0 -188
  164. package/docs/test-supplementation-plan.md +0 -553
  165. /package/dist/{delivery.d.ts → runtime/delivery.d.ts} +0 -0
  166. /package/dist/{events.d.ts → runtime/events.d.ts} +0 -0
  167. /package/docs/{memory-rfc.md → specs/001-implement-memory/memory-rfc.md} +0 -0
  168. /package/docs/{subagent → specs/002-subagent}/pi-subagent-analyse.txt +0 -0
  169. /package/docs/{subagent → specs/002-subagent}/pi-subagent-design.txt +0 -0
  170. /package/docs/{subagent → specs/002-subagent}/pi-subagent-phase1-plan.txt +0 -0
  171. /package/docs/{improve-memory → specs/003-improve-memory}/design.md +0 -0
  172. /package/docs/{improve-memory → specs/003-improve-memory}/interfaces-and-tests.md +0 -0
  173. /package/docs/{improve-memory → specs/003-improve-memory}/spec.md +0 -0
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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","sourcesContent":["import { Agent } from \"@mariozechner/pi-agent-core\";\nimport type { Api, Model } from \"@mariozechner/pi-ai\";\nimport {\n\tAgentSession,\n\tAuthStorage,\n\tconvertToLlm,\n\tDefaultResourceLoader,\n\tModelRegistry,\n\tSessionManager,\n\ttype Skill,\n} from \"@mariozechner/pi-coding-agent\";\nimport { mkdir, writeFile } from \"fs/promises\";\nimport { dirname, join, resolve } from \"path\";\nimport { COMMAND_RESULT_CUSTOM_TYPE, createCommandExtension } from \"./command-extension.js\";\nimport { type BuiltInCommand, renderBuiltInHelp } from \"./commands.js\";\nimport { getAgentConfig, getApiKeyForModel, getSoul, loadPipiclawSkills } from \"./config-loader.js\";\nimport { PipiclawSettingsManager } from \"./context.js\";\nimport type { DingTalkContext } from \"./dingtalk.js\";\nimport * as log from \"./log.js\";\nimport { createMemoryCandidateCache } from \"./memory-candidates.js\";\nimport { MemoryLifecycle } from \"./memory-lifecycle.js\";\nimport { recallRelevantMemory } from \"./memory-recall.js\";\nimport { resolveInitialModel } from \"./model-utils.js\";\nimport { APP_HOME_DIR, AUTH_CONFIG_PATH, MODELS_CONFIG_PATH } from \"./paths.js\";\nimport { buildAppendSystemPrompt } from \"./prompt-builder.js\";\nimport { createExecutor, type SandboxConfig } from \"./sandbox.js\";\nimport type { ChannelStore } from \"./store.js\";\nimport { discoverSubAgents, formatSubAgentList, type SubAgentDiscoveryResult } from \"./sub-agents.js\";\nimport { createPipiclawTools } from \"./tools/index.js\";\nimport type { SubAgentToolDetails } from \"./tools/subagent.js\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface AgentRunner {\n\trun(ctx: DingTalkContext, store: ChannelStore): Promise<{ stopReason: string; errorMessage?: string }>;\n\thandleBuiltinCommand(ctx: DingTalkContext, command: BuiltInCommand): Promise<void>;\n\tqueueSteer(text: string, userName?: string): Promise<void>;\n\tqueueFollowUp(text: string, userName?: string): Promise<void>;\n\tabort(): Promise<void>;\n}\n\ntype FinalOutcome = { kind: \"none\" } | { kind: \"silent\" } | { kind: \"final\"; text: string };\ntype ModelRegistryClass = {\n\tcreate?: (authStorage: AuthStorage, modelsJsonPath?: string) => ModelRegistry;\n\tnew (authStorage: AuthStorage, modelsJsonPath?: string): ModelRegistry;\n};\n\nfunction isSilentOutcome(outcome: FinalOutcome): outcome is { kind: \"silent\" } {\n\treturn outcome.kind === \"silent\";\n}\n\nfunction isFinalOutcome(outcome: FinalOutcome): outcome is { kind: \"final\"; text: string } {\n\treturn outcome.kind === \"final\";\n}\n\nfunction getFinalOutcomeText(outcome: FinalOutcome): string | null {\n\treturn isFinalOutcome(outcome) ? outcome.text : null;\n}\n\nfunction createModelRegistry(authStorage: AuthStorage, modelsJsonPath: string): ModelRegistry {\n\tconst registryClass = ModelRegistry as unknown as ModelRegistryClass;\n\treturn typeof registryClass.create === \"function\"\n\t\t? registryClass.create(authStorage, modelsJsonPath)\n\t\t: new registryClass(authStorage, modelsJsonPath);\n}\n\n// ============================================================================\n// Text helpers\n// ============================================================================\n\nfunction truncate(text: string, maxLen: number): string {\n\tif (text.length <= maxLen) return text;\n\treturn `${text.substring(0, maxLen - 3)}...`;\n}\n\nconst MAX_USER_MESSAGE_CHARS = 12_000;\nconst HAN_REGEX = /\\p{Script=Han}/u;\n\nfunction sanitizeProgressText(text: string): string {\n\treturn text\n\t\t.replace(/\\uFFFC/g, \"\")\n\t\t.replace(/\\r/g, \"\")\n\t\t.trim();\n}\n\nfunction clipUserInput(text: string, maxChars: number): string {\n\tconst normalized = text.replace(/\\r/g, \"\").trim();\n\tif (normalized.length <= maxChars) {\n\t\treturn normalized;\n\t}\n\n\tconst headChars = Math.floor(maxChars * 0.6);\n\tconst tailChars = maxChars - headChars;\n\treturn `${normalized.slice(0, headChars)}\\n\\n[... omitted ${normalized.length - maxChars} chars ...]\\n\\n${normalized.slice(-tailChars)}`;\n}\n\nfunction formatProgressEntry(kind: \"tool\" | \"thinking\" | \"error\" | \"assistant\", text: string): string {\n\tconst cleaned = sanitizeProgressText(text);\n\tif (!cleaned) return \"\";\n\n\tconst normalized = cleaned.replace(/\\n+/g, \" \").trim();\n\tswitch (kind) {\n\t\tcase \"tool\":\n\t\t\treturn `Running: ${normalized}`;\n\t\tcase \"thinking\":\n\t\t\treturn `Thinking: ${normalized}`;\n\t\tcase \"error\":\n\t\t\treturn `Error: ${normalized}`;\n\t\tcase \"assistant\":\n\t\t\treturn normalized;\n\t}\n}\n\nfunction extractToolResultText(result: unknown): string {\n\tif (typeof result === \"string\") {\n\t\treturn result;\n\t}\n\n\tif (\n\t\tresult &&\n\t\ttypeof result === \"object\" &&\n\t\t\"content\" in result &&\n\t\tArray.isArray((result as { content: unknown }).content)\n\t) {\n\t\tconst content = (result as { content: Array<{ type: string; text?: string }> }).content;\n\t\tconst textParts: string[] = [];\n\t\tfor (const part of content) {\n\t\t\tif (part.type === \"text\" && part.text) {\n\t\t\t\ttextParts.push(part.text);\n\t\t\t}\n\t\t}\n\t\tif (textParts.length > 0) {\n\t\t\treturn textParts.join(\"\\n\");\n\t\t}\n\t}\n\n\treturn JSON.stringify(result);\n}\n\nfunction isSubAgentToolDetails(value: unknown): value is SubAgentToolDetails {\n\tif (!value || typeof value !== \"object\" || !(\"kind\" in value) || (value as { kind?: unknown }).kind !== \"subagent\") {\n\t\treturn false;\n\t}\n\n\tif (!(\"usage\" in value)) {\n\t\treturn false;\n\t}\n\n\tconst usage = (value as { usage?: unknown }).usage;\n\treturn (\n\t\t!!usage &&\n\t\ttypeof usage === \"object\" &&\n\t\t\"input\" in usage &&\n\t\t\"output\" in usage &&\n\t\t\"cacheRead\" in usage &&\n\t\t\"cacheWrite\" in usage &&\n\t\t\"cost\" in usage\n\t);\n}\n\nfunction mergeSubAgentUsage(totalUsage: UsageTotals, details: SubAgentToolDetails): void {\n\ttotalUsage.input += details.usage.input;\n\ttotalUsage.output += details.usage.output;\n\ttotalUsage.cacheRead += details.usage.cacheRead;\n\ttotalUsage.cacheWrite += details.usage.cacheWrite;\n\ttotalUsage.cost.input += details.usage.cost.input;\n\ttotalUsage.cost.output += details.usage.cost.output;\n\ttotalUsage.cost.cacheRead += details.usage.cost.cacheRead;\n\ttotalUsage.cost.cacheWrite += details.usage.cost.cacheWrite;\n\ttotalUsage.cost.total += details.usage.cost.total;\n}\n\nfunction extractCustomCommandResultText(message: unknown): string | null {\n\tif (\n\t\t!message ||\n\t\ttypeof message !== \"object\" ||\n\t\t!(\"role\" in message) ||\n\t\t!(\"customType\" in message) ||\n\t\t(message as { role?: unknown }).role !== \"custom\" ||\n\t\t(message as { customType?: unknown }).customType !== COMMAND_RESULT_CUSTOM_TYPE\n\t) {\n\t\treturn null;\n\t}\n\n\tconst content = (message as { content?: unknown }).content;\n\treturn typeof content === \"string\" && content.trim() ? content : null;\n}\n\n// ============================================================================\n// Run State\n// ============================================================================\n\ninterface PendingTool {\n\ttoolName: string;\n\targs: unknown;\n\tstartTime: number;\n}\n\ninterface UsageTotals {\n\tinput: number;\n\toutput: number;\n\tcacheRead: number;\n\tcacheWrite: number;\n\tcost: { input: number; output: number; cacheRead: number; cacheWrite: number; total: number };\n}\n\ninterface RunQueue {\n\tenqueue(fn: () => Promise<void>, errorContext: string): void;\n\tenqueueMessage(text: string, target: \"main\" | \"thread\", errorContext: string, doLog?: boolean): void;\n}\n\ninterface RunState {\n\tctx: DingTalkContext | null;\n\tlogCtx: { channelId: string; userName?: string; channelName?: string } | null;\n\tstore: ChannelStore | null;\n\tqueue: RunQueue | null;\n\tpendingTools: Map<string, PendingTool>;\n\ttotalUsage: UsageTotals;\n\tstopReason: string;\n\terrorMessage: string | undefined;\n\tfinalOutcome: FinalOutcome;\n\tfinalResponseDelivered: boolean;\n}\n\nfunction createEmptyRunState(): RunState {\n\treturn {\n\t\tctx: null,\n\t\tlogCtx: null,\n\t\tstore: null,\n\t\tqueue: null,\n\t\tpendingTools: new Map(),\n\t\ttotalUsage: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t},\n\t\tstopReason: \"stop\",\n\t\terrorMessage: undefined,\n\t\tfinalOutcome: { kind: \"none\" },\n\t\tfinalResponseDelivered: false,\n\t};\n}\n\ninterface AssistantUsage {\n\tinput: number;\n\toutput: number;\n\tcacheRead: number;\n\tcacheWrite: number;\n\tcost: { input: number; output: number; cacheRead: number; cacheWrite: number; total: number };\n}\n\ntype AssistantContentPart =\n\t| { type: \"thinking\"; thinking: string }\n\t| { type: \"text\"; text: string }\n\t| { type: \"toolCall\" }\n\t| { type: string; [key: string]: unknown };\n\ninterface AssistantEventMessage {\n\trole: \"assistant\";\n\tcontent: AssistantContentPart[];\n\tstopReason?: string;\n\terrorMessage?: string;\n\tusage?: AssistantUsage;\n}\n\ntype SessionEvent =\n\t| { type: \"tool_execution_start\"; toolCallId: string; toolName: string; args: unknown }\n\t| { type: \"tool_execution_update\"; toolCallId: string; toolName: string; args: unknown; partialResult: unknown }\n\t| { type: \"tool_execution_end\"; toolCallId: string; toolName: string; result: unknown; isError: boolean }\n\t| { type: \"message_start\"; message: unknown }\n\t| { type: \"message_end\"; message: unknown }\n\t| { type: \"turn_end\"; message: unknown; toolResults: unknown[] }\n\t| { type: \"auto_compaction_start\"; reason: \"threshold\" | \"overflow\" }\n\t| { type: \"auto_compaction_end\"; result?: { tokensBefore: number }; aborted?: boolean }\n\t| { type: \"auto_retry_start\"; attempt: number; maxAttempts: number; delayMs?: number; errorMessage: string };\n\ntype ToolExecutionStartEvent = Extract<SessionEvent, { type: \"tool_execution_start\" }>;\ntype ToolExecutionUpdateEvent = Extract<SessionEvent, { type: \"tool_execution_update\" }>;\ntype ToolExecutionEndEvent = Extract<SessionEvent, { type: \"tool_execution_end\" }>;\ntype MessageStartEvent = Extract<SessionEvent, { type: \"message_start\" }>;\ntype MessageEndEvent = Extract<SessionEvent, { type: \"message_end\" }>;\ntype TurnEndEvent = Extract<SessionEvent, { type: \"turn_end\" }>;\ntype AutoCompactionStartEvent = Extract<SessionEvent, { type: \"auto_compaction_start\" }>;\ntype AutoCompactionEndEvent = Extract<SessionEvent, { type: \"auto_compaction_end\" }>;\ntype AutoRetryStartEvent = Extract<SessionEvent, { type: \"auto_retry_start\" }>;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction isMessageWithRole(value: unknown): value is { role: string } {\n\treturn isRecord(value) && typeof value.role === \"string\";\n}\n\nfunction isAssistantEventMessage(value: unknown): value is AssistantEventMessage {\n\treturn (\n\t\tisMessageWithRole(value) && value.role === \"assistant\" && Array.isArray((value as { content?: unknown }).content)\n\t);\n}\n\nfunction isThinkingPart(part: AssistantContentPart): part is Extract<AssistantContentPart, { type: \"thinking\" }> {\n\treturn part.type === \"thinking\" && typeof (part as { thinking?: unknown }).thinking === \"string\";\n}\n\nfunction isTextPart(part: AssistantContentPart): part is Extract<AssistantContentPart, { type: \"text\" }> {\n\treturn part.type === \"text\" && typeof (part as { text?: unknown }).text === \"string\";\n}\n\nfunction extractLabelFromArgs(args: unknown): string | null {\n\tif (!isRecord(args)) {\n\t\treturn null;\n\t}\n\treturn typeof args.label === \"string\" && args.label.trim() ? args.label.trim() : null;\n}\n\nfunction hasEventType(\n\tvalue: unknown,\n\ttype: SessionEvent[\"type\"],\n): value is { type: SessionEvent[\"type\"] } & Record<string, unknown> {\n\treturn isRecord(value) && value.type === type;\n}\n\nfunction isToolExecutionStartEvent(value: unknown): value is ToolExecutionStartEvent {\n\treturn (\n\t\thasEventType(value, \"tool_execution_start\") &&\n\t\ttypeof value.toolCallId === \"string\" &&\n\t\ttypeof value.toolName === \"string\"\n\t);\n}\n\nfunction isToolExecutionUpdateEvent(value: unknown): value is ToolExecutionUpdateEvent {\n\treturn (\n\t\thasEventType(value, \"tool_execution_update\") &&\n\t\ttypeof value.toolCallId === \"string\" &&\n\t\ttypeof value.toolName === \"string\"\n\t);\n}\n\nfunction isToolExecutionEndEvent(value: unknown): value is ToolExecutionEndEvent {\n\treturn (\n\t\thasEventType(value, \"tool_execution_end\") &&\n\t\ttypeof value.toolCallId === \"string\" &&\n\t\ttypeof value.toolName === \"string\" &&\n\t\ttypeof value.isError === \"boolean\"\n\t);\n}\n\nfunction isMessageStartEvent(value: unknown): value is MessageStartEvent {\n\treturn hasEventType(value, \"message_start\") && \"message\" in value;\n}\n\nfunction isMessageEndEvent(value: unknown): value is MessageEndEvent {\n\treturn hasEventType(value, \"message_end\") && \"message\" in value;\n}\n\nfunction isTurnEndEvent(value: unknown): value is TurnEndEvent {\n\treturn hasEventType(value, \"turn_end\") && \"message\" in value && Array.isArray(value.toolResults);\n}\n\nfunction isAutoCompactionStartEvent(value: unknown): value is AutoCompactionStartEvent {\n\treturn hasEventType(value, \"auto_compaction_start\") && (value.reason === \"threshold\" || value.reason === \"overflow\");\n}\n\nfunction isAutoCompactionEndEvent(value: unknown): value is AutoCompactionEndEvent {\n\treturn hasEventType(value, \"auto_compaction_end\");\n}\n\nfunction isAutoRetryStartEvent(value: unknown): value is AutoRetryStartEvent {\n\treturn (\n\t\thasEventType(value, \"auto_retry_start\") &&\n\t\ttypeof value.attempt === \"number\" &&\n\t\ttypeof value.maxAttempts === \"number\" &&\n\t\ttypeof value.errorMessage === \"string\"\n\t);\n}\n\n// ============================================================================\n// ChannelRunner\n// ============================================================================\n\nclass ChannelRunner implements AgentRunner {\n\t// --- Constructed once ---\n\tprivate readonly sandboxConfig: SandboxConfig;\n\tprivate readonly channelId: string;\n\tprivate readonly channelDir: string;\n\tprivate readonly workspacePath: string;\n\tprivate readonly workspaceDir: string;\n\tprivate readonly session: AgentSession;\n\tprivate readonly agent: Agent;\n\tprivate readonly sessionManager: SessionManager;\n\tprivate readonly settingsManager: PipiclawSettingsManager;\n\tprivate readonly modelRegistry: ModelRegistry;\n\tprivate readonly memoryLifecycle: MemoryLifecycle;\n\tprivate readonly sessionReady: Promise<void>;\n\tprivate subAgentDiscovery: SubAgentDiscoveryResult;\n\n\t// --- Mutable across runs ---\n\tprivate activeModel: Model<Api>;\n\tprivate currentSkills: Skill[];\n\n\t// --- Per run ---\n\tprivate runState: RunState = createEmptyRunState();\n\n\tconstructor(sandboxConfig: SandboxConfig, channelId: string, channelDir: string) {\n\t\tthis.sandboxConfig = sandboxConfig;\n\t\tthis.channelId = channelId;\n\t\tthis.channelDir = channelDir;\n\n\t\tconst executor = createExecutor(sandboxConfig);\n\t\tthis.workspaceDir = resolve(dirname(channelDir));\n\t\tthis.workspacePath = executor.getWorkspacePath(this.workspaceDir);\n\n\t\t// Initial skill summaries\n\t\tconst initialSkills = loadPipiclawSkills(channelDir, this.workspacePath);\n\t\tthis.currentSkills = initialSkills;\n\n\t\t// Create session manager\n\t\tconst contextFile = join(channelDir, \"context.jsonl\");\n\t\tthis.sessionManager = SessionManager.open(contextFile, channelDir);\n\t\tthis.settingsManager = new PipiclawSettingsManager(APP_HOME_DIR);\n\n\t\t// Create AuthStorage and ModelRegistry\n\t\tconst authStorage = AuthStorage.create(AUTH_CONFIG_PATH);\n\t\tthis.modelRegistry = createModelRegistry(authStorage, MODELS_CONFIG_PATH);\n\n\t\t// Resolve model: prefer saved global default, fall back to first available model\n\t\tthis.activeModel = resolveInitialModel(this.modelRegistry, this.settingsManager);\n\t\tlog.logInfo(`Using model: ${this.activeModel.provider}/${this.activeModel.id} (${this.activeModel.name})`);\n\t\tthis.subAgentDiscovery = this.refreshSubAgentDiscovery();\n\n\t\t// Create tools\n\t\tconst tools = createPipiclawTools({\n\t\t\texecutor,\n\t\t\tgetCurrentModel: () => this.activeModel,\n\t\t\tgetAvailableModels: () => this.modelRegistry.getAvailable(),\n\t\t\tresolveApiKey: async (model) => getApiKeyForModel(this.modelRegistry, model),\n\t\t\tworkspaceDir: this.workspaceDir,\n\t\t\tchannelDir: this.channelDir,\n\t\t\tworkspacePath: this.workspacePath,\n\t\t\tchannelId: this.channelId,\n\t\t\tsandboxConfig: this.sandboxConfig,\n\t\t\tgetSubAgentDiscovery: () => this.subAgentDiscovery,\n\t\t\tgetMemoryRecallSettings: () => this.settingsManager.getMemoryRecallSettings(),\n\t\t});\n\n\t\t// Create agent\n\t\tthis.agent = new Agent({\n\t\t\tinitialState: {\n\t\t\t\tsystemPrompt: \"\",\n\t\t\t\tmodel: this.activeModel,\n\t\t\t\tthinkingLevel: \"off\",\n\t\t\t\ttools,\n\t\t\t},\n\t\t\tconvertToLlm,\n\t\t\tgetApiKey: async () => getApiKeyForModel(this.modelRegistry, this.activeModel),\n\t\t});\n\n\t\tthis.memoryLifecycle = new MemoryLifecycle({\n\t\t\tchannelId: this.channelId,\n\t\t\tchannelDir: this.channelDir,\n\t\t\tgetMessages: () => this.session.messages,\n\t\t\tgetSessionEntries: () => this.sessionManager.getBranch(),\n\t\t\tgetModel: () => this.session.model ?? this.activeModel,\n\t\t\tresolveApiKey: async (model) => getApiKeyForModel(this.modelRegistry, model),\n\t\t\tgetSessionMemorySettings: () => this.settingsManager.getSessionMemorySettings(),\n\t\t});\n\n\t\tconst resourceLoader = new DefaultResourceLoader({\n\t\t\tcwd: process.cwd(),\n\t\t\tagentDir: APP_HOME_DIR,\n\t\t\tsettingsManager: this.settingsManager as any,\n\t\t\textensionFactories: [\n\t\t\t\tthis.memoryLifecycle.createExtensionFactory(),\n\t\t\t\tcreateCommandExtension({\n\t\t\t\t\tgetCurrentModel: () => this.session.model ?? this.activeModel,\n\t\t\t\t\tgetAvailableModels: async () => {\n\t\t\t\t\t\tthis.modelRegistry.refresh();\n\t\t\t\t\t\treturn await this.modelRegistry.getAvailable();\n\t\t\t\t\t},\n\t\t\t\t\tgetSessionStats: () => this.session.getSessionStats(),\n\t\t\t\t\tgetThinkingLevel: () => this.session.thinkingLevel,\n\t\t\t\t\tswitchModel: async (model) => {\n\t\t\t\t\t\tawait this.session.setModel(model);\n\t\t\t\t\t\tthis.activeModel = model;\n\t\t\t\t\t},\n\t\t\t\t\trefreshSessionResources: async () => {\n\t\t\t\t\t\tawait this.refreshSessionResources();\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t\tappendSystemPromptOverride: (base) => {\n\t\t\t\tconst soul = getSoul(this.workspaceDir);\n\t\t\t\tconst sections = [...base];\n\t\t\t\tif (soul) {\n\t\t\t\t\tsections.unshift(soul);\n\t\t\t\t}\n\t\t\t\tsections.push(\n\t\t\t\t\tbuildAppendSystemPrompt(this.workspacePath, this.channelId, this.sandboxConfig, {\n\t\t\t\t\t\tsubAgentList: formatSubAgentList(this.subAgentDiscovery.agents),\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\treturn sections;\n\t\t\t},\n\t\t\tagentsFilesOverride: () => {\n\t\t\t\tconst agentConfig = getAgentConfig(this.channelDir);\n\t\t\t\treturn {\n\t\t\t\t\tagentsFiles: agentConfig ? [{ path: `${this.workspacePath}/AGENTS.md`, content: agentConfig }] : [],\n\t\t\t\t};\n\t\t\t},\n\t\t\tskillsOverride: (base) => ({\n\t\t\t\tskills: [...base.skills, ...this.currentSkills],\n\t\t\t\tdiagnostics: base.diagnostics,\n\t\t\t}),\n\t\t});\n\n\t\tconst baseToolsOverride = Object.fromEntries(tools.map((tool) => [tool.name, tool]));\n\n\t\t// Create AgentSession\n\t\tthis.session = new AgentSession({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tsettingsManager: this.settingsManager as any,\n\t\t\tcwd: process.cwd(),\n\t\t\tmodelRegistry: this.modelRegistry,\n\t\t\tresourceLoader,\n\t\t\tbaseToolsOverride,\n\t\t});\n\n\t\t// Subscribe to session events\n\t\tthis.subscribeToSessionEvents();\n\t\tthis.sessionReady = this.initializeSession();\n\t}\n\n\t// === Public API ===\n\n\tasync run(ctx: DingTalkContext, store: ChannelStore): Promise<{ stopReason: string; errorMessage?: string }> {\n\t\tthis.resetRunState(ctx, store);\n\n\t\t// Create queue for this run\n\t\tlet queueChain = Promise.resolve();\n\t\tthis.runState.queue = {\n\t\t\tenqueue: (fn: () => Promise<void>, errorContext: string): void => {\n\t\t\t\tqueueChain = queueChain.then(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait fn();\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconst errMsg = err instanceof Error ? err.message : String(err);\n\t\t\t\t\t\tlog.logWarning(`DingTalk API error (${errorContext})`, errMsg);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tenqueueMessage: function (text: string, target: \"main\" | \"thread\", errorContext: string, doLog = true): void {\n\t\t\t\tthis.enqueue(\n\t\t\t\t\t() => (target === \"main\" ? ctx.respond(text, doLog) : ctx.respondInThread(text)),\n\t\t\t\t\terrorContext,\n\t\t\t\t);\n\t\t\t},\n\t\t};\n\n\t\ttry {\n\t\t\tawait this.ensureSessionReady();\n\n\t\t\t// Ensure channel directory exists\n\t\t\tawait mkdir(this.channelDir, { recursive: true });\n\n\t\t\tconst candidateCache = createMemoryCandidateCache();\n\t\t\tconst clippedInput = clipUserInput(ctx.message.text, MAX_USER_MESSAGE_CHARS);\n\t\t\tconst userMessage = this.formatUserMessage(clippedInput, ctx.message.userName);\n\t\t\tlet promptText = this.shouldPreserveRawInput(ctx.message.text) ? clippedInput : userMessage;\n\t\t\tlet recalledContextText = \"\";\n\n\t\t\tif (!this.shouldPreserveRawInput(ctx.message.text)) {\n\t\t\t\tconst recallSettings = this.settingsManager.getMemoryRecallSettings();\n\t\t\t\tif (recallSettings.enabled) {\n\t\t\t\t\tconst recall = await recallRelevantMemory({\n\t\t\t\t\t\tquery: clippedInput,\n\t\t\t\t\t\tworkspaceDir: this.workspaceDir,\n\t\t\t\t\t\tchannelDir: this.channelDir,\n\t\t\t\t\t\tmaxCandidates: recallSettings.maxCandidates,\n\t\t\t\t\t\tmaxInjected: recallSettings.maxInjected,\n\t\t\t\t\t\tmaxChars: recallSettings.maxChars,\n\t\t\t\t\t\trerankWithModel: recallSettings.rerankWithModel,\n\t\t\t\t\t\tautoRerank: HAN_REGEX.test(clippedInput),\n\t\t\t\t\t\tmodel: this.session.model ?? this.activeModel,\n\t\t\t\t\t\tresolveApiKey: async (model) => getApiKeyForModel(this.modelRegistry, model),\n\t\t\t\t\t\tcandidateCache,\n\t\t\t\t\t});\n\n\t\t\t\t\tif (recall.renderedText) {\n\t\t\t\t\t\trecalledContextText = recall.renderedText;\n\t\t\t\t\t\tpromptText = `${recall.renderedText}\\n\\n<user_message>\\n${promptText}\\n</user_message>`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Debug: write context to last_prompt.json (only with PIPICLAW_DEBUG=1)\n\t\t\tif (process.env.PIPICLAW_DEBUG) {\n\t\t\t\tconst debugContext = {\n\t\t\t\t\tsystemPrompt: this.agent.state.systemPrompt,\n\t\t\t\t\tmessages: this.session.messages,\n\t\t\t\t\trecalledContext: recalledContextText || undefined,\n\t\t\t\t\tnewUserMessage: promptText,\n\t\t\t\t};\n\t\t\t\tawait writeFile(join(this.channelDir, \"last_prompt.json\"), JSON.stringify(debugContext, null, 2));\n\t\t\t}\n\n\t\t\tawait this.session.prompt(promptText);\n\t\t} catch (err) {\n\t\t\tthis.runState.stopReason = \"error\";\n\t\t\tthis.runState.errorMessage = err instanceof Error ? err.message : String(err);\n\t\t\tlog.logWarning(`[${this.channelId}] Runner failed`, this.runState.errorMessage);\n\t\t} finally {\n\t\t\tawait queueChain;\n\t\t\tconst finalOutcome = this.runState.finalOutcome;\n\t\t\tconst finalOutcomeText = getFinalOutcomeText(finalOutcome);\n\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tthis.runState.stopReason === \"error\" &&\n\t\t\t\t\tthis.runState.errorMessage &&\n\t\t\t\t\t!this.runState.finalResponseDelivered\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait ctx.replaceMessage(\"_Sorry, something went wrong_\");\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconst errMsg = err instanceof Error ? err.message : String(err);\n\t\t\t\t\t\tlog.logWarning(\"Failed to post error message\", errMsg);\n\t\t\t\t\t}\n\t\t\t\t} else if (isSilentOutcome(finalOutcome)) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait ctx.deleteMessage();\n\t\t\t\t\t\tlog.logInfo(\"Silent response - deleted message\");\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconst errMsg = err instanceof Error ? err.message : String(err);\n\t\t\t\t\t\tlog.logWarning(\"Failed to delete message for silent response\", errMsg);\n\t\t\t\t\t}\n\t\t\t\t} else if (finalOutcomeText && !this.runState.finalResponseDelivered) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait ctx.replaceMessage(finalOutcomeText);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconst errMsg = err instanceof Error ? err.message : String(err);\n\t\t\t\t\t\tlog.logWarning(\"Failed to replace message with final text\", errMsg);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tawait ctx.flush();\n\t\t\t} finally {\n\t\t\t\tawait ctx.close();\n\t\t\t}\n\n\t\t\t// Log usage summary\n\t\t\tif (this.runState.totalUsage.cost.total > 0) {\n\t\t\t\tconst messages = this.session.messages;\n\t\t\t\tconst lastAssistantMessage = messages\n\t\t\t\t\t.slice()\n\t\t\t\t\t.reverse()\n\t\t\t\t\t.find((m: any) => m.role === \"assistant\" && m.stopReason !== \"aborted\") as any;\n\n\t\t\t\tconst contextTokens = lastAssistantMessage\n\t\t\t\t\t? lastAssistantMessage.usage.input +\n\t\t\t\t\t\tlastAssistantMessage.usage.output +\n\t\t\t\t\t\tlastAssistantMessage.usage.cacheRead +\n\t\t\t\t\t\tlastAssistantMessage.usage.cacheWrite\n\t\t\t\t\t: 0;\n\t\t\t\tconst currentRunModel = this.session.model ?? this.activeModel;\n\t\t\t\tconst contextWindow = currentRunModel.contextWindow || 200000;\n\n\t\t\t\tlog.logUsageSummary(this.runState.logCtx!, this.runState.totalUsage, contextTokens, contextWindow);\n\t\t\t}\n\n\t\t\t// Clear run state\n\t\t\tthis.runState.ctx = null;\n\t\t\tthis.runState.logCtx = null;\n\t\t\tthis.runState.queue = null;\n\t\t}\n\n\t\treturn { stopReason: this.runState.stopReason, errorMessage: this.runState.errorMessage };\n\t}\n\n\tasync handleBuiltinCommand(ctx: DingTalkContext, command: BuiltInCommand): Promise<void> {\n\t\ttry {\n\t\t\tswitch (command.name) {\n\t\t\t\tcase \"help\":\n\t\t\t\t\tawait this.sendCommandReply(ctx, renderBuiltInHelp());\n\t\t\t\t\treturn;\n\t\t\t\tcase \"stop\":\n\t\t\t\t\tawait this.sendCommandReply(ctx, \"No task is running. Use `/stop` only while a task is running.\");\n\t\t\t\t\treturn;\n\t\t\t\tcase \"steer\":\n\t\t\t\t\tthis.requireQueuedMessage(command.args, \"steer\");\n\t\t\t\t\tawait this.sendCommandReply(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\"No task is running. Send the message directly instead of using `/steer`.\",\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\tcase \"followup\":\n\t\t\t\t\tthis.requireQueuedMessage(command.args, \"followup\");\n\t\t\t\t\tawait this.sendCommandReply(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\"No task is running. Send the message directly now, or use `/followup` while a task is running.\",\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconst errMsg = err instanceof Error ? err.message : String(err);\n\t\t\tlog.logWarning(`[${this.channelId}] Built-in command failed`, errMsg);\n\t\t\tawait this.sendCommandReply(ctx, `命令执行失败:${errMsg}`);\n\t\t}\n\t}\n\n\tasync queueSteer(text: string, userName?: string): Promise<void> {\n\t\tawait this.queueBusyMessage(\"steer\", this.requireQueuedMessage(text, \"steer\"), userName);\n\t}\n\n\tasync queueFollowUp(text: string, userName?: string): Promise<void> {\n\t\tawait this.queueBusyMessage(\"followUp\", this.requireQueuedMessage(text, \"followup\"), userName);\n\t}\n\n\tasync abort(): Promise<void> {\n\t\tawait this.session.abort();\n\t}\n\n\t// === Private helpers ===\n\n\tprivate async sendCommandReply(ctx: DingTalkContext, text: string): Promise<void> {\n\t\tconst delivered = await ctx.respondPlain(text);\n\t\tif (!delivered) {\n\t\t\tawait ctx.replaceMessage(text);\n\t\t\tawait ctx.flush();\n\t\t}\n\t}\n\n\tprivate requireQueuedMessage(text: string, commandName: \"steer\" | \"followup\"): string {\n\t\tconst trimmedText = text.trim();\n\t\tif (!trimmedText) {\n\t\t\tthrow new Error(`/${commandName} requires a message.`);\n\t\t}\n\t\treturn trimmedText;\n\t}\n\n\tprivate shouldPreserveRawInput(text: string): boolean {\n\t\treturn text.trim().startsWith(\"/\");\n\t}\n\n\tprivate formatUserMessage(text: string, userName?: string, now: Date = new Date()): string {\n\t\tconst pad = (n: number) => n.toString().padStart(2, \"0\");\n\t\tconst offset = -now.getTimezoneOffset();\n\t\tconst offsetSign = offset >= 0 ? \"+\" : \"-\";\n\t\tconst offsetHours = pad(Math.floor(Math.abs(offset) / 60));\n\t\tconst offsetMins = pad(Math.abs(offset) % 60);\n\t\tconst timestamp = `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}${offsetSign}${offsetHours}:${offsetMins}`;\n\t\treturn `[${timestamp}] [${userName || \"unknown\"}]: ${text}`;\n\t}\n\n\tprivate async queueBusyMessage(delivery: \"steer\" | \"followUp\", text: string, userName?: string): Promise<void> {\n\t\tif (!this.session.isStreaming) {\n\t\t\tthrow new Error(\"No task is currently running.\");\n\t\t}\n\n\t\tconst clippedText = clipUserInput(text, MAX_USER_MESSAGE_CHARS);\n\t\tif (clippedText !== text.trim()) {\n\t\t\tlog.logWarning(`[${this.channelId}] Queued message exceeded ${MAX_USER_MESSAGE_CHARS} chars and was clipped`);\n\t\t}\n\n\t\tawait this.session.prompt(this.formatUserMessage(clippedText, userName), {\n\t\t\tstreamingBehavior: delivery,\n\t\t});\n\t}\n\n\tprivate resetRunState(ctx: DingTalkContext, store: ChannelStore): void {\n\t\tthis.runState = createEmptyRunState();\n\t\tthis.runState.ctx = ctx;\n\t\tthis.runState.logCtx = {\n\t\t\tchannelId: ctx.message.channel,\n\t\t\tuserName: ctx.message.userName,\n\t\t\tchannelName: ctx.channelName,\n\t\t};\n\t\tthis.runState.store = store;\n\t}\n\n\tprivate async refreshSessionResources(): Promise<void> {\n\t\tawait this.ensureSessionReady();\n\t\tconst skills = loadPipiclawSkills(this.channelDir, this.workspacePath);\n\t\tthis.currentSkills = skills;\n\t\tthis.subAgentDiscovery = this.refreshSubAgentDiscovery();\n\t\tawait this.session.reload();\n\t}\n\n\tprivate async initializeSession(): Promise<void> {\n\t\tconst skills = loadPipiclawSkills(this.channelDir, this.workspacePath);\n\t\tthis.currentSkills = skills;\n\t\tthis.subAgentDiscovery = this.refreshSubAgentDiscovery();\n\t\tawait this.session.reload();\n\t}\n\n\tprivate async ensureSessionReady(): Promise<void> {\n\t\tawait this.sessionReady;\n\t}\n\n\tprivate refreshSubAgentDiscovery(): SubAgentDiscoveryResult {\n\t\tthis.modelRegistry.refresh();\n\t\tconst discovery = discoverSubAgents(this.workspaceDir, this.modelRegistry.getAvailable());\n\t\tfor (const warning of discovery.warnings) {\n\t\t\tlog.logWarning(`Sub-agent config warning (${this.channelId})`, warning);\n\t\t}\n\t\treturn discovery;\n\t}\n\n\t// === Session event subscription ===\n\n\tprivate subscribeToSessionEvents(): void {\n\t\tthis.session.subscribe(async (event: unknown) => {\n\t\t\tif (!this.runState.ctx || !this.runState.logCtx || !this.runState.queue) return;\n\n\t\t\tconst { ctx, logCtx, queue, pendingTools, store } = this.runState;\n\n\t\t\tif (isToolExecutionStartEvent(event)) {\n\t\t\t\tconst label = extractLabelFromArgs(event.args) || event.toolName;\n\n\t\t\t\tpendingTools.set(event.toolCallId, {\n\t\t\t\t\ttoolName: event.toolName,\n\t\t\t\t\targs: event.args,\n\t\t\t\t\tstartTime: Date.now(),\n\t\t\t\t});\n\t\t\t\tthis.memoryLifecycle.noteToolCall();\n\n\t\t\t\tlog.logToolStart(logCtx, event.toolName, label, isRecord(event.args) ? event.args : {});\n\t\t\t\tqueue.enqueue(() => ctx.respond(formatProgressEntry(\"tool\", label), false), \"tool label\");\n\t\t\t} else if (isToolExecutionUpdateEvent(event)) {\n\t\t\t\tif (event.toolName !== \"subagent\") {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst partialText = truncate(extractToolResultText(event.partialResult), 200);\n\t\t\t\tif (!partialText.trim()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tqueue.enqueue(() => ctx.respond(formatProgressEntry(\"tool\", partialText), false), \"tool update\");\n\t\t\t} else if (isToolExecutionEndEvent(event)) {\n\t\t\t\tconst resultStr = extractToolResultText(event.result);\n\t\t\t\tconst pending = pendingTools.get(event.toolCallId);\n\t\t\t\tpendingTools.delete(event.toolCallId);\n\n\t\t\t\tconst durationMs = pending ? Date.now() - pending.startTime : 0;\n\t\t\t\tconst subAgentDetails =\n\t\t\t\t\tevent.toolName === \"subagent\" &&\n\t\t\t\t\tisRecord(event.result) &&\n\t\t\t\t\t\"details\" in event.result &&\n\t\t\t\t\tisSubAgentToolDetails((event.result as { details?: unknown }).details)\n\t\t\t\t\t\t? (event.result as { details: SubAgentToolDetails }).details\n\t\t\t\t\t\t: null;\n\n\t\t\t\tif (subAgentDetails) {\n\t\t\t\t\tmergeSubAgentUsage(this.runState.totalUsage, subAgentDetails);\n\t\t\t\t\tconst label =\n\t\t\t\t\t\tpending?.args &&\n\t\t\t\t\t\ttypeof pending.args === \"object\" &&\n\t\t\t\t\t\t\"label\" in pending.args &&\n\t\t\t\t\t\ttypeof (pending.args as { label?: unknown }).label === \"string\"\n\t\t\t\t\t\t\t? ((pending.args as { label: string }).label ?? \"subagent\").trim()\n\t\t\t\t\t\t\t: \"subagent\";\n\t\t\t\t\tqueue.enqueue(\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\tstore?.logSubAgentRun(logCtx.channelId, {\n\t\t\t\t\t\t\t\tdate: new Date().toISOString(),\n\t\t\t\t\t\t\t\ttoolCallId: event.toolCallId,\n\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t\tagent: subAgentDetails.agent,\n\t\t\t\t\t\t\t\tsource: subAgentDetails.source,\n\t\t\t\t\t\t\t\tmodel: subAgentDetails.model,\n\t\t\t\t\t\t\t\ttools: [...subAgentDetails.tools],\n\t\t\t\t\t\t\t\tturns: subAgentDetails.turns,\n\t\t\t\t\t\t\t\ttoolCalls: subAgentDetails.toolCalls,\n\t\t\t\t\t\t\t\tdurationMs: subAgentDetails.durationMs,\n\t\t\t\t\t\t\t\tfailed: subAgentDetails.failed,\n\t\t\t\t\t\t\t\tfailureReason: subAgentDetails.failureReason,\n\t\t\t\t\t\t\t\toutput: resultStr.length > 16000 ? resultStr.slice(0, 16000) : resultStr,\n\t\t\t\t\t\t\t\toutputTruncated: resultStr.length > 16000,\n\t\t\t\t\t\t\t\tusage: {\n\t\t\t\t\t\t\t\t\t...subAgentDetails.usage,\n\t\t\t\t\t\t\t\t\tcost: { ...subAgentDetails.usage.cost },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}) ?? Promise.resolve(),\n\t\t\t\t\t\t\"sub-agent run log\",\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst treatAsError = event.isError || Boolean(subAgentDetails?.failed);\n\t\t\t\tif (treatAsError) {\n\t\t\t\t\tlog.logToolError(logCtx, event.toolName, durationMs, resultStr);\n\t\t\t\t} else {\n\t\t\t\t\tlog.logToolSuccess(logCtx, event.toolName, durationMs, resultStr);\n\t\t\t\t}\n\n\t\t\t\tif (treatAsError) {\n\t\t\t\t\tqueue.enqueue(\n\t\t\t\t\t\t() => ctx.respond(formatProgressEntry(\"error\", truncate(resultStr, 200)), false),\n\t\t\t\t\t\t\"tool error\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if (isMessageStartEvent(event)) {\n\t\t\t\tif (isAssistantEventMessage(event.message)) {\n\t\t\t\t\tlog.logResponseStart(logCtx);\n\t\t\t\t}\n\t\t\t} else if (isMessageEndEvent(event)) {\n\t\t\t\tconst commandResultText = extractCustomCommandResultText(event.message);\n\t\t\t\tif (commandResultText) {\n\t\t\t\t\tthis.runState.finalOutcome = { kind: \"final\", text: commandResultText };\n\t\t\t\t\tlog.logResponse(logCtx, commandResultText);\n\t\t\t\t\tqueue.enqueue(async () => {\n\t\t\t\t\t\tconst delivered = await ctx.respondPlain(commandResultText);\n\t\t\t\t\t\tif (!delivered) {\n\t\t\t\t\t\t\tawait ctx.replaceMessage(commandResultText);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.runState.finalResponseDelivered = true;\n\t\t\t\t\t}, \"command result\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isAssistantEventMessage(event.message)) {\n\t\t\t\t\tconst assistantMsg = event.message;\n\n\t\t\t\t\tif (assistantMsg.stopReason) {\n\t\t\t\t\t\tthis.runState.stopReason = assistantMsg.stopReason;\n\t\t\t\t\t}\n\t\t\t\t\tif (assistantMsg.errorMessage) {\n\t\t\t\t\t\tthis.runState.errorMessage = assistantMsg.errorMessage;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (assistantMsg.usage) {\n\t\t\t\t\t\tthis.runState.totalUsage.input += assistantMsg.usage.input;\n\t\t\t\t\t\tthis.runState.totalUsage.output += assistantMsg.usage.output;\n\t\t\t\t\t\tthis.runState.totalUsage.cacheRead += assistantMsg.usage.cacheRead;\n\t\t\t\t\t\tthis.runState.totalUsage.cacheWrite += assistantMsg.usage.cacheWrite;\n\t\t\t\t\t\tthis.runState.totalUsage.cost.input += assistantMsg.usage.cost.input;\n\t\t\t\t\t\tthis.runState.totalUsage.cost.output += assistantMsg.usage.cost.output;\n\t\t\t\t\t\tthis.runState.totalUsage.cost.cacheRead += assistantMsg.usage.cost.cacheRead;\n\t\t\t\t\t\tthis.runState.totalUsage.cost.cacheWrite += assistantMsg.usage.cost.cacheWrite;\n\t\t\t\t\t\tthis.runState.totalUsage.cost.total += assistantMsg.usage.cost.total;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst content = assistantMsg.content;\n\t\t\t\t\tconst thinkingParts: string[] = [];\n\t\t\t\t\tconst textParts: string[] = [];\n\t\t\t\t\tlet hasToolCalls = false;\n\t\t\t\t\tfor (const part of content) {\n\t\t\t\t\t\tif (isThinkingPart(part)) {\n\t\t\t\t\t\t\tthinkingParts.push(part.thinking);\n\t\t\t\t\t\t} else if (isTextPart(part)) {\n\t\t\t\t\t\t\ttextParts.push(part.text);\n\t\t\t\t\t\t} else if (part.type === \"toolCall\") {\n\t\t\t\t\t\t\thasToolCalls = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst text = textParts.join(\"\\n\");\n\n\t\t\t\t\tfor (const thinking of thinkingParts) {\n\t\t\t\t\t\tlog.logThinking(logCtx, thinking);\n\t\t\t\t\t\tqueue.enqueue(() => ctx.respond(formatProgressEntry(\"thinking\", thinking), false), \"thinking\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hasToolCalls && text.trim()) {\n\t\t\t\t\t\tqueue.enqueue(() => ctx.respond(formatProgressEntry(\"assistant\", text), false), \"assistant progress\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (isTurnEndEvent(event)) {\n\t\t\t\tif (isAssistantEventMessage(event.message) && event.toolResults.length === 0) {\n\t\t\t\t\tif (event.message.stopReason === \"error\" || event.message.stopReason === \"aborted\") {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst finalText = event.message.content\n\t\t\t\t\t\t.filter((part): part is { type: \"text\"; text: string } => part.type === \"text\" && !!part.text)\n\t\t\t\t\t\t.map((part) => part.text)\n\t\t\t\t\t\t.join(\"\\n\");\n\n\t\t\t\t\tconst trimmedFinalText = finalText.trim();\n\t\t\t\t\tif (!trimmedFinalText) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (trimmedFinalText === \"[SILENT]\" || trimmedFinalText.startsWith(\"[SILENT]\")) {\n\t\t\t\t\t\tthis.runState.finalOutcome = { kind: \"silent\" };\n\t\t\t\t\t\tthis.memoryLifecycle.noteCompletedAssistantTurn();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.runState.finalOutcome.kind === \"final\" &&\n\t\t\t\t\t\tthis.runState.finalOutcome.text.trim() === trimmedFinalText\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.runState.finalOutcome = { kind: \"final\", text: finalText };\n\t\t\t\t\tthis.memoryLifecycle.noteCompletedAssistantTurn();\n\t\t\t\t\tlog.logResponse(logCtx, finalText);\n\t\t\t\t\tqueue.enqueue(async () => {\n\t\t\t\t\t\tconst delivered = await ctx.respondPlain(finalText);\n\t\t\t\t\t\tif (delivered) {\n\t\t\t\t\t\t\tthis.runState.finalResponseDelivered = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, \"final response\");\n\t\t\t\t}\n\t\t\t} else if (isAutoCompactionStartEvent(event)) {\n\t\t\t\tlog.logInfo(`Auto-compaction started (reason: ${event.reason})`);\n\t\t\t\tqueue.enqueue(\n\t\t\t\t\t() => ctx.respond(formatProgressEntry(\"assistant\", \"Compacting context...\"), false),\n\t\t\t\t\t\"compaction start\",\n\t\t\t\t);\n\t\t\t} else if (isAutoCompactionEndEvent(event)) {\n\t\t\t\tif (event.result) {\n\t\t\t\t\tlog.logInfo(`Auto-compaction complete: ${event.result.tokensBefore} tokens compacted`);\n\t\t\t\t} else if (event.aborted) {\n\t\t\t\t\tlog.logInfo(\"Auto-compaction aborted\");\n\t\t\t\t}\n\t\t\t} else if (isAutoRetryStartEvent(event)) {\n\t\t\t\tlog.logWarning(`Retrying (${event.attempt}/${event.maxAttempts})`, event.errorMessage);\n\t\t\t\tqueue.enqueue(\n\t\t\t\t\t() =>\n\t\t\t\t\t\tctx.respond(\n\t\t\t\t\t\t\tformatProgressEntry(\"assistant\", `Retrying (${event.attempt}/${event.maxAttempts})...`),\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t),\n\t\t\t\t\t\"retry\",\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n\n// ============================================================================\n// Factory\n// ============================================================================\n\nconst channelRunners = new Map<string, AgentRunner>();\n\nexport function getOrCreateRunner(sandboxConfig: SandboxConfig, channelId: string, channelDir: string): AgentRunner {\n\tconst existing = channelRunners.get(channelId);\n\tif (existing) return existing;\n\n\tconst runner = new ChannelRunner(sandboxConfig, channelId, channelDir);\n\tchannelRunners.set(channelId, runner);\n\treturn runner;\n}\n"]}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export type { AgentRunner } from \"./agent/index.js\";\nexport { ChannelRunner, getOrCreateRunner } from \"./agent/index.js\";\n"]}
package/dist/context.d.ts CHANGED
@@ -6,6 +6,41 @@
6
6
  *
7
7
  * This module currently provides only PipiclawSettingsManager.
8
8
  */
9
+ import type { Transport } from "@mariozechner/pi-ai";
10
+ type PackageSource = string | {
11
+ source: string;
12
+ extensions?: string[];
13
+ skills?: string[];
14
+ prompts?: string[];
15
+ themes?: string[];
16
+ };
17
+ type ThinkingBudgetsSettings = {
18
+ minimal?: number;
19
+ low?: number;
20
+ medium?: number;
21
+ high?: number;
22
+ };
23
+ type Settings = {
24
+ defaultProvider?: string;
25
+ defaultModel?: string;
26
+ defaultThinkingLevel?: "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
27
+ compaction?: {
28
+ enabled?: boolean;
29
+ reserveTokens?: number;
30
+ keepRecentTokens?: number;
31
+ };
32
+ retry?: {
33
+ enabled?: boolean;
34
+ maxRetries?: number;
35
+ baseDelayMs?: number;
36
+ maxDelayMs?: number;
37
+ };
38
+ };
39
+ type SettingsError = {
40
+ scope: "global" | "project";
41
+ error: Error;
42
+ };
43
+ type TransportSetting = Transport;
9
44
  export interface PipiclawCompactionSettings {
10
45
  enabled: boolean;
11
46
  reserveTokens: number;
@@ -27,13 +62,15 @@ export interface PipiclawSessionMemorySettings {
27
62
  enabled: boolean;
28
63
  minTurnsBetweenUpdate: number;
29
64
  minToolCallsBetweenUpdate: number;
65
+ timeoutMs: number;
66
+ failureBackoffTurns: number;
30
67
  forceRefreshBeforeCompact: boolean;
31
68
  forceRefreshBeforeNewSession: boolean;
32
69
  }
33
70
  export interface PipiclawSettings {
34
71
  defaultProvider?: string;
35
72
  defaultModel?: string;
36
- defaultThinkingLevel?: "off" | "minimal" | "low" | "medium" | "high";
73
+ defaultThinkingLevel?: "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
37
74
  compaction?: Partial<PipiclawCompactionSettings>;
38
75
  retry?: Partial<PipiclawRetrySettings>;
39
76
  memoryRecall?: Partial<PipiclawMemoryRecallSettings>;
@@ -61,8 +98,8 @@ export declare class PipiclawSettingsManager {
61
98
  getDefaultModel(): string | undefined;
62
99
  getDefaultProvider(): string | undefined;
63
100
  setDefaultModelAndProvider(provider: string, modelId: string): void;
64
- getDefaultThinkingLevel(): string;
65
- setDefaultThinkingLevel(level: string): void;
101
+ getDefaultThinkingLevel(): "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | undefined;
102
+ setDefaultThinkingLevel(level: "off" | "minimal" | "low" | "medium" | "high" | "xhigh"): void;
66
103
  getSteeringMode(): "all" | "one-at-a-time";
67
104
  setSteeringMode(_mode: "all" | "one-at-a-time"): void;
68
105
  getFollowUpMode(): "all" | "one-at-a-time";
@@ -80,9 +117,10 @@ export declare class PipiclawSettingsManager {
80
117
  getBranchSummarySettings(): {
81
118
  reserveTokens: number;
82
119
  };
120
+ getBranchSummarySkipPrompt(): boolean;
83
121
  getHideThinkingBlock(): boolean;
84
122
  setHideThinkingBlock(_hide: boolean): void;
85
- getThinkingBudgets(): undefined;
123
+ getThinkingBudgets(): ThinkingBudgetsSettings | undefined;
86
124
  getShellPath(): string | undefined;
87
125
  setShellPath(_path: string | undefined): void;
88
126
  getShellCommandPrefix(): string | undefined;
@@ -91,13 +129,13 @@ export declare class PipiclawSettingsManager {
91
129
  setQuietStartup(_quiet: boolean): void;
92
130
  getCollapseChangelog(): boolean;
93
131
  setCollapseChangelog(_collapse: boolean): void;
94
- getTransport(): string;
95
- setTransport(_transport: string): void;
132
+ getTransport(): TransportSetting;
133
+ setTransport(_transport: TransportSetting): void;
96
134
  getTheme(): string | undefined;
97
135
  setTheme(_theme: string): void;
98
- getPackages(): unknown[];
99
- setPackages(_packages: unknown[]): void;
100
- setProjectPackages(_packages: unknown[]): void;
136
+ getPackages(): PackageSource[];
137
+ setPackages(_packages: PackageSource[]): void;
138
+ setProjectPackages(_packages: PackageSource[]): void;
101
139
  getExtensionPaths(): string[];
102
140
  setExtensionPaths(_paths: string[]): void;
103
141
  setProjectExtensionPaths(_paths: string[]): void;
@@ -115,7 +153,9 @@ export declare class PipiclawSettingsManager {
115
153
  getEnabledModels(): string[] | undefined;
116
154
  setEnabledModels(_patterns: string[] | undefined): void;
117
155
  getDoubleEscapeAction(): "none";
118
- setDoubleEscapeAction(_action: string): void;
156
+ setDoubleEscapeAction(_action: "fork" | "tree" | "none"): void;
157
+ getTreeFilterMode(): "default" | "no-tools" | "user-only" | "labeled-only" | "all";
158
+ setTreeFilterMode(_mode: "default" | "no-tools" | "user-only" | "labeled-only" | "all"): void;
119
159
  getShowHardwareCursor(): boolean;
120
160
  setShowHardwareCursor(_enabled: boolean): void;
121
161
  getClearOnShrink(): boolean;
@@ -129,10 +169,14 @@ export declare class PipiclawSettingsManager {
129
169
  setLastChangelogVersion(_version: string): void;
130
170
  setDefaultProvider(_provider: string): void;
131
171
  setDefaultModel(_modelId: string): void;
132
- getGlobalSettings(): object;
133
- getProjectSettings(): object;
134
- applyOverrides(_overrides: Partial<PipiclawSettings>): void;
172
+ getSessionDir(): string | undefined;
173
+ getNpmCommand(): string[] | undefined;
174
+ setNpmCommand(_command: string[] | undefined): void;
175
+ getGlobalSettings(): Settings;
176
+ getProjectSettings(): Settings;
177
+ applyOverrides(overrides: Partial<Settings>): void;
135
178
  flush(): Promise<void>;
136
- drainErrors(): unknown[];
179
+ drainErrors(): SettingsError[];
137
180
  }
181
+ export {};
138
182
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
package/dist/context.js CHANGED
@@ -20,15 +20,17 @@ const DEFAULT_RETRY = {
20
20
  };
21
21
  const DEFAULT_MEMORY_RECALL = {
22
22
  enabled: true,
23
- maxCandidates: 8,
24
- maxInjected: 3,
25
- maxChars: 3500,
26
- rerankWithModel: false,
23
+ maxCandidates: 12,
24
+ maxInjected: 5,
25
+ maxChars: 5000,
26
+ rerankWithModel: true,
27
27
  };
28
28
  const DEFAULT_SESSION_MEMORY = {
29
29
  enabled: true,
30
30
  minTurnsBetweenUpdate: 2,
31
31
  minToolCallsBetweenUpdate: 4,
32
+ timeoutMs: 30_000,
33
+ failureBackoffTurns: 3,
32
34
  forceRefreshBeforeCompact: true,
33
35
  forceRefreshBeforeNewSession: true,
34
36
  };
@@ -172,6 +174,9 @@ export class PipiclawSettingsManager {
172
174
  getBranchSummarySettings() {
173
175
  return { reserveTokens: 16384 };
174
176
  }
177
+ getBranchSummarySkipPrompt() {
178
+ return false;
179
+ }
175
180
  // Thinking
176
181
  getHideThinkingBlock() {
177
182
  return false;
@@ -209,7 +214,7 @@ export class PipiclawSettingsManager {
209
214
  // No-op
210
215
  }
211
216
  getTransport() {
212
- return "stdio";
217
+ return "auto";
213
218
  }
214
219
  setTransport(_transport) {
215
220
  // No-op
@@ -283,6 +288,12 @@ export class PipiclawSettingsManager {
283
288
  setDoubleEscapeAction(_action) {
284
289
  // No-op
285
290
  }
291
+ getTreeFilterMode() {
292
+ return "default";
293
+ }
294
+ setTreeFilterMode(_mode) {
295
+ // No-op
296
+ }
286
297
  getShowHardwareCursor() {
287
298
  return false;
288
299
  }
@@ -322,14 +333,46 @@ export class PipiclawSettingsManager {
322
333
  setDefaultModel(_modelId) {
323
334
  // No-op
324
335
  }
336
+ getSessionDir() {
337
+ return undefined;
338
+ }
339
+ getNpmCommand() {
340
+ return undefined;
341
+ }
342
+ setNpmCommand(_command) {
343
+ // No-op
344
+ }
325
345
  getGlobalSettings() {
326
346
  return {};
327
347
  }
328
348
  getProjectSettings() {
329
349
  return {};
330
350
  }
331
- applyOverrides(_overrides) {
332
- // No-op
351
+ applyOverrides(overrides) {
352
+ if (overrides.defaultProvider !== undefined)
353
+ this.settings.defaultProvider = overrides.defaultProvider;
354
+ if (overrides.defaultModel !== undefined)
355
+ this.settings.defaultModel = overrides.defaultModel;
356
+ if (overrides.defaultThinkingLevel !== undefined) {
357
+ this.settings.defaultThinkingLevel = overrides.defaultThinkingLevel;
358
+ }
359
+ if (overrides.compaction !== undefined) {
360
+ this.settings.compaction = {
361
+ ...this.settings.compaction,
362
+ enabled: overrides.compaction.enabled ?? this.settings.compaction?.enabled,
363
+ reserveTokens: overrides.compaction.reserveTokens ?? this.settings.compaction?.reserveTokens,
364
+ keepRecentTokens: overrides.compaction.keepRecentTokens ?? this.settings.compaction?.keepRecentTokens,
365
+ };
366
+ }
367
+ if (overrides.retry !== undefined) {
368
+ this.settings.retry = {
369
+ ...this.settings.retry,
370
+ enabled: overrides.retry.enabled ?? this.settings.retry?.enabled,
371
+ maxRetries: overrides.retry.maxRetries ?? this.settings.retry?.maxRetries,
372
+ baseDelayMs: overrides.retry.baseDelayMs ?? this.settings.retry?.baseDelayMs,
373
+ };
374
+ }
375
+ this.save();
333
376
  }
334
377
  flush() {
335
378
  return Promise.resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA4CrC,MAAM,kBAAkB,GAA+B;IACtD,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,KAAK;IACpB,gBAAgB,EAAE,KAAK;CACvB,CAAC;AAEF,MAAM,aAAa,GAA0B;IAC5C,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,IAAI;CACjB,CAAC;AAEF,MAAM,qBAAqB,GAAiC;IAC3D,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,IAAI;IACd,eAAe,EAAE,KAAK;CACtB,CAAC;AAEF,MAAM,sBAAsB,GAAkC;IAC7D,OAAO,EAAE,IAAI;IACb,qBAAqB,EAAE,CAAC;IACxB,yBAAyB,EAAE,CAAC;IAC5B,yBAAyB,EAAE,IAAI;IAC/B,4BAA4B,EAAE,IAAI;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAInC,YAAY,OAAe;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEO,IAAI;QACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACX,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAEO,IAAI;QACX,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IAED,MAAM;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,qBAAqB;QACpB,OAAO;YACN,GAAG,kBAAkB;YACrB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;SAC3B,CAAC;IACH,CAAC;IAED,oBAAoB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC;IACxE,CAAC;IAED,oBAAoB,CAAC,OAAgB;QACpC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QACpE,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,gBAAgB;QACf,OAAO;YACN,GAAG,aAAa;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;SACtB,CAAC;IACH,CAAC;IAED,uBAAuB;QACtB,OAAO;YACN,GAAG,qBAAqB;YACxB,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY;SAC7B,CAAC;IACH,CAAC;IAED,wBAAwB;QACvB,OAAO;YACN,GAAG,sBAAsB;YACzB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;SAC9B,CAAC;IACH,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;IAC9D,CAAC;IAED,eAAe,CAAC,OAAgB;QAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;IACnC,CAAC;IAED,kBAAkB;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;IACtC,CAAC;IAED,0BAA0B,CAAC,QAAgB,EAAE,OAAe;QAC3D,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,uBAAuB;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI,KAAK,CAAC;IACpD,CAAC;IAED,uBAAuB,CAAC,KAAa;QACpC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,GAAG,KAAiD,CAAC;QACvF,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,yCAAyC;IACzC,eAAe;QACd,OAAO,eAAe,CAAC;IACxB,CAAC;IAED,eAAe,CAAC,KAA8B;QAC7C,QAAQ;IACT,CAAC;IAED,eAAe;QACd,OAAO,eAAe,CAAC;IACxB,CAAC;IAED,eAAe,CAAC,KAA8B;QAC7C,QAAQ;IACT,CAAC;IAED,YAAY;QACX,OAAO,EAAE,CAAC;IACX,CAAC;IAED,cAAc;QACb,OAAO,KAAK,CAAC;IACd,CAAC;IAED,iBAAiB;IACjB,kBAAkB;QACjB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,QAAiB;QACnC,QAAQ;IACT,CAAC;IAED,cAAc;QACb,OAAO,KAAK,CAAC;IACd,CAAC;IAED,cAAc,CAAC,QAAiB;QAC/B,QAAQ;IACT,CAAC;IAED,aAAa;QACZ,OAAO,KAAK,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAAc;QAC3B,QAAQ;IACT,CAAC;IAED,qBAAqB;IACrB,0BAA0B;QACzB,OAAO,kBAAkB,CAAC,aAAa,CAAC;IACzC,CAAC;IAED,6BAA6B;QAC5B,OAAO,kBAAkB,CAAC,gBAAgB,CAAC;IAC5C,CAAC;IAED,wBAAwB;QACvB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,WAAW;IACX,oBAAoB;QACnB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,oBAAoB,CAAC,KAAc;QAClC,QAAQ;IACT,CAAC;IAED,kBAAkB;QACjB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,QAAQ;IACR,YAAY;QACX,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,YAAY,CAAC,KAAyB;QACrC,QAAQ;IACT,CAAC;IAED,qBAAqB;QACpB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,qBAAqB,CAAC,OAA2B;QAChD,QAAQ;IACT,CAAC;IAED,sBAAsB;IACtB,eAAe;QACd,OAAO,IAAI,CAAC;IACb,CAAC;IAED,eAAe,CAAC,MAAe;QAC9B,QAAQ;IACT,CAAC;IAED,oBAAoB;QACnB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,oBAAoB,CAAC,SAAkB;QACtC,QAAQ;IACT,CAAC;IAED,YAAY;QACX,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,UAAkB;QAC9B,QAAQ;IACT,CAAC;IAED,QAAQ;QACP,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,MAAc;QACtB,QAAQ;IACT,CAAC;IAED,WAAW;QACV,OAAO,EAAE,CAAC;IACX,CAAC;IAED,WAAW,CAAC,SAAoB;QAC/B,QAAQ;IACT,CAAC;IAED,kBAAkB,CAAC,SAAoB;QACtC,QAAQ;IACT,CAAC;IAED,iBAAiB;QAChB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,iBAAiB,CAAC,MAAgB;QACjC,QAAQ;IACT,CAAC;IAED,wBAAwB,CAAC,MAAgB;QACxC,QAAQ;IACT,CAAC;IAED,aAAa;QACZ,OAAO,EAAE,CAAC;IACX,CAAC;IAED,aAAa,CAAC,MAAgB;QAC7B,QAAQ;IACT,CAAC;IAED,oBAAoB,CAAC,MAAgB;QACpC,QAAQ;IACT,CAAC;IAED,sBAAsB;QACrB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,sBAAsB,CAAC,MAAgB;QACtC,QAAQ;IACT,CAAC;IAED,6BAA6B,CAAC,MAAgB;QAC7C,QAAQ;IACT,CAAC;IAED,aAAa;QACZ,OAAO,EAAE,CAAC;IACX,CAAC;IAED,aAAa,CAAC,MAAgB;QAC7B,QAAQ;IACT,CAAC;IAED,oBAAoB,CAAC,MAAgB;QACpC,QAAQ;IACT,CAAC;IAED,sBAAsB;QACrB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,sBAAsB,CAAC,QAAiB;QACvC,QAAQ;IACT,CAAC;IAED,gBAAgB;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,gBAAgB,CAAC,SAA+B;QAC/C,QAAQ;IACT,CAAC;IAED,qBAAqB;QACpB,OAAO,MAAM,CAAC;IACf,CAAC;IAED,qBAAqB,CAAC,OAAe;QACpC,QAAQ;IACT,CAAC;IAED,qBAAqB;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,qBAAqB,CAAC,QAAiB;QACtC,QAAQ;IACT,CAAC;IAED,gBAAgB;QACf,OAAO,KAAK,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,QAAiB;QACjC,QAAQ;IACT,CAAC;IAED,iBAAiB;QAChB,OAAO,CAAC,CAAC;IACV,CAAC;IAED,iBAAiB,CAAC,QAAgB;QACjC,QAAQ;IACT,CAAC;IAED,yBAAyB;QACxB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,yBAAyB,CAAC,WAAmB;QAC5C,QAAQ;IACT,CAAC;IAED,kBAAkB;QACjB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,uBAAuB;QACtB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,uBAAuB,CAAC,QAAgB;QACvC,QAAQ;IACT,CAAC;IAED,kBAAkB,CAAC,SAAiB;QACnC,QAAQ;IACT,CAAC;IAED,eAAe,CAAC,QAAgB;QAC/B,QAAQ;IACT,CAAC;IAED,iBAAiB;QAChB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,kBAAkB;QACjB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,cAAc,CAAC,UAAqC;QACnD,QAAQ;IACT,CAAC;IAED,KAAK;QACJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW;QACV,OAAO,EAAE,CAAC;IACX,CAAC;CACD","sourcesContent":["/**\n * Context management for pipiclaw.\n *\n * `log.jsonl` and `context.jsonl` are treated as raw cold storage.\n * They are not proactively scanned or loaded as part of the memory model.\n *\n * This module currently provides only PipiclawSettingsManager.\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { dirname, join } from \"path\";\n\n// ============================================================================\n// PipiclawSettingsManager - Simple settings for pipiclaw\n// ============================================================================\n\nexport interface PipiclawCompactionSettings {\n\tenabled: boolean;\n\treserveTokens: number;\n\tkeepRecentTokens: number;\n}\n\nexport interface PipiclawRetrySettings {\n\tenabled: boolean;\n\tmaxRetries: number;\n\tbaseDelayMs: number;\n}\n\nexport interface PipiclawMemoryRecallSettings {\n\tenabled: boolean;\n\tmaxCandidates: number;\n\tmaxInjected: number;\n\tmaxChars: number;\n\trerankWithModel: boolean;\n}\n\nexport interface PipiclawSessionMemorySettings {\n\tenabled: boolean;\n\tminTurnsBetweenUpdate: number;\n\tminToolCallsBetweenUpdate: number;\n\tforceRefreshBeforeCompact: boolean;\n\tforceRefreshBeforeNewSession: boolean;\n}\n\nexport interface PipiclawSettings {\n\tdefaultProvider?: string;\n\tdefaultModel?: string;\n\tdefaultThinkingLevel?: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\";\n\tcompaction?: Partial<PipiclawCompactionSettings>;\n\tretry?: Partial<PipiclawRetrySettings>;\n\tmemoryRecall?: Partial<PipiclawMemoryRecallSettings>;\n\tsessionMemory?: Partial<PipiclawSessionMemorySettings>;\n}\n\nconst DEFAULT_COMPACTION: PipiclawCompactionSettings = {\n\tenabled: true,\n\treserveTokens: 16384,\n\tkeepRecentTokens: 20000,\n};\n\nconst DEFAULT_RETRY: PipiclawRetrySettings = {\n\tenabled: true,\n\tmaxRetries: 3,\n\tbaseDelayMs: 2000,\n};\n\nconst DEFAULT_MEMORY_RECALL: PipiclawMemoryRecallSettings = {\n\tenabled: true,\n\tmaxCandidates: 8,\n\tmaxInjected: 3,\n\tmaxChars: 3500,\n\trerankWithModel: false,\n};\n\nconst DEFAULT_SESSION_MEMORY: PipiclawSessionMemorySettings = {\n\tenabled: true,\n\tminTurnsBetweenUpdate: 2,\n\tminToolCallsBetweenUpdate: 4,\n\tforceRefreshBeforeCompact: true,\n\tforceRefreshBeforeNewSession: true,\n};\n\n/**\n * Settings manager for pipiclaw.\n * Stores global settings in the pipiclaw root directory.\n */\nexport class PipiclawSettingsManager {\n\tprivate settingsPath: string;\n\tprivate settings: PipiclawSettings;\n\n\tconstructor(baseDir: string) {\n\t\tthis.settingsPath = join(baseDir, \"settings.json\");\n\t\tthis.settings = this.load();\n\t}\n\n\tprivate load(): PipiclawSettings {\n\t\tif (!existsSync(this.settingsPath)) {\n\t\t\treturn {};\n\t\t}\n\n\t\ttry {\n\t\t\tconst content = readFileSync(this.settingsPath, \"utf-8\");\n\t\t\treturn JSON.parse(content);\n\t\t} catch {\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tprivate save(): void {\n\t\ttry {\n\t\t\tconst dir = dirname(this.settingsPath);\n\t\t\tif (!existsSync(dir)) {\n\t\t\t\tmkdirSync(dir, { recursive: true });\n\t\t\t}\n\t\t\twriteFileSync(this.settingsPath, JSON.stringify(this.settings, null, 2), \"utf-8\");\n\t\t} catch (error) {\n\t\t\tconsole.error(`Warning: Could not save settings file: ${error}`);\n\t\t}\n\t}\n\n\treload(): void {\n\t\tthis.settings = this.load();\n\t}\n\n\tgetCompactionSettings(): PipiclawCompactionSettings {\n\t\treturn {\n\t\t\t...DEFAULT_COMPACTION,\n\t\t\t...this.settings.compaction,\n\t\t};\n\t}\n\n\tgetCompactionEnabled(): boolean {\n\t\treturn this.settings.compaction?.enabled ?? DEFAULT_COMPACTION.enabled;\n\t}\n\n\tsetCompactionEnabled(enabled: boolean): void {\n\t\tthis.settings.compaction = { ...this.settings.compaction, enabled };\n\t\tthis.save();\n\t}\n\n\tgetRetrySettings(): PipiclawRetrySettings {\n\t\treturn {\n\t\t\t...DEFAULT_RETRY,\n\t\t\t...this.settings.retry,\n\t\t};\n\t}\n\n\tgetMemoryRecallSettings(): PipiclawMemoryRecallSettings {\n\t\treturn {\n\t\t\t...DEFAULT_MEMORY_RECALL,\n\t\t\t...this.settings.memoryRecall,\n\t\t};\n\t}\n\n\tgetSessionMemorySettings(): PipiclawSessionMemorySettings {\n\t\treturn {\n\t\t\t...DEFAULT_SESSION_MEMORY,\n\t\t\t...this.settings.sessionMemory,\n\t\t};\n\t}\n\n\tgetRetryEnabled(): boolean {\n\t\treturn this.settings.retry?.enabled ?? DEFAULT_RETRY.enabled;\n\t}\n\n\tsetRetryEnabled(enabled: boolean): void {\n\t\tthis.settings.retry = { ...this.settings.retry, enabled };\n\t\tthis.save();\n\t}\n\n\tgetDefaultModel(): string | undefined {\n\t\treturn this.settings.defaultModel;\n\t}\n\n\tgetDefaultProvider(): string | undefined {\n\t\treturn this.settings.defaultProvider;\n\t}\n\n\tsetDefaultModelAndProvider(provider: string, modelId: string): void {\n\t\tthis.settings.defaultProvider = provider;\n\t\tthis.settings.defaultModel = modelId;\n\t\tthis.save();\n\t}\n\n\tgetDefaultThinkingLevel(): string {\n\t\treturn this.settings.defaultThinkingLevel || \"off\";\n\t}\n\n\tsetDefaultThinkingLevel(level: string): void {\n\t\tthis.settings.defaultThinkingLevel = level as PipiclawSettings[\"defaultThinkingLevel\"];\n\t\tthis.save();\n\t}\n\n\t// Compatibility methods for AgentSession\n\tgetSteeringMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn \"one-at-a-time\";\n\t}\n\n\tsetSteeringMode(_mode: \"all\" | \"one-at-a-time\"): void {\n\t\t// No-op\n\t}\n\n\tgetFollowUpMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn \"one-at-a-time\";\n\t}\n\n\tsetFollowUpMode(_mode: \"all\" | \"one-at-a-time\"): void {\n\t\t// No-op\n\t}\n\n\tgetHookPaths(): string[] {\n\t\treturn [];\n\t}\n\n\tgetHookTimeout(): number {\n\t\treturn 30000;\n\t}\n\n\t// Image settings\n\tgetImageAutoResize(): boolean {\n\t\treturn false;\n\t}\n\n\tsetImageAutoResize(_enabled: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetBlockImages(): boolean {\n\t\treturn false;\n\t}\n\n\tsetBlockImages(_blocked: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetShowImages(): boolean {\n\t\treturn false;\n\t}\n\n\tsetShowImages(_show: boolean): void {\n\t\t// No-op\n\t}\n\n\t// Compaction details\n\tgetCompactionReserveTokens(): number {\n\t\treturn DEFAULT_COMPACTION.reserveTokens;\n\t}\n\n\tgetCompactionKeepRecentTokens(): number {\n\t\treturn DEFAULT_COMPACTION.keepRecentTokens;\n\t}\n\n\tgetBranchSummarySettings(): { reserveTokens: number } {\n\t\treturn { reserveTokens: 16384 };\n\t}\n\n\t// Thinking\n\tgetHideThinkingBlock(): boolean {\n\t\treturn false;\n\t}\n\n\tsetHideThinkingBlock(_hide: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetThinkingBudgets(): undefined {\n\t\treturn undefined;\n\t}\n\n\t// Shell\n\tgetShellPath(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetShellPath(_path: string | undefined): void {\n\t\t// No-op\n\t}\n\n\tgetShellCommandPrefix(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetShellCommandPrefix(_prefix: string | undefined): void {\n\t\t// No-op\n\t}\n\n\t// Misc settings stubs\n\tgetQuietStartup(): boolean {\n\t\treturn true;\n\t}\n\n\tsetQuietStartup(_quiet: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetCollapseChangelog(): boolean {\n\t\treturn true;\n\t}\n\n\tsetCollapseChangelog(_collapse: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetTransport(): string {\n\t\treturn \"stdio\";\n\t}\n\n\tsetTransport(_transport: string): void {\n\t\t// No-op\n\t}\n\n\tgetTheme(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetTheme(_theme: string): void {\n\t\t// No-op\n\t}\n\n\tgetPackages(): unknown[] {\n\t\treturn [];\n\t}\n\n\tsetPackages(_packages: unknown[]): void {\n\t\t// No-op\n\t}\n\n\tsetProjectPackages(_packages: unknown[]): void {\n\t\t// No-op\n\t}\n\n\tgetExtensionPaths(): string[] {\n\t\treturn [];\n\t}\n\n\tsetExtensionPaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tsetProjectExtensionPaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tgetSkillPaths(): string[] {\n\t\treturn [];\n\t}\n\n\tsetSkillPaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tsetProjectSkillPaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tgetPromptTemplatePaths(): string[] {\n\t\treturn [];\n\t}\n\n\tsetPromptTemplatePaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tsetProjectPromptTemplatePaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tgetThemePaths(): string[] {\n\t\treturn [];\n\t}\n\n\tsetThemePaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tsetProjectThemePaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tgetEnableSkillCommands(): boolean {\n\t\treturn false;\n\t}\n\n\tsetEnableSkillCommands(_enabled: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetEnabledModels(): string[] | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetEnabledModels(_patterns: string[] | undefined): void {\n\t\t// No-op\n\t}\n\n\tgetDoubleEscapeAction(): \"none\" {\n\t\treturn \"none\";\n\t}\n\n\tsetDoubleEscapeAction(_action: string): void {\n\t\t// No-op\n\t}\n\n\tgetShowHardwareCursor(): boolean {\n\t\treturn false;\n\t}\n\n\tsetShowHardwareCursor(_enabled: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetClearOnShrink(): boolean {\n\t\treturn false;\n\t}\n\n\tsetClearOnShrink(_enabled: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetEditorPaddingX(): number {\n\t\treturn 0;\n\t}\n\n\tsetEditorPaddingX(_padding: number): void {\n\t\t// No-op\n\t}\n\n\tgetAutocompleteMaxVisible(): number {\n\t\treturn 10;\n\t}\n\n\tsetAutocompleteMaxVisible(_maxVisible: number): void {\n\t\t// No-op\n\t}\n\n\tgetCodeBlockIndent(): string {\n\t\treturn \" \";\n\t}\n\n\tgetLastChangelogVersion(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetLastChangelogVersion(_version: string): void {\n\t\t// No-op\n\t}\n\n\tsetDefaultProvider(_provider: string): void {\n\t\t// No-op\n\t}\n\n\tsetDefaultModel(_modelId: string): void {\n\t\t// No-op\n\t}\n\n\tgetGlobalSettings(): object {\n\t\treturn {};\n\t}\n\n\tgetProjectSettings(): object {\n\t\treturn {};\n\t}\n\n\tapplyOverrides(_overrides: Partial<PipiclawSettings>): void {\n\t\t// No-op\n\t}\n\n\tflush(): Promise<void> {\n\t\treturn Promise.resolve();\n\t}\n\n\tdrainErrors(): unknown[] {\n\t\treturn [];\n\t}\n}\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAuFrC,MAAM,kBAAkB,GAA+B;IACtD,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,KAAK;IACpB,gBAAgB,EAAE,KAAK;CACvB,CAAC;AAEF,MAAM,aAAa,GAA0B;IAC5C,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,IAAI;CACjB,CAAC;AAEF,MAAM,qBAAqB,GAAiC;IAC3D,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,EAAE;IACjB,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,IAAI;IACd,eAAe,EAAE,IAAI;CACrB,CAAC;AAEF,MAAM,sBAAsB,GAAkC;IAC7D,OAAO,EAAE,IAAI;IACb,qBAAqB,EAAE,CAAC;IACxB,yBAAyB,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM;IACjB,mBAAmB,EAAE,CAAC;IACtB,yBAAyB,EAAE,IAAI;IAC/B,4BAA4B,EAAE,IAAI;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAInC,YAAY,OAAe;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEO,IAAI;QACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACX,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAEO,IAAI;QACX,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IAED,MAAM;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,qBAAqB;QACpB,OAAO;YACN,GAAG,kBAAkB;YACrB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;SAC3B,CAAC;IACH,CAAC;IAED,oBAAoB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC;IACxE,CAAC;IAED,oBAAoB,CAAC,OAAgB;QACpC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QACpE,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,gBAAgB;QACf,OAAO;YACN,GAAG,aAAa;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;SACtB,CAAC;IACH,CAAC;IAED,uBAAuB;QACtB,OAAO;YACN,GAAG,qBAAqB;YACxB,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY;SAC7B,CAAC;IACH,CAAC;IAED,wBAAwB;QACvB,OAAO;YACN,GAAG,sBAAsB;YACzB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;SAC9B,CAAC;IACH,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;IAC9D,CAAC;IAED,eAAe,CAAC,OAAgB;QAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;IACnC,CAAC;IAED,kBAAkB;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;IACtC,CAAC;IAED,0BAA0B,CAAC,QAAgB,EAAE,OAAe;QAC3D,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,uBAAuB;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI,KAAK,CAAC;IACpD,CAAC;IAED,uBAAuB,CAAC,KAA8D;QACrF,IAAI,CAAC,QAAQ,CAAC,oBAAoB,GAAG,KAAiD,CAAC;QACvF,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,yCAAyC;IACzC,eAAe;QACd,OAAO,eAAe,CAAC;IACxB,CAAC;IAED,eAAe,CAAC,KAA8B;QAC7C,QAAQ;IACT,CAAC;IAED,eAAe;QACd,OAAO,eAAe,CAAC;IACxB,CAAC;IAED,eAAe,CAAC,KAA8B;QAC7C,QAAQ;IACT,CAAC;IAED,YAAY;QACX,OAAO,EAAE,CAAC;IACX,CAAC;IAED,cAAc;QACb,OAAO,KAAK,CAAC;IACd,CAAC;IAED,iBAAiB;IACjB,kBAAkB;QACjB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,QAAiB;QACnC,QAAQ;IACT,CAAC;IAED,cAAc;QACb,OAAO,KAAK,CAAC;IACd,CAAC;IAED,cAAc,CAAC,QAAiB;QAC/B,QAAQ;IACT,CAAC;IAED,aAAa;QACZ,OAAO,KAAK,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAAc;QAC3B,QAAQ;IACT,CAAC;IAED,qBAAqB;IACrB,0BAA0B;QACzB,OAAO,kBAAkB,CAAC,aAAa,CAAC;IACzC,CAAC;IAED,6BAA6B;QAC5B,OAAO,kBAAkB,CAAC,gBAAgB,CAAC;IAC5C,CAAC;IAED,wBAAwB;QACvB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,0BAA0B;QACzB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,WAAW;IACX,oBAAoB;QACnB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,oBAAoB,CAAC,KAAc;QAClC,QAAQ;IACT,CAAC;IAED,kBAAkB;QACjB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,QAAQ;IACR,YAAY;QACX,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,YAAY,CAAC,KAAyB;QACrC,QAAQ;IACT,CAAC;IAED,qBAAqB;QACpB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,qBAAqB,CAAC,OAA2B;QAChD,QAAQ;IACT,CAAC;IAED,sBAAsB;IACtB,eAAe;QACd,OAAO,IAAI,CAAC;IACb,CAAC;IAED,eAAe,CAAC,MAAe;QAC9B,QAAQ;IACT,CAAC;IAED,oBAAoB;QACnB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,oBAAoB,CAAC,SAAkB;QACtC,QAAQ;IACT,CAAC;IAED,YAAY;QACX,OAAO,MAAM,CAAC;IACf,CAAC;IAED,YAAY,CAAC,UAA4B;QACxC,QAAQ;IACT,CAAC;IAED,QAAQ;QACP,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,MAAc;QACtB,QAAQ;IACT,CAAC;IAED,WAAW;QACV,OAAO,EAAE,CAAC;IACX,CAAC;IAED,WAAW,CAAC,SAA0B;QACrC,QAAQ;IACT,CAAC;IAED,kBAAkB,CAAC,SAA0B;QAC5C,QAAQ;IACT,CAAC;IAED,iBAAiB;QAChB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,iBAAiB,CAAC,MAAgB;QACjC,QAAQ;IACT,CAAC;IAED,wBAAwB,CAAC,MAAgB;QACxC,QAAQ;IACT,CAAC;IAED,aAAa;QACZ,OAAO,EAAE,CAAC;IACX,CAAC;IAED,aAAa,CAAC,MAAgB;QAC7B,QAAQ;IACT,CAAC;IAED,oBAAoB,CAAC,MAAgB;QACpC,QAAQ;IACT,CAAC;IAED,sBAAsB;QACrB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,sBAAsB,CAAC,MAAgB;QACtC,QAAQ;IACT,CAAC;IAED,6BAA6B,CAAC,MAAgB;QAC7C,QAAQ;IACT,CAAC;IAED,aAAa;QACZ,OAAO,EAAE,CAAC;IACX,CAAC;IAED,aAAa,CAAC,MAAgB;QAC7B,QAAQ;IACT,CAAC;IAED,oBAAoB,CAAC,MAAgB;QACpC,QAAQ;IACT,CAAC;IAED,sBAAsB;QACrB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,sBAAsB,CAAC,QAAiB;QACvC,QAAQ;IACT,CAAC;IAED,gBAAgB;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,gBAAgB,CAAC,SAA+B;QAC/C,QAAQ;IACT,CAAC;IAED,qBAAqB;QACpB,OAAO,MAAM,CAAC;IACf,CAAC;IAED,qBAAqB,CAAC,OAAiC;QACtD,QAAQ;IACT,CAAC;IAED,iBAAiB;QAChB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,iBAAiB,CAAC,KAAoE;QACrF,QAAQ;IACT,CAAC;IAED,qBAAqB;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,qBAAqB,CAAC,QAAiB;QACtC,QAAQ;IACT,CAAC;IAED,gBAAgB;QACf,OAAO,KAAK,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,QAAiB;QACjC,QAAQ;IACT,CAAC;IAED,iBAAiB;QAChB,OAAO,CAAC,CAAC;IACV,CAAC;IAED,iBAAiB,CAAC,QAAgB;QACjC,QAAQ;IACT,CAAC;IAED,yBAAyB;QACxB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,yBAAyB,CAAC,WAAmB;QAC5C,QAAQ;IACT,CAAC;IAED,kBAAkB;QACjB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,uBAAuB;QACtB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,uBAAuB,CAAC,QAAgB;QACvC,QAAQ;IACT,CAAC;IAED,kBAAkB,CAAC,SAAiB;QACnC,QAAQ;IACT,CAAC;IAED,eAAe,CAAC,QAAgB;QAC/B,QAAQ;IACT,CAAC;IAED,aAAa;QACZ,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,aAAa;QACZ,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,aAAa,CAAC,QAA8B;QAC3C,QAAQ;IACT,CAAC;IAED,iBAAiB;QAChB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,kBAAkB;QACjB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,cAAc,CAAC,SAA4B;QAC1C,IAAI,SAAS,CAAC,eAAe,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;QACvG,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAC9F,IAAI,SAAS,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,oBAAoB,GAAG,SAAS,CAAC,oBAAoB,CAAC;QACrE,CAAC;QACD,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG;gBAC1B,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAC3B,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO;gBAC1E,aAAa,EAAE,SAAS,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa;gBAC5F,gBAAgB,EAAE,SAAS,CAAC,UAAU,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB;aACrG,CAAC;QACH,CAAC;QACD,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG;gBACrB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;gBACtB,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO;gBAChE,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU;gBACzE,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW;aAC5E,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,KAAK;QACJ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW;QACV,OAAO,EAAE,CAAC;IACX,CAAC;CACD","sourcesContent":["/**\n * Context management for pipiclaw.\n *\n * `log.jsonl` and `context.jsonl` are treated as raw cold storage.\n * They are not proactively scanned or loaded as part of the memory model.\n *\n * This module currently provides only PipiclawSettingsManager.\n */\n\nimport type { Transport } from \"@mariozechner/pi-ai\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"fs\";\nimport { dirname, join } from \"path\";\n\ntype PackageSource =\n\t| string\n\t| {\n\t\t\tsource: string;\n\t\t\textensions?: string[];\n\t\t\tskills?: string[];\n\t\t\tprompts?: string[];\n\t\t\tthemes?: string[];\n\t };\n\ntype ThinkingBudgetsSettings = {\n\tminimal?: number;\n\tlow?: number;\n\tmedium?: number;\n\thigh?: number;\n};\n\ntype Settings = {\n\tdefaultProvider?: string;\n\tdefaultModel?: string;\n\tdefaultThinkingLevel?: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\tcompaction?: {\n\t\tenabled?: boolean;\n\t\treserveTokens?: number;\n\t\tkeepRecentTokens?: number;\n\t};\n\tretry?: {\n\t\tenabled?: boolean;\n\t\tmaxRetries?: number;\n\t\tbaseDelayMs?: number;\n\t\tmaxDelayMs?: number;\n\t};\n};\n\ntype SettingsError = {\n\tscope: \"global\" | \"project\";\n\terror: Error;\n};\n\ntype TransportSetting = Transport;\n\n// ============================================================================\n// PipiclawSettingsManager - Simple settings for pipiclaw\n// ============================================================================\n\nexport interface PipiclawCompactionSettings {\n\tenabled: boolean;\n\treserveTokens: number;\n\tkeepRecentTokens: number;\n}\n\nexport interface PipiclawRetrySettings {\n\tenabled: boolean;\n\tmaxRetries: number;\n\tbaseDelayMs: number;\n}\n\nexport interface PipiclawMemoryRecallSettings {\n\tenabled: boolean;\n\tmaxCandidates: number;\n\tmaxInjected: number;\n\tmaxChars: number;\n\trerankWithModel: boolean;\n}\n\nexport interface PipiclawSessionMemorySettings {\n\tenabled: boolean;\n\tminTurnsBetweenUpdate: number;\n\tminToolCallsBetweenUpdate: number;\n\ttimeoutMs: number;\n\tfailureBackoffTurns: number;\n\tforceRefreshBeforeCompact: boolean;\n\tforceRefreshBeforeNewSession: boolean;\n}\n\nexport interface PipiclawSettings {\n\tdefaultProvider?: string;\n\tdefaultModel?: string;\n\tdefaultThinkingLevel?: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\tcompaction?: Partial<PipiclawCompactionSettings>;\n\tretry?: Partial<PipiclawRetrySettings>;\n\tmemoryRecall?: Partial<PipiclawMemoryRecallSettings>;\n\tsessionMemory?: Partial<PipiclawSessionMemorySettings>;\n}\n\nconst DEFAULT_COMPACTION: PipiclawCompactionSettings = {\n\tenabled: true,\n\treserveTokens: 16384,\n\tkeepRecentTokens: 20000,\n};\n\nconst DEFAULT_RETRY: PipiclawRetrySettings = {\n\tenabled: true,\n\tmaxRetries: 3,\n\tbaseDelayMs: 2000,\n};\n\nconst DEFAULT_MEMORY_RECALL: PipiclawMemoryRecallSettings = {\n\tenabled: true,\n\tmaxCandidates: 12,\n\tmaxInjected: 5,\n\tmaxChars: 5000,\n\trerankWithModel: true,\n};\n\nconst DEFAULT_SESSION_MEMORY: PipiclawSessionMemorySettings = {\n\tenabled: true,\n\tminTurnsBetweenUpdate: 2,\n\tminToolCallsBetweenUpdate: 4,\n\ttimeoutMs: 30_000,\n\tfailureBackoffTurns: 3,\n\tforceRefreshBeforeCompact: true,\n\tforceRefreshBeforeNewSession: true,\n};\n\n/**\n * Settings manager for pipiclaw.\n * Stores global settings in the pipiclaw root directory.\n */\nexport class PipiclawSettingsManager {\n\tprivate settingsPath: string;\n\tprivate settings: PipiclawSettings;\n\n\tconstructor(baseDir: string) {\n\t\tthis.settingsPath = join(baseDir, \"settings.json\");\n\t\tthis.settings = this.load();\n\t}\n\n\tprivate load(): PipiclawSettings {\n\t\tif (!existsSync(this.settingsPath)) {\n\t\t\treturn {};\n\t\t}\n\n\t\ttry {\n\t\t\tconst content = readFileSync(this.settingsPath, \"utf-8\");\n\t\t\treturn JSON.parse(content);\n\t\t} catch {\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tprivate save(): void {\n\t\ttry {\n\t\t\tconst dir = dirname(this.settingsPath);\n\t\t\tif (!existsSync(dir)) {\n\t\t\t\tmkdirSync(dir, { recursive: true });\n\t\t\t}\n\t\t\twriteFileSync(this.settingsPath, JSON.stringify(this.settings, null, 2), \"utf-8\");\n\t\t} catch (error) {\n\t\t\tconsole.error(`Warning: Could not save settings file: ${error}`);\n\t\t}\n\t}\n\n\treload(): void {\n\t\tthis.settings = this.load();\n\t}\n\n\tgetCompactionSettings(): PipiclawCompactionSettings {\n\t\treturn {\n\t\t\t...DEFAULT_COMPACTION,\n\t\t\t...this.settings.compaction,\n\t\t};\n\t}\n\n\tgetCompactionEnabled(): boolean {\n\t\treturn this.settings.compaction?.enabled ?? DEFAULT_COMPACTION.enabled;\n\t}\n\n\tsetCompactionEnabled(enabled: boolean): void {\n\t\tthis.settings.compaction = { ...this.settings.compaction, enabled };\n\t\tthis.save();\n\t}\n\n\tgetRetrySettings(): PipiclawRetrySettings {\n\t\treturn {\n\t\t\t...DEFAULT_RETRY,\n\t\t\t...this.settings.retry,\n\t\t};\n\t}\n\n\tgetMemoryRecallSettings(): PipiclawMemoryRecallSettings {\n\t\treturn {\n\t\t\t...DEFAULT_MEMORY_RECALL,\n\t\t\t...this.settings.memoryRecall,\n\t\t};\n\t}\n\n\tgetSessionMemorySettings(): PipiclawSessionMemorySettings {\n\t\treturn {\n\t\t\t...DEFAULT_SESSION_MEMORY,\n\t\t\t...this.settings.sessionMemory,\n\t\t};\n\t}\n\n\tgetRetryEnabled(): boolean {\n\t\treturn this.settings.retry?.enabled ?? DEFAULT_RETRY.enabled;\n\t}\n\n\tsetRetryEnabled(enabled: boolean): void {\n\t\tthis.settings.retry = { ...this.settings.retry, enabled };\n\t\tthis.save();\n\t}\n\n\tgetDefaultModel(): string | undefined {\n\t\treturn this.settings.defaultModel;\n\t}\n\n\tgetDefaultProvider(): string | undefined {\n\t\treturn this.settings.defaultProvider;\n\t}\n\n\tsetDefaultModelAndProvider(provider: string, modelId: string): void {\n\t\tthis.settings.defaultProvider = provider;\n\t\tthis.settings.defaultModel = modelId;\n\t\tthis.save();\n\t}\n\n\tgetDefaultThinkingLevel(): \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | undefined {\n\t\treturn this.settings.defaultThinkingLevel || \"off\";\n\t}\n\n\tsetDefaultThinkingLevel(level: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\"): void {\n\t\tthis.settings.defaultThinkingLevel = level as PipiclawSettings[\"defaultThinkingLevel\"];\n\t\tthis.save();\n\t}\n\n\t// Compatibility methods for AgentSession\n\tgetSteeringMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn \"one-at-a-time\";\n\t}\n\n\tsetSteeringMode(_mode: \"all\" | \"one-at-a-time\"): void {\n\t\t// No-op\n\t}\n\n\tgetFollowUpMode(): \"all\" | \"one-at-a-time\" {\n\t\treturn \"one-at-a-time\";\n\t}\n\n\tsetFollowUpMode(_mode: \"all\" | \"one-at-a-time\"): void {\n\t\t// No-op\n\t}\n\n\tgetHookPaths(): string[] {\n\t\treturn [];\n\t}\n\n\tgetHookTimeout(): number {\n\t\treturn 30000;\n\t}\n\n\t// Image settings\n\tgetImageAutoResize(): boolean {\n\t\treturn false;\n\t}\n\n\tsetImageAutoResize(_enabled: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetBlockImages(): boolean {\n\t\treturn false;\n\t}\n\n\tsetBlockImages(_blocked: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetShowImages(): boolean {\n\t\treturn false;\n\t}\n\n\tsetShowImages(_show: boolean): void {\n\t\t// No-op\n\t}\n\n\t// Compaction details\n\tgetCompactionReserveTokens(): number {\n\t\treturn DEFAULT_COMPACTION.reserveTokens;\n\t}\n\n\tgetCompactionKeepRecentTokens(): number {\n\t\treturn DEFAULT_COMPACTION.keepRecentTokens;\n\t}\n\n\tgetBranchSummarySettings(): { reserveTokens: number } {\n\t\treturn { reserveTokens: 16384 };\n\t}\n\n\tgetBranchSummarySkipPrompt(): boolean {\n\t\treturn false;\n\t}\n\n\t// Thinking\n\tgetHideThinkingBlock(): boolean {\n\t\treturn false;\n\t}\n\n\tsetHideThinkingBlock(_hide: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetThinkingBudgets(): ThinkingBudgetsSettings | undefined {\n\t\treturn undefined;\n\t}\n\n\t// Shell\n\tgetShellPath(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetShellPath(_path: string | undefined): void {\n\t\t// No-op\n\t}\n\n\tgetShellCommandPrefix(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetShellCommandPrefix(_prefix: string | undefined): void {\n\t\t// No-op\n\t}\n\n\t// Misc settings stubs\n\tgetQuietStartup(): boolean {\n\t\treturn true;\n\t}\n\n\tsetQuietStartup(_quiet: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetCollapseChangelog(): boolean {\n\t\treturn true;\n\t}\n\n\tsetCollapseChangelog(_collapse: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetTransport(): TransportSetting {\n\t\treturn \"auto\";\n\t}\n\n\tsetTransport(_transport: TransportSetting): void {\n\t\t// No-op\n\t}\n\n\tgetTheme(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetTheme(_theme: string): void {\n\t\t// No-op\n\t}\n\n\tgetPackages(): PackageSource[] {\n\t\treturn [];\n\t}\n\n\tsetPackages(_packages: PackageSource[]): void {\n\t\t// No-op\n\t}\n\n\tsetProjectPackages(_packages: PackageSource[]): void {\n\t\t// No-op\n\t}\n\n\tgetExtensionPaths(): string[] {\n\t\treturn [];\n\t}\n\n\tsetExtensionPaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tsetProjectExtensionPaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tgetSkillPaths(): string[] {\n\t\treturn [];\n\t}\n\n\tsetSkillPaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tsetProjectSkillPaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tgetPromptTemplatePaths(): string[] {\n\t\treturn [];\n\t}\n\n\tsetPromptTemplatePaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tsetProjectPromptTemplatePaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tgetThemePaths(): string[] {\n\t\treturn [];\n\t}\n\n\tsetThemePaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tsetProjectThemePaths(_paths: string[]): void {\n\t\t// No-op\n\t}\n\n\tgetEnableSkillCommands(): boolean {\n\t\treturn false;\n\t}\n\n\tsetEnableSkillCommands(_enabled: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetEnabledModels(): string[] | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetEnabledModels(_patterns: string[] | undefined): void {\n\t\t// No-op\n\t}\n\n\tgetDoubleEscapeAction(): \"none\" {\n\t\treturn \"none\";\n\t}\n\n\tsetDoubleEscapeAction(_action: \"fork\" | \"tree\" | \"none\"): void {\n\t\t// No-op\n\t}\n\n\tgetTreeFilterMode(): \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\" {\n\t\treturn \"default\";\n\t}\n\n\tsetTreeFilterMode(_mode: \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\"): void {\n\t\t// No-op\n\t}\n\n\tgetShowHardwareCursor(): boolean {\n\t\treturn false;\n\t}\n\n\tsetShowHardwareCursor(_enabled: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetClearOnShrink(): boolean {\n\t\treturn false;\n\t}\n\n\tsetClearOnShrink(_enabled: boolean): void {\n\t\t// No-op\n\t}\n\n\tgetEditorPaddingX(): number {\n\t\treturn 0;\n\t}\n\n\tsetEditorPaddingX(_padding: number): void {\n\t\t// No-op\n\t}\n\n\tgetAutocompleteMaxVisible(): number {\n\t\treturn 10;\n\t}\n\n\tsetAutocompleteMaxVisible(_maxVisible: number): void {\n\t\t// No-op\n\t}\n\n\tgetCodeBlockIndent(): string {\n\t\treturn \" \";\n\t}\n\n\tgetLastChangelogVersion(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetLastChangelogVersion(_version: string): void {\n\t\t// No-op\n\t}\n\n\tsetDefaultProvider(_provider: string): void {\n\t\t// No-op\n\t}\n\n\tsetDefaultModel(_modelId: string): void {\n\t\t// No-op\n\t}\n\n\tgetSessionDir(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tgetNpmCommand(): string[] | undefined {\n\t\treturn undefined;\n\t}\n\n\tsetNpmCommand(_command: string[] | undefined): void {\n\t\t// No-op\n\t}\n\n\tgetGlobalSettings(): Settings {\n\t\treturn {};\n\t}\n\n\tgetProjectSettings(): Settings {\n\t\treturn {};\n\t}\n\n\tapplyOverrides(overrides: Partial<Settings>): void {\n\t\tif (overrides.defaultProvider !== undefined) this.settings.defaultProvider = overrides.defaultProvider;\n\t\tif (overrides.defaultModel !== undefined) this.settings.defaultModel = overrides.defaultModel;\n\t\tif (overrides.defaultThinkingLevel !== undefined) {\n\t\t\tthis.settings.defaultThinkingLevel = overrides.defaultThinkingLevel;\n\t\t}\n\t\tif (overrides.compaction !== undefined) {\n\t\t\tthis.settings.compaction = {\n\t\t\t\t...this.settings.compaction,\n\t\t\t\tenabled: overrides.compaction.enabled ?? this.settings.compaction?.enabled,\n\t\t\t\treserveTokens: overrides.compaction.reserveTokens ?? this.settings.compaction?.reserveTokens,\n\t\t\t\tkeepRecentTokens: overrides.compaction.keepRecentTokens ?? this.settings.compaction?.keepRecentTokens,\n\t\t\t};\n\t\t}\n\t\tif (overrides.retry !== undefined) {\n\t\t\tthis.settings.retry = {\n\t\t\t\t...this.settings.retry,\n\t\t\t\tenabled: overrides.retry.enabled ?? this.settings.retry?.enabled,\n\t\t\t\tmaxRetries: overrides.retry.maxRetries ?? this.settings.retry?.maxRetries,\n\t\t\t\tbaseDelayMs: overrides.retry.baseDelayMs ?? this.settings.retry?.baseDelayMs,\n\t\t\t};\n\t\t}\n\t\tthis.save();\n\t}\n\n\tflush(): Promise<void> {\n\t\treturn Promise.resolve();\n\t}\n\n\tdrainErrors(): SettingsError[] {\n\t\treturn [];\n\t}\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -3,22 +3,22 @@ export { COMMAND_RESULT_CUSTOM_TYPE, createCommandExtension, type PipiclawComman
3
3
  export { type BuiltInCommand, type BuiltInCommandName, parseBuiltInCommand, renderBuiltInHelp } from "./commands.js";
4
4
  export { getAgentConfig, getApiKeyForModel, getSoul, loadPipiclawSkills, } from "./config-loader.js";
5
5
  export { type PipiclawMemoryRecallSettings, type PipiclawSessionMemorySettings, type PipiclawSettings, PipiclawSettingsManager, } from "./context.js";
6
- export { createDingTalkContext } from "./delivery.js";
7
- export { type BusyMessageMode, DingTalkBot, type DingTalkConfig, type DingTalkContext, type DingTalkEvent, type DingTalkHandler, } from "./dingtalk.js";
8
- export { createEventsWatcher, EventsWatcher, type ImmediateEvent, type OneShotEvent, type PeriodicEvent, type ScheduledEvent, } from "./events.js";
9
- export { type BuildMemoryCandidatesOptions, buildMemoryCandidates, type MemoryCandidate, } from "./memory-candidates.js";
10
- export { type BackgroundMaintenanceResult, type ConsolidationRunOptions, type InlineConsolidationResult, runBackgroundMaintenance, runInlineConsolidation, } from "./memory-consolidation.js";
11
- export { ensureChannelMemoryFiles, ensureChannelMemoryFilesSync, getChannelSessionPath, readChannelSession, rewriteChannelSession, } from "./memory-files.js";
12
- export { type ConsolidationReason, MemoryLifecycle, type MemoryLifecycleOptions } from "./memory-lifecycle.js";
13
- export { type RecalledMemory, type RecallRequest, type RecallResult, recallRelevantMemory, } from "./memory-recall.js";
6
+ export { type BuildMemoryCandidatesOptions, buildMemoryCandidates, type MemoryCandidate, } from "./memory/candidates.js";
7
+ export { type BackgroundMaintenanceResult, type ConsolidationRunOptions, type InlineConsolidationResult, runBackgroundMaintenance, runInlineConsolidation, } from "./memory/consolidation.js";
8
+ export { ensureChannelMemoryFiles, ensureChannelMemoryFilesSync, getChannelSessionPath, readChannelSession, rewriteChannelSession, } from "./memory/files.js";
9
+ export { type ConsolidationReason, MemoryLifecycle, type MemoryLifecycleOptions } from "./memory/lifecycle.js";
10
+ export { type RecalledMemory, type RecallRequest, type RecallResult, recallRelevantMemory, } from "./memory/recall.js";
11
+ export { renderSessionMemory, type SessionMemoryState, type SessionMemoryUpdateOptions, updateChannelSessionMemory, } from "./memory/session.js";
14
12
  export { findExactModelReferenceMatch, formatModelList, formatModelReference, resolveInitialModel, } from "./model-utils.js";
15
13
  export { APP_HOME_DIR, APP_NAME, AUTH_CONFIG_PATH, CHANNEL_CONFIG_PATH, MODELS_CONFIG_PATH, SETTINGS_CONFIG_PATH, SUB_AGENTS_DIR, SUB_AGENTS_DIR_NAME, WORKSPACE_DIR, } from "./paths.js";
16
14
  export { type AppendSystemPromptOptions, buildAppendSystemPrompt } from "./prompt-builder.js";
15
+ export { createDingTalkContext } from "./runtime/delivery.js";
16
+ export { type BusyMessageMode, DingTalkBot, type DingTalkConfig, type DingTalkContext, type DingTalkEvent, type DingTalkHandler, } from "./runtime/dingtalk.js";
17
+ export { createEventsWatcher, EventsWatcher, type ImmediateEvent, type OneShotEvent, type PeriodicEvent, type ScheduledEvent, } from "./runtime/events.js";
18
+ export { ChannelStore, type LoggedMessage, type LoggedSubAgentRun } from "./runtime/store.js";
17
19
  export { createExecutor, type ExecOptions, type ExecResult, type Executor, parseSandboxArg, type SandboxConfig, validateSandbox, } from "./sandbox.js";
18
- export { renderSessionMemory, type SessionMemoryState, type SessionMemoryUpdateOptions, updateChannelSessionMemory, } from "./session-memory.js";
19
20
  export { runSidecarTask, type SidecarResult, type SidecarTask, } from "./sidecar-worker.js";
20
- export { ChannelStore, type LoggedMessage, type LoggedSubAgentRun } from "./store.js";
21
- export { discoverSubAgents, formatSubAgentList, getSubAgentsDir, type ResolvedSubAgentConfig, resolveSubAgentConfig, type SubAgentConfig, type SubAgentContextMode, type SubAgentDiscoveryResult, type SubAgentInvocationOverrides, type SubAgentMemoryMode, type SubAgentToolName, } from "./sub-agents.js";
21
+ export { discoverSubAgents, formatSubAgentList, getSubAgentsDir, type ResolvedSubAgentConfig, resolveSubAgentConfig, type SubAgentConfig, type SubAgentContextMode, type SubAgentDiscoveryResult, type SubAgentInvocationOverrides, type SubAgentMemoryMode, type SubAgentToolName, } from "./subagents/discovery.js";
22
+ export { createSubAgentTool, type SubAgentToolDetails, type SubAgentToolOptions, } from "./subagents/tool.js";
22
23
  export { type CreatePipiclawToolsOptions, createPipiclawBaseTools, createPipiclawTools, } from "./tools/index.js";
23
- export { createSubAgentTool, type SubAgentToolDetails, type SubAgentToolOptions, } from "./tools/subagent.js";
24
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EACN,0BAA0B,EAC1B,sBAAsB,EACtB,KAAK,+BAA+B,GACpC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EACN,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,kBAAkB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,uBAAuB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,KAAK,4BAA4B,EACjC,qBAAqB,EACrB,KAAK,eAAe,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,wBAAwB,EACxB,sBAAsB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,mBAAmB,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/G,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,oBAAoB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,0BAA0B,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,4BAA4B,EAC5B,eAAe,EACf,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,aAAa,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACN,KAAK,eAAe,EACpB,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,mBAAmB,EACnB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EACN,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,eAAe,EACf,KAAK,aAAa,EAClB,eAAe,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,WAAW,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,KAAK,0BAA0B,EAC/B,uBAAuB,EACvB,mBAAmB,GACnB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -3,22 +3,22 @@ export { COMMAND_RESULT_CUSTOM_TYPE, createCommandExtension, } from "./command-e
3
3
  export { parseBuiltInCommand, renderBuiltInHelp } from "./commands.js";
4
4
  export { getAgentConfig, getApiKeyForModel, getSoul, loadPipiclawSkills, } from "./config-loader.js";
5
5
  export { PipiclawSettingsManager, } from "./context.js";
6
- export { createDingTalkContext } from "./delivery.js";
7
- export { DingTalkBot, } from "./dingtalk.js";
8
- export { createEventsWatcher, EventsWatcher, } from "./events.js";
9
- export { buildMemoryCandidates, } from "./memory-candidates.js";
10
- export { runBackgroundMaintenance, runInlineConsolidation, } from "./memory-consolidation.js";
11
- export { ensureChannelMemoryFiles, ensureChannelMemoryFilesSync, getChannelSessionPath, readChannelSession, rewriteChannelSession, } from "./memory-files.js";
12
- export { MemoryLifecycle } from "./memory-lifecycle.js";
13
- export { recallRelevantMemory, } from "./memory-recall.js";
6
+ export { buildMemoryCandidates, } from "./memory/candidates.js";
7
+ export { runBackgroundMaintenance, runInlineConsolidation, } from "./memory/consolidation.js";
8
+ export { ensureChannelMemoryFiles, ensureChannelMemoryFilesSync, getChannelSessionPath, readChannelSession, rewriteChannelSession, } from "./memory/files.js";
9
+ export { MemoryLifecycle } from "./memory/lifecycle.js";
10
+ export { recallRelevantMemory, } from "./memory/recall.js";
11
+ export { renderSessionMemory, updateChannelSessionMemory, } from "./memory/session.js";
14
12
  export { findExactModelReferenceMatch, formatModelList, formatModelReference, resolveInitialModel, } from "./model-utils.js";
15
13
  export { APP_HOME_DIR, APP_NAME, AUTH_CONFIG_PATH, CHANNEL_CONFIG_PATH, MODELS_CONFIG_PATH, SETTINGS_CONFIG_PATH, SUB_AGENTS_DIR, SUB_AGENTS_DIR_NAME, WORKSPACE_DIR, } from "./paths.js";
16
14
  export { buildAppendSystemPrompt } from "./prompt-builder.js";
15
+ export { createDingTalkContext } from "./runtime/delivery.js";
16
+ export { DingTalkBot, } from "./runtime/dingtalk.js";
17
+ export { createEventsWatcher, EventsWatcher, } from "./runtime/events.js";
18
+ export { ChannelStore } from "./runtime/store.js";
17
19
  export { createExecutor, parseSandboxArg, validateSandbox, } from "./sandbox.js";
18
- export { renderSessionMemory, updateChannelSessionMemory, } from "./session-memory.js";
19
20
  export { runSidecarTask, } from "./sidecar-worker.js";
20
- export { ChannelStore } from "./store.js";
21
- export { discoverSubAgents, formatSubAgentList, getSubAgentsDir, resolveSubAgentConfig, } from "./sub-agents.js";
21
+ export { discoverSubAgents, formatSubAgentList, getSubAgentsDir, resolveSubAgentConfig, } from "./subagents/discovery.js";
22
+ export { createSubAgentTool, } from "./subagents/tool.js";
22
23
  export { createPipiclawBaseTools, createPipiclawTools, } from "./tools/index.js";
23
- export { createSubAgentTool, } from "./tools/subagent.js";
24
24
  //# sourceMappingURL=index.js.map