daycare-cli 2026.2.12 → 2026.2.23

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 (468) hide show
  1. package/dist/engine/agents/agent.d.ts.map +1 -1
  2. package/dist/engine/agents/agent.js +54 -24
  3. package/dist/engine/agents/agent.js.map +1 -1
  4. package/dist/engine/agents/agentSystem.d.ts +9 -1
  5. package/dist/engine/agents/agentSystem.d.ts.map +1 -1
  6. package/dist/engine/agents/agentSystem.js +25 -5
  7. package/dist/engine/agents/agentSystem.js.map +1 -1
  8. package/dist/engine/agents/ops/agentBackgroundList.d.ts.map +1 -1
  9. package/dist/engine/agents/ops/agentBackgroundList.js +3 -1
  10. package/dist/engine/agents/ops/agentBackgroundList.js.map +1 -1
  11. package/dist/engine/agents/ops/agentDescriptorCacheKey.d.ts.map +1 -1
  12. package/dist/engine/agents/ops/agentDescriptorCacheKey.js +2 -0
  13. package/dist/engine/agents/ops/agentDescriptorCacheKey.js.map +1 -1
  14. package/dist/engine/agents/ops/agentDescriptorCacheKey.spec.js +3 -0
  15. package/dist/engine/agents/ops/agentDescriptorCacheKey.spec.js.map +1 -1
  16. package/dist/engine/agents/ops/agentDescriptorIsHeartbeat.spec.js +1 -1
  17. package/dist/engine/agents/ops/agentDescriptorIsHeartbeat.spec.js.map +1 -1
  18. package/dist/engine/agents/ops/agentDescriptorLabel.d.ts.map +1 -1
  19. package/dist/engine/agents/ops/agentDescriptorLabel.js +3 -0
  20. package/dist/engine/agents/ops/agentDescriptorLabel.js.map +1 -1
  21. package/dist/engine/agents/ops/agentDescriptorLabel.spec.js +0 -1
  22. package/dist/engine/agents/ops/agentDescriptorLabel.spec.js.map +1 -1
  23. package/dist/engine/agents/ops/agentDescriptorTypes.d.ts +3 -0
  24. package/dist/engine/agents/ops/agentDescriptorTypes.d.ts.map +1 -1
  25. package/dist/engine/agents/ops/agentHistoryContext.d.ts.map +1 -1
  26. package/dist/engine/agents/ops/agentHistoryContext.js +14 -0
  27. package/dist/engine/agents/ops/agentHistoryContext.js.map +1 -1
  28. package/dist/engine/agents/ops/agentHistoryContext.spec.js +107 -0
  29. package/dist/engine/agents/ops/agentHistoryContext.spec.js.map +1 -1
  30. package/dist/engine/agents/ops/agentHistoryLoadAll.d.ts +3 -2
  31. package/dist/engine/agents/ops/agentHistoryLoadAll.d.ts.map +1 -1
  32. package/dist/engine/agents/ops/agentHistoryLoadAll.js +4 -3
  33. package/dist/engine/agents/ops/agentHistoryLoadAll.js.map +1 -1
  34. package/dist/engine/agents/ops/agentLoopRun.d.ts +3 -0
  35. package/dist/engine/agents/ops/agentLoopRun.d.ts.map +1 -1
  36. package/dist/engine/agents/ops/agentLoopRun.js +43 -7
  37. package/dist/engine/agents/ops/agentLoopRun.js.map +1 -1
  38. package/dist/engine/agents/ops/agentLoopRun.spec.js +108 -31
  39. package/dist/engine/agents/ops/agentLoopRun.spec.js.map +1 -1
  40. package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.d.ts +7 -0
  41. package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.d.ts.map +1 -0
  42. package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.js +16 -0
  43. package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.js.map +1 -0
  44. package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.spec.d.ts +2 -0
  45. package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.spec.d.ts.map +1 -0
  46. package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.spec.js +20 -0
  47. package/dist/engine/agents/ops/agentMessageRunPythonTerminalTrim.spec.js.map +1 -0
  48. package/dist/engine/agents/ops/agentModelOverrideApply.d.ts +10 -0
  49. package/dist/engine/agents/ops/agentModelOverrideApply.d.ts.map +1 -0
  50. package/dist/engine/agents/ops/agentModelOverrideApply.js +48 -0
  51. package/dist/engine/agents/ops/agentModelOverrideApply.js.map +1 -0
  52. package/dist/engine/agents/ops/agentModelOverrideApply.spec.d.ts +2 -0
  53. package/dist/engine/agents/ops/agentModelOverrideApply.spec.d.ts.map +1 -0
  54. package/dist/engine/agents/ops/agentModelOverrideApply.spec.js +43 -0
  55. package/dist/engine/agents/ops/agentModelOverrideApply.spec.js.map +1 -0
  56. package/dist/engine/agents/ops/agentPromptResolve.d.ts.map +1 -1
  57. package/dist/engine/agents/ops/agentPromptResolve.js +8 -0
  58. package/dist/engine/agents/ops/agentPromptResolve.js.map +1 -1
  59. package/dist/engine/agents/ops/agentPromptResolve.spec.js +8 -0
  60. package/dist/engine/agents/ops/agentPromptResolve.spec.js.map +1 -1
  61. package/dist/engine/agents/ops/agentSystemPrompt.d.ts.map +1 -1
  62. package/dist/engine/agents/ops/agentSystemPrompt.js +8 -1
  63. package/dist/engine/agents/ops/agentSystemPrompt.js.map +1 -1
  64. package/dist/engine/agents/ops/agentSystemPrompt.spec.js +39 -8
  65. package/dist/engine/agents/ops/agentSystemPrompt.spec.js.map +1 -1
  66. package/dist/engine/agents/ops/agentSystemPromptContext.d.ts +2 -0
  67. package/dist/engine/agents/ops/agentSystemPromptContext.d.ts.map +1 -1
  68. package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.d.ts.map +1 -1
  69. package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.js +1 -3
  70. package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.js.map +1 -1
  71. package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.js +15 -1
  72. package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.js.map +1 -1
  73. package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.d.ts +11 -0
  74. package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.d.ts.map +1 -0
  75. package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.js +17 -0
  76. package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.js.map +1 -0
  77. package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.spec.d.ts +2 -0
  78. package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.spec.d.ts.map +1 -0
  79. package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.spec.js +26 -0
  80. package/dist/engine/agents/ops/agentToolExecutionAllowlistResolve.spec.js.map +1 -0
  81. package/dist/engine/agents/ops/agentTypes.d.ts +8 -0
  82. package/dist/engine/agents/ops/agentTypes.d.ts.map +1 -1
  83. package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.d.ts +6 -0
  84. package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.d.ts.map +1 -0
  85. package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.js +21 -0
  86. package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.js.map +1 -0
  87. package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.spec.d.ts +2 -0
  88. package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.spec.d.ts.map +1 -0
  89. package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.spec.js +17 -0
  90. package/dist/engine/agents/ops/inferenceErrorAnthropicPromptOverflowTokensExtract.spec.js.map +1 -0
  91. package/dist/engine/agents/ops/messageContextReset.js +1 -1
  92. package/dist/engine/agents/ops/messageContextReset.js.map +1 -1
  93. package/dist/engine/agents/ops/messageContextReset.spec.js +1 -1
  94. package/dist/engine/agents/ops/messageContextReset.spec.js.map +1 -1
  95. package/dist/engine/agents/system/_systemAgents.d.ts.map +1 -1
  96. package/dist/engine/agents/system/_systemAgents.js +0 -5
  97. package/dist/engine/agents/system/_systemAgents.js.map +1 -1
  98. package/dist/engine/agents/system/systemAgentPromptResolve.spec.js +0 -6
  99. package/dist/engine/agents/system/systemAgentPromptResolve.spec.js.map +1 -1
  100. package/dist/engine/agents/system/systemAgentTagIs.spec.js +3 -4
  101. package/dist/engine/agents/system/systemAgentTagIs.spec.js.map +1 -1
  102. package/dist/engine/apps/appToolExecutorBuild.spec.js +11 -9
  103. package/dist/engine/apps/appToolExecutorBuild.spec.js.map +1 -1
  104. package/dist/engine/engine.d.ts +2 -0
  105. package/dist/engine/engine.d.ts.map +1 -1
  106. package/dist/engine/engine.js +18 -1
  107. package/dist/engine/engine.js.map +1 -1
  108. package/dist/engine/ipc/server.d.ts.map +1 -1
  109. package/dist/engine/ipc/server.js +21 -2
  110. package/dist/engine/ipc/server.js.map +1 -1
  111. package/dist/engine/ipc/serverMemoryRoutesRegister.d.ts +24 -0
  112. package/dist/engine/ipc/serverMemoryRoutesRegister.d.ts.map +1 -0
  113. package/dist/engine/ipc/serverMemoryRoutesRegister.js +54 -0
  114. package/dist/engine/ipc/serverMemoryRoutesRegister.js.map +1 -0
  115. package/dist/engine/ipc/serverMemoryRoutesRegister.spec.d.ts +2 -0
  116. package/dist/engine/ipc/serverMemoryRoutesRegister.spec.d.ts.map +1 -0
  117. package/dist/engine/ipc/serverMemoryRoutesRegister.spec.js +157 -0
  118. package/dist/engine/ipc/serverMemoryRoutesRegister.spec.js.map +1 -0
  119. package/dist/engine/memory/graph/graphNodeParse.d.ts +7 -0
  120. package/dist/engine/memory/graph/graphNodeParse.d.ts.map +1 -0
  121. package/dist/engine/memory/graph/graphNodeParse.js +122 -0
  122. package/dist/engine/memory/graph/graphNodeParse.js.map +1 -0
  123. package/dist/engine/memory/graph/graphNodeParse.spec.d.ts +2 -0
  124. package/dist/engine/memory/graph/graphNodeParse.spec.d.ts.map +1 -0
  125. package/dist/engine/memory/graph/graphNodeParse.spec.js +68 -0
  126. package/dist/engine/memory/graph/graphNodeParse.spec.js.map +1 -0
  127. package/dist/engine/memory/graph/graphNodeSerialize.d.ts +7 -0
  128. package/dist/engine/memory/graph/graphNodeSerialize.d.ts.map +1 -0
  129. package/dist/engine/memory/graph/graphNodeSerialize.js +17 -0
  130. package/dist/engine/memory/graph/graphNodeSerialize.js.map +1 -0
  131. package/dist/engine/memory/graph/graphNodeSerialize.spec.d.ts +2 -0
  132. package/dist/engine/memory/graph/graphNodeSerialize.spec.d.ts.map +1 -0
  133. package/dist/engine/memory/graph/graphNodeSerialize.spec.js +45 -0
  134. package/dist/engine/memory/graph/graphNodeSerialize.spec.js.map +1 -0
  135. package/dist/engine/memory/graph/graphRootNodeRead.d.ts +8 -0
  136. package/dist/engine/memory/graph/graphRootNodeRead.d.ts.map +1 -0
  137. package/dist/engine/memory/graph/graphRootNodeRead.js +23 -0
  138. package/dist/engine/memory/graph/graphRootNodeRead.js.map +1 -0
  139. package/dist/engine/memory/graph/graphRootNodeRead.spec.d.ts +2 -0
  140. package/dist/engine/memory/graph/graphRootNodeRead.spec.d.ts.map +1 -0
  141. package/dist/engine/memory/graph/graphRootNodeRead.spec.js +14 -0
  142. package/dist/engine/memory/graph/graphRootNodeRead.spec.js.map +1 -0
  143. package/dist/engine/memory/graph/graphStoreRead.d.ts +7 -0
  144. package/dist/engine/memory/graph/graphStoreRead.d.ts.map +1 -0
  145. package/dist/engine/memory/graph/graphStoreRead.js +32 -0
  146. package/dist/engine/memory/graph/graphStoreRead.js.map +1 -0
  147. package/dist/engine/memory/graph/graphStoreRead.spec.d.ts +2 -0
  148. package/dist/engine/memory/graph/graphStoreRead.spec.d.ts.map +1 -0
  149. package/dist/engine/memory/graph/graphStoreRead.spec.js +57 -0
  150. package/dist/engine/memory/graph/graphStoreRead.spec.js.map +1 -0
  151. package/dist/engine/memory/graph/graphStoreWrite.d.ts +7 -0
  152. package/dist/engine/memory/graph/graphStoreWrite.d.ts.map +1 -0
  153. package/dist/engine/memory/graph/graphStoreWrite.js +18 -0
  154. package/dist/engine/memory/graph/graphStoreWrite.js.map +1 -0
  155. package/dist/engine/memory/graph/graphStoreWrite.spec.d.ts +2 -0
  156. package/dist/engine/memory/graph/graphStoreWrite.spec.d.ts.map +1 -0
  157. package/dist/engine/memory/graph/graphStoreWrite.spec.js +50 -0
  158. package/dist/engine/memory/graph/graphStoreWrite.spec.js.map +1 -0
  159. package/dist/engine/memory/graph/graphTreeBuild.d.ts +9 -0
  160. package/dist/engine/memory/graph/graphTreeBuild.d.ts.map +1 -0
  161. package/dist/engine/memory/graph/graphTreeBuild.js +85 -0
  162. package/dist/engine/memory/graph/graphTreeBuild.js.map +1 -0
  163. package/dist/engine/memory/graph/graphTreeBuild.spec.d.ts +2 -0
  164. package/dist/engine/memory/graph/graphTreeBuild.spec.d.ts.map +1 -0
  165. package/dist/engine/memory/graph/graphTreeBuild.spec.js +46 -0
  166. package/dist/engine/memory/graph/graphTreeBuild.spec.js.map +1 -0
  167. package/dist/engine/memory/graph/graphTypes.d.ts +19 -0
  168. package/dist/engine/memory/graph/graphTypes.d.ts.map +1 -0
  169. package/dist/engine/memory/graph/graphTypes.js +2 -0
  170. package/dist/engine/memory/graph/graphTypes.js.map +1 -0
  171. package/dist/engine/memory/infer/inferObservations.d.ts +22 -0
  172. package/dist/engine/memory/infer/inferObservations.d.ts.map +1 -0
  173. package/dist/engine/memory/infer/inferObservations.js +71 -0
  174. package/dist/engine/memory/infer/inferObservations.js.map +1 -0
  175. package/dist/engine/memory/infer/utils/formatHistoryMessages.d.ts +9 -0
  176. package/dist/engine/memory/infer/utils/formatHistoryMessages.d.ts.map +1 -0
  177. package/dist/engine/memory/infer/utils/formatHistoryMessages.js +50 -0
  178. package/dist/engine/memory/infer/utils/formatHistoryMessages.js.map +1 -0
  179. package/dist/engine/memory/infer/utils/formatHistoryMessages.spec.d.ts +2 -0
  180. package/dist/engine/memory/infer/utils/formatHistoryMessages.spec.d.ts.map +1 -0
  181. package/dist/engine/memory/infer/utils/formatHistoryMessages.spec.js +109 -0
  182. package/dist/engine/memory/infer/utils/formatHistoryMessages.spec.js.map +1 -0
  183. package/dist/engine/memory/infer/utils/parseObservations.d.ts +7 -0
  184. package/dist/engine/memory/infer/utils/parseObservations.d.ts.map +1 -0
  185. package/dist/engine/memory/infer/utils/parseObservations.js +24 -0
  186. package/dist/engine/memory/infer/utils/parseObservations.js.map +1 -0
  187. package/dist/engine/memory/infer/utils/parseObservations.spec.d.ts +2 -0
  188. package/dist/engine/memory/infer/utils/parseObservations.spec.d.ts.map +1 -0
  189. package/dist/engine/memory/infer/utils/parseObservations.spec.js +31 -0
  190. package/dist/engine/memory/infer/utils/parseObservations.spec.js.map +1 -0
  191. package/dist/engine/memory/memory.d.ts +18 -0
  192. package/dist/engine/memory/memory.d.ts.map +1 -0
  193. package/dist/engine/memory/memory.js +71 -0
  194. package/dist/engine/memory/memory.js.map +1 -0
  195. package/dist/engine/memory/memory.spec.d.ts +2 -0
  196. package/dist/engine/memory/memory.spec.d.ts.map +1 -0
  197. package/dist/engine/memory/memory.spec.js +68 -0
  198. package/dist/engine/memory/memory.spec.js.map +1 -0
  199. package/dist/engine/memory/memorySessionObserve.d.ts +14 -2
  200. package/dist/engine/memory/memorySessionObserve.d.ts.map +1 -1
  201. package/dist/engine/memory/memorySessionObserve.js +13 -3
  202. package/dist/engine/memory/memorySessionObserve.js.map +1 -1
  203. package/dist/engine/memory/memorySessionObserve.spec.js +129 -4
  204. package/dist/engine/memory/memorySessionObserve.spec.js.map +1 -1
  205. package/dist/engine/memory/memoryWorker.d.ts +19 -2
  206. package/dist/engine/memory/memoryWorker.d.ts.map +1 -1
  207. package/dist/engine/memory/memoryWorker.js +46 -10
  208. package/dist/engine/memory/memoryWorker.js.map +1 -1
  209. package/dist/engine/memory/memoryWorker.spec.js +136 -21
  210. package/dist/engine/memory/memoryWorker.spec.js.map +1 -1
  211. package/dist/engine/memory/observationLogAppend.d.ts +9 -0
  212. package/dist/engine/memory/observationLogAppend.d.ts.map +1 -0
  213. package/dist/engine/memory/observationLogAppend.js +26 -0
  214. package/dist/engine/memory/observationLogAppend.js.map +1 -0
  215. package/dist/engine/memory/observationLogAppend.spec.d.ts +2 -0
  216. package/dist/engine/memory/observationLogAppend.spec.d.ts.map +1 -0
  217. package/dist/engine/memory/observationLogAppend.spec.js +67 -0
  218. package/dist/engine/memory/observationLogAppend.spec.js.map +1 -0
  219. package/dist/engine/modules/executablePrompts/executablePromptExpand.d.ts.map +1 -1
  220. package/dist/engine/modules/executablePrompts/executablePromptExpand.js +2 -1
  221. package/dist/engine/modules/executablePrompts/executablePromptExpand.js.map +1 -1
  222. package/dist/engine/modules/executablePrompts/executablePromptExpand.spec.js +1 -0
  223. package/dist/engine/modules/executablePrompts/executablePromptExpand.spec.js.map +1 -1
  224. package/dist/engine/modules/inference/router.d.ts +1 -0
  225. package/dist/engine/modules/inference/router.d.ts.map +1 -1
  226. package/dist/engine/modules/inference/router.js +1 -0
  227. package/dist/engine/modules/inference/router.js.map +1 -1
  228. package/dist/engine/modules/rlm/rlmExecute.d.ts.map +1 -1
  229. package/dist/engine/modules/rlm/rlmExecute.js +2 -1
  230. package/dist/engine/modules/rlm/rlmExecute.js.map +1 -1
  231. package/dist/engine/modules/rlm/rlmExecute.spec.js +1 -0
  232. package/dist/engine/modules/rlm/rlmExecute.spec.js.map +1 -1
  233. package/dist/engine/modules/rlm/rlmRestore.d.ts.map +1 -1
  234. package/dist/engine/modules/rlm/rlmRestore.js +2 -1
  235. package/dist/engine/modules/rlm/rlmRestore.js.map +1 -1
  236. package/dist/engine/modules/rlm/rlmRestore.spec.js +1 -0
  237. package/dist/engine/modules/rlm/rlmRestore.spec.js.map +1 -1
  238. package/dist/engine/modules/rlm/rlmResultTextBuild.d.ts.map +1 -1
  239. package/dist/engine/modules/rlm/rlmResultTextBuild.js +12 -3
  240. package/dist/engine/modules/rlm/rlmResultTextBuild.js.map +1 -1
  241. package/dist/engine/modules/rlm/rlmResultTextBuild.spec.d.ts +2 -0
  242. package/dist/engine/modules/rlm/rlmResultTextBuild.spec.d.ts.map +1 -0
  243. package/dist/engine/modules/rlm/rlmResultTextBuild.spec.js +32 -0
  244. package/dist/engine/modules/rlm/rlmResultTextBuild.spec.js.map +1 -0
  245. package/dist/engine/modules/rlm/rlmTool.d.ts.map +1 -1
  246. package/dist/engine/modules/rlm/rlmTool.js +2 -1
  247. package/dist/engine/modules/rlm/rlmTool.js.map +1 -1
  248. package/dist/engine/modules/rlm/rlmTool.spec.js +73 -0
  249. package/dist/engine/modules/rlm/rlmTool.spec.js.map +1 -1
  250. package/dist/engine/modules/rlm/rlmToolResultBuild.d.ts.map +1 -1
  251. package/dist/engine/modules/rlm/rlmToolResultBuild.js +5 -2
  252. package/dist/engine/modules/rlm/rlmToolResultBuild.js.map +1 -1
  253. package/dist/engine/modules/rlm/rlmToolResultBuild.spec.d.ts +2 -0
  254. package/dist/engine/modules/rlm/rlmToolResultBuild.spec.d.ts.map +1 -0
  255. package/dist/engine/modules/rlm/rlmToolResultBuild.spec.js +25 -0
  256. package/dist/engine/modules/rlm/rlmToolResultBuild.spec.js.map +1 -0
  257. package/dist/engine/modules/rlm/rlmToolsForContextResolve.d.ts +9 -0
  258. package/dist/engine/modules/rlm/rlmToolsForContextResolve.d.ts.map +1 -0
  259. package/dist/engine/modules/rlm/rlmToolsForContextResolve.js +18 -0
  260. package/dist/engine/modules/rlm/rlmToolsForContextResolve.js.map +1 -0
  261. package/dist/engine/modules/rlm/rlmToolsForContextResolve.spec.d.ts +2 -0
  262. package/dist/engine/modules/rlm/rlmToolsForContextResolve.spec.d.ts.map +1 -0
  263. package/dist/engine/modules/rlm/rlmToolsForContextResolve.spec.js +77 -0
  264. package/dist/engine/modules/rlm/rlmToolsForContextResolve.spec.js.map +1 -0
  265. package/dist/engine/modules/toolResolver.d.ts +3 -2
  266. package/dist/engine/modules/toolResolver.d.ts.map +1 -1
  267. package/dist/engine/modules/toolResolver.js +31 -9
  268. package/dist/engine/modules/toolResolver.js.map +1 -1
  269. package/dist/engine/modules/toolResolver.spec.js +101 -0
  270. package/dist/engine/modules/toolResolver.spec.js.map +1 -1
  271. package/dist/engine/modules/tools/agentModelSetToolBuild.d.ts +10 -0
  272. package/dist/engine/modules/tools/agentModelSetToolBuild.d.ts.map +1 -0
  273. package/dist/engine/modules/tools/agentModelSetToolBuild.js +94 -0
  274. package/dist/engine/modules/tools/agentModelSetToolBuild.js.map +1 -0
  275. package/dist/engine/modules/tools/agentModelSetToolBuild.spec.d.ts +2 -0
  276. package/dist/engine/modules/tools/agentModelSetToolBuild.spec.d.ts.map +1 -0
  277. package/dist/engine/modules/tools/agentModelSetToolBuild.spec.js +45 -0
  278. package/dist/engine/modules/tools/agentModelSetToolBuild.spec.js.map +1 -0
  279. package/dist/engine/modules/tools/channelSendTool.js +3 -0
  280. package/dist/engine/modules/tools/channelSendTool.js.map +1 -1
  281. package/dist/engine/modules/tools/memoryNodeReadToolBuild.d.ts +8 -0
  282. package/dist/engine/modules/tools/memoryNodeReadToolBuild.d.ts.map +1 -0
  283. package/dist/engine/modules/tools/memoryNodeReadToolBuild.js +99 -0
  284. package/dist/engine/modules/tools/memoryNodeReadToolBuild.js.map +1 -0
  285. package/dist/engine/modules/tools/memoryNodeReadToolBuild.spec.d.ts +2 -0
  286. package/dist/engine/modules/tools/memoryNodeReadToolBuild.spec.d.ts.map +1 -0
  287. package/dist/engine/modules/tools/memoryNodeReadToolBuild.spec.js +112 -0
  288. package/dist/engine/modules/tools/memoryNodeReadToolBuild.spec.js.map +1 -0
  289. package/dist/engine/modules/tools/memoryNodeWriteToolBuild.d.ts +10 -0
  290. package/dist/engine/modules/tools/memoryNodeWriteToolBuild.d.ts.map +1 -0
  291. package/dist/engine/modules/tools/memoryNodeWriteToolBuild.js +115 -0
  292. package/dist/engine/modules/tools/memoryNodeWriteToolBuild.js.map +1 -0
  293. package/dist/engine/modules/tools/memoryNodeWriteToolBuild.spec.d.ts +2 -0
  294. package/dist/engine/modules/tools/memoryNodeWriteToolBuild.spec.d.ts.map +1 -0
  295. package/dist/engine/modules/tools/memoryNodeWriteToolBuild.spec.js +163 -0
  296. package/dist/engine/modules/tools/memoryNodeWriteToolBuild.spec.js.map +1 -0
  297. package/dist/engine/modules/tools/toolResultTruncate.d.ts +1 -1
  298. package/dist/engine/modules/tools/toolResultTruncate.d.ts.map +1 -1
  299. package/dist/engine/modules/tools/toolResultTruncate.js +46 -22
  300. package/dist/engine/modules/tools/toolResultTruncate.js.map +1 -1
  301. package/dist/engine/modules/tools/toolResultTruncate.spec.js +28 -2
  302. package/dist/engine/modules/tools/toolResultTruncate.spec.js.map +1 -1
  303. package/dist/engine/modules/tools/types.d.ts +10 -1
  304. package/dist/engine/modules/tools/types.d.ts.map +1 -1
  305. package/dist/engine/permissions/permissionBuildUser.d.ts.map +1 -1
  306. package/dist/engine/permissions/permissionBuildUser.js +5 -1
  307. package/dist/engine/permissions/permissionBuildUser.js.map +1 -1
  308. package/dist/engine/permissions/permissionBuildUser.spec.js +2 -1
  309. package/dist/engine/permissions/permissionBuildUser.spec.js.map +1 -1
  310. package/dist/engine/permissions.d.ts +1 -0
  311. package/dist/engine/permissions.d.ts.map +1 -1
  312. package/dist/engine/permissions.js +12 -2
  313. package/dist/engine/permissions.js.map +1 -1
  314. package/dist/engine/plugins/descriptor.d.ts +2 -2
  315. package/dist/engine/processes/processes.js +2 -1
  316. package/dist/engine/processes/processes.js.map +1 -1
  317. package/dist/engine/processes/processes.spec.js +5 -3
  318. package/dist/engine/processes/processes.spec.js.map +1 -1
  319. package/dist/engine/users/userHome.d.ts +1 -0
  320. package/dist/engine/users/userHome.d.ts.map +1 -1
  321. package/dist/engine/users/userHome.js +2 -0
  322. package/dist/engine/users/userHome.js.map +1 -1
  323. package/dist/engine/users/userHome.spec.js +1 -0
  324. package/dist/engine/users/userHome.spec.js.map +1 -1
  325. package/dist/engine/users/userHomeEnsure.d.ts.map +1 -1
  326. package/dist/engine/users/userHomeEnsure.js +1 -0
  327. package/dist/engine/users/userHomeEnsure.js.map +1 -1
  328. package/dist/engine/users/userHomeEnsure.spec.js +1 -0
  329. package/dist/engine/users/userHomeEnsure.spec.js.map +1 -1
  330. package/dist/plugins/dashboard/site/404.html +1 -1
  331. package/dist/plugins/dashboard/site/_next/static/chunks/{315-7c3dbac7865a2549.js → 129-0781090dbd74ef24.js} +1 -1
  332. package/dist/plugins/dashboard/site/_next/static/chunks/315-e0c2965b599a90c8.js +1 -0
  333. package/dist/plugins/dashboard/site/_next/static/chunks/app/agent/page-2d345f6346edc077.js +1 -0
  334. package/dist/plugins/dashboard/site/_next/static/chunks/app/agents/page-326ff3cf564198c7.js +1 -0
  335. package/dist/plugins/dashboard/site/_next/static/chunks/app/automations/page-6a39540c21d6b25b.js +1 -0
  336. package/dist/plugins/dashboard/site/_next/static/chunks/app/connectors/page-92a732501885071f.js +1 -0
  337. package/dist/plugins/dashboard/site/_next/static/chunks/app/memory/page-74c0b70421c567ab.js +1 -0
  338. package/dist/plugins/dashboard/site/_next/static/chunks/app/page-c4cbe1c7aca2ecd7.js +1 -0
  339. package/dist/plugins/dashboard/site/_next/static/chunks/app/processes/page-bf7900fe583d361e.js +1 -0
  340. package/dist/plugins/dashboard/site/_next/static/chunks/app/providers/page-b2e79cb03244c267.js +1 -0
  341. package/dist/plugins/dashboard/site/_next/static/chunks/app/signals/page-2992aa1807b6fdab.js +1 -0
  342. package/dist/plugins/dashboard/site/_next/static/chunks/app/telemetry/{page-98aa9367902606e3.js → page-eabe78b4fbbf1439.js} +1 -1
  343. package/dist/plugins/dashboard/site/_next/static/chunks/app/tools/page-4a2e5a16190af659.js +1 -0
  344. package/dist/plugins/dashboard/site/_next/static/chunks/{main-2004b9415696334d.js → main-5352cc0d54d797b4.js} +1 -1
  345. package/dist/plugins/dashboard/site/_next/static/css/42d76d007d742231.css +5 -0
  346. package/dist/plugins/dashboard/site/agent.html +1 -1
  347. package/dist/plugins/dashboard/site/agent.txt +2 -2
  348. package/dist/plugins/dashboard/site/agents.html +1 -1
  349. package/dist/plugins/dashboard/site/agents.txt +2 -2
  350. package/dist/plugins/dashboard/site/automations.html +1 -1
  351. package/dist/plugins/dashboard/site/automations.txt +2 -2
  352. package/dist/plugins/dashboard/site/connectors.html +1 -1
  353. package/dist/plugins/dashboard/site/connectors.txt +2 -2
  354. package/dist/plugins/dashboard/site/index.html +2 -2
  355. package/dist/plugins/dashboard/site/index.txt +2 -2
  356. package/dist/plugins/dashboard/site/memory.html +1 -0
  357. package/dist/plugins/dashboard/site/memory.txt +7 -0
  358. package/dist/plugins/dashboard/site/processes.html +1 -1
  359. package/dist/plugins/dashboard/site/processes.txt +2 -2
  360. package/dist/plugins/dashboard/site/providers.html +1 -1
  361. package/dist/plugins/dashboard/site/providers.txt +2 -2
  362. package/dist/plugins/dashboard/site/signals.html +1 -1
  363. package/dist/plugins/dashboard/site/signals.txt +2 -2
  364. package/dist/plugins/dashboard/site/telemetry.html +2 -2
  365. package/dist/plugins/dashboard/site/telemetry.txt +2 -2
  366. package/dist/plugins/dashboard/site/tools.html +1 -1
  367. package/dist/plugins/dashboard/site/tools.txt +2 -2
  368. package/dist/plugins/shell/tool.d.ts +1 -0
  369. package/dist/plugins/shell/tool.d.ts.map +1 -1
  370. package/dist/plugins/shell/tool.js +16 -5
  371. package/dist/plugins/shell/tool.js.map +1 -1
  372. package/dist/plugins/shell/tool.spec.js +33 -6
  373. package/dist/plugins/shell/tool.spec.js.map +1 -1
  374. package/dist/prompts/SYSTEM_AGENCY.md +1 -1
  375. package/dist/prompts/SYSTEM_PERMISSIONS.md +4 -25
  376. package/dist/prompts/memory/MEMORY_AGENT.md +148 -0
  377. package/dist/prompts/memory/MEMORY_ROOT.md +322 -0
  378. package/dist/prompts/memory/OBSERVE.md +74 -0
  379. package/dist/sandbox/runtime.spec.js +3 -1
  380. package/dist/sandbox/runtime.spec.js.map +1 -1
  381. package/dist/sandbox/sandboxCanRead.d.ts.map +1 -1
  382. package/dist/sandbox/sandboxCanRead.js +26 -2
  383. package/dist/sandbox/sandboxCanRead.js.map +1 -1
  384. package/dist/sandbox/sandboxCanRead.spec.js +51 -8
  385. package/dist/sandbox/sandboxCanRead.spec.js.map +1 -1
  386. package/dist/sandbox/sandboxCanWrite.d.ts.map +1 -1
  387. package/dist/sandbox/sandboxCanWrite.js +11 -0
  388. package/dist/sandbox/sandboxCanWrite.js.map +1 -1
  389. package/dist/sandbox/sandboxCanWrite.spec.js +32 -1
  390. package/dist/sandbox/sandboxCanWrite.spec.js.map +1 -1
  391. package/dist/sandbox/sandboxDangerousFileCheck.d.ts +11 -0
  392. package/dist/sandbox/sandboxDangerousFileCheck.d.ts.map +1 -0
  393. package/dist/sandbox/sandboxDangerousFileCheck.js +37 -0
  394. package/dist/sandbox/sandboxDangerousFileCheck.js.map +1 -0
  395. package/dist/sandbox/sandboxDangerousFileCheck.spec.d.ts +2 -0
  396. package/dist/sandbox/sandboxDangerousFileCheck.spec.d.ts.map +1 -0
  397. package/dist/sandbox/sandboxDangerousFileCheck.spec.js +25 -0
  398. package/dist/sandbox/sandboxDangerousFileCheck.spec.js.map +1 -0
  399. package/dist/sandbox/sandboxDangerousFilesBuild.d.ts +11 -0
  400. package/dist/sandbox/sandboxDangerousFilesBuild.d.ts.map +1 -0
  401. package/dist/sandbox/sandboxDangerousFilesBuild.js +23 -0
  402. package/dist/sandbox/sandboxDangerousFilesBuild.js.map +1 -0
  403. package/dist/sandbox/sandboxDangerousFilesBuild.spec.d.ts +2 -0
  404. package/dist/sandbox/sandboxDangerousFilesBuild.spec.d.ts.map +1 -0
  405. package/dist/sandbox/sandboxDangerousFilesBuild.spec.js +31 -0
  406. package/dist/sandbox/sandboxDangerousFilesBuild.spec.js.map +1 -0
  407. package/dist/sandbox/sandboxFilesystemPolicyBuild.d.ts.map +1 -1
  408. package/dist/sandbox/sandboxFilesystemPolicyBuild.js +5 -47
  409. package/dist/sandbox/sandboxFilesystemPolicyBuild.js.map +1 -1
  410. package/dist/sandbox/sandboxPathDenyCheck.d.ts +6 -0
  411. package/dist/sandbox/sandboxPathDenyCheck.d.ts.map +1 -0
  412. package/dist/sandbox/sandboxPathDenyCheck.js +26 -0
  413. package/dist/sandbox/sandboxPathDenyCheck.js.map +1 -0
  414. package/dist/sandbox/sandboxPathDenyCheck.spec.d.ts +2 -0
  415. package/dist/sandbox/sandboxPathDenyCheck.spec.d.ts.map +1 -0
  416. package/dist/sandbox/sandboxPathDenyCheck.spec.js +23 -0
  417. package/dist/sandbox/sandboxPathDenyCheck.spec.js.map +1 -0
  418. package/dist/sandbox/sandboxSensitiveDenyPathsBuild.d.ts +11 -0
  419. package/dist/sandbox/sandboxSensitiveDenyPathsBuild.d.ts.map +1 -0
  420. package/dist/sandbox/sandboxSensitiveDenyPathsBuild.js +63 -0
  421. package/dist/sandbox/sandboxSensitiveDenyPathsBuild.js.map +1 -0
  422. package/dist/sandbox/sandboxSensitiveDenyPathsBuild.spec.d.ts +2 -0
  423. package/dist/sandbox/sandboxSensitiveDenyPathsBuild.spec.d.ts.map +1 -0
  424. package/dist/sandbox/sandboxSensitiveDenyPathsBuild.spec.js +52 -0
  425. package/dist/sandbox/sandboxSensitiveDenyPathsBuild.spec.js.map +1 -0
  426. package/dist/skills/memory-document/SKILL.md +134 -0
  427. package/dist/skills/skills/memory-document/SKILL.md +134 -0
  428. package/dist/storage/historyRepository.d.ts +1 -1
  429. package/dist/storage/historyRepository.d.ts.map +1 -1
  430. package/dist/storage/historyRepository.js +5 -5
  431. package/dist/storage/historyRepository.js.map +1 -1
  432. package/dist/storage/processesRepository.js +9 -3
  433. package/dist/storage/processesRepository.js.map +1 -1
  434. package/dist/types.d.ts +4 -2
  435. package/dist/types.d.ts.map +1 -1
  436. package/dist/utils/stringTruncateHeadTail.d.ts +6 -0
  437. package/dist/utils/stringTruncateHeadTail.d.ts.map +1 -0
  438. package/dist/utils/stringTruncateHeadTail.js +18 -0
  439. package/dist/utils/stringTruncateHeadTail.js.map +1 -0
  440. package/dist/utils/stringTruncateHeadTail.spec.d.ts +2 -0
  441. package/dist/utils/stringTruncateHeadTail.spec.d.ts.map +1 -0
  442. package/dist/utils/stringTruncateHeadTail.spec.js +20 -0
  443. package/dist/utils/stringTruncateHeadTail.spec.js.map +1 -0
  444. package/dist/utils/stringTruncateTail.d.ts +6 -0
  445. package/dist/utils/stringTruncateTail.d.ts.map +1 -0
  446. package/dist/utils/stringTruncateTail.js +15 -0
  447. package/dist/utils/stringTruncateTail.js.map +1 -0
  448. package/dist/utils/stringTruncateTail.spec.d.ts +2 -0
  449. package/dist/utils/stringTruncateTail.spec.d.ts.map +1 -0
  450. package/dist/utils/stringTruncateTail.spec.js +19 -0
  451. package/dist/utils/stringTruncateTail.spec.js.map +1 -0
  452. package/package.json +1 -1
  453. package/dist/plugins/dashboard/site/_next/static/chunks/668-ebfa412e61ce0ba6.js +0 -1
  454. package/dist/plugins/dashboard/site/_next/static/chunks/app/agent/page-22dfc72e39faa099.js +0 -1
  455. package/dist/plugins/dashboard/site/_next/static/chunks/app/agents/page-7b0c562c7534861a.js +0 -1
  456. package/dist/plugins/dashboard/site/_next/static/chunks/app/automations/page-6245088e82da3e1c.js +0 -1
  457. package/dist/plugins/dashboard/site/_next/static/chunks/app/connectors/page-036fb8590b50cc57.js +0 -1
  458. package/dist/plugins/dashboard/site/_next/static/chunks/app/page-8c0afc21c643ff8b.js +0 -1
  459. package/dist/plugins/dashboard/site/_next/static/chunks/app/processes/page-98da30b493398bf7.js +0 -1
  460. package/dist/plugins/dashboard/site/_next/static/chunks/app/providers/page-f0d02a91a69b9eb8.js +0 -1
  461. package/dist/plugins/dashboard/site/_next/static/chunks/app/signals/page-44ccbe1e003b1905.js +0 -1
  462. package/dist/plugins/dashboard/site/_next/static/chunks/app/tools/page-6ff89d201c006847.js +0 -1
  463. package/dist/plugins/dashboard/site/_next/static/css/5e0d68fc118b66c8.css +0 -5
  464. package/dist/prompts/ACTORS.md +0 -37
  465. package/dist/prompts/ARCHITECT.md +0 -36
  466. package/dist/prompts/PERMISSIONS.md +0 -63
  467. /package/dist/plugins/dashboard/site/_next/static/{dkIRezLpmA4xSr6Bj5DQ6 → 9-NVJBP-YwBbxw-w3gjmQ}/_buildManifest.js +0 -0
  468. /package/dist/plugins/dashboard/site/_next/static/{dkIRezLpmA4xSr6Bj5DQ6 → 9-NVJBP-YwBbxw-w3gjmQ}/_ssgManifest.js +0 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Checks whether a target path is contained in any denied directory path.
3
+ * Expects: target and denyPaths are absolute or resolvable paths.
4
+ */
5
+ export declare function sandboxPathDenyCheck(target: string, denyPaths: string[]): boolean;
6
+ //# sourceMappingURL=sandboxPathDenyCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandboxPathDenyCheck.d.ts","sourceRoot":"","sources":["../../sources/sandbox/sandboxPathDenyCheck.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAQjF"}
@@ -0,0 +1,26 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { isWithinSecure } from "./pathResolveSecure.js";
4
+ /**
5
+ * Checks whether a target path is contained in any denied directory path.
6
+ * Expects: target and denyPaths are absolute or resolvable paths.
7
+ */
8
+ export function sandboxPathDenyCheck(target, denyPaths) {
9
+ const resolvedTarget = existingPathResolve(target);
10
+ for (const denyPath of denyPaths) {
11
+ if (isWithinSecure(existingPathResolve(denyPath), resolvedTarget)) {
12
+ return true;
13
+ }
14
+ }
15
+ return false;
16
+ }
17
+ function existingPathResolve(target) {
18
+ const resolved = path.resolve(target);
19
+ try {
20
+ return fs.realpathSync(resolved);
21
+ }
22
+ catch {
23
+ return resolved;
24
+ }
25
+ }
26
+ //# sourceMappingURL=sandboxPathDenyCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandboxPathDenyCheck.js","sourceRoot":"","sources":["../../sources/sandbox/sandboxPathDenyCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,SAAmB;IACpE,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,cAAc,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,QAAQ,CAAC;IACpB,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sandboxPathDenyCheck.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandboxPathDenyCheck.spec.d.ts","sourceRoot":"","sources":["../../sources/sandbox/sandboxPathDenyCheck.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import path from "node:path";
2
+ import { describe, expect, it } from "vitest";
3
+ import { sandboxPathDenyCheck } from "./sandboxPathDenyCheck.js";
4
+ describe("sandboxPathDenyCheck", () => {
5
+ it("returns true when target is inside a denied directory", () => {
6
+ const denied = ["/home/alice/.ssh", "/etc/ssh"];
7
+ const target = "/home/alice/.ssh/id_rsa";
8
+ expect(sandboxPathDenyCheck(target, denied)).toBe(true);
9
+ });
10
+ it("returns true when target matches a denied directory exactly", () => {
11
+ const target = path.resolve("/etc/ssh");
12
+ expect(sandboxPathDenyCheck(target, ["/etc/ssh"])).toBe(true);
13
+ });
14
+ it("returns false when target is outside denied directories", () => {
15
+ const target = "/home/alice/projects/daycare/readme.md";
16
+ expect(sandboxPathDenyCheck(target, ["/home/alice/.ssh", "/etc/ssh"])).toBe(false);
17
+ });
18
+ it("does not treat sibling directory names as contained", () => {
19
+ const target = "/home/alice/.ssh-backup/id_rsa";
20
+ expect(sandboxPathDenyCheck(target, ["/home/alice/.ssh"])).toBe(false);
21
+ });
22
+ });
23
+ //# sourceMappingURL=sandboxPathDenyCheck.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandboxPathDenyCheck.spec.js","sourceRoot":"","sources":["../../sources/sandbox/sandboxPathDenyCheck.spec.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,yBAAyB,CAAC;QAEzC,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAExC,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,wCAAwC,CAAC;QAExD,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC3D,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAEhD,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ type SandboxSensitiveDenyPathsBuildInput = {
2
+ homeDir?: string;
3
+ platform?: NodeJS.Platform;
4
+ };
5
+ /**
6
+ * Builds the shared sensitive filesystem deny-list used by sandbox checks.
7
+ * Expects: homeDir, when provided, is an absolute or resolvable path.
8
+ */
9
+ export declare function sandboxSensitiveDenyPathsBuild(input?: SandboxSensitiveDenyPathsBuildInput): string[];
10
+ export {};
11
+ //# sourceMappingURL=sandboxSensitiveDenyPathsBuild.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandboxSensitiveDenyPathsBuild.d.ts","sourceRoot":"","sources":["../../sources/sandbox/sandboxSensitiveDenyPathsBuild.ts"],"names":[],"mappings":"AAGA,KAAK,mCAAmC,GAAG;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC9B,CAAC;AA4CF;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,GAAE,mCAAwC,GAAG,MAAM,EAAE,CAexG"}
@@ -0,0 +1,63 @@
1
+ import os from "node:os";
2
+ import path from "node:path";
3
+ const COMMON_HOME_RELATIVE_DENY_PATHS = [
4
+ ".ssh",
5
+ ".gnupg",
6
+ ".aws",
7
+ ".kube",
8
+ ".docker",
9
+ ".config/gcloud",
10
+ ".config/gh",
11
+ ".config/op",
12
+ ".config/1Password",
13
+ ".local/share/keyrings",
14
+ ".npmrc",
15
+ ".pypirc",
16
+ ".netrc",
17
+ ".git-credentials"
18
+ ];
19
+ const COMMON_SYSTEM_DENY_PATHS = [
20
+ "/etc/ssh",
21
+ "/etc/sudoers",
22
+ "/etc/sudoers.d",
23
+ "/etc/shadow",
24
+ "/etc/gshadow",
25
+ "/etc/ssl/private"
26
+ ];
27
+ const DARWIN_HOME_RELATIVE_DENY_PATHS = [
28
+ "Library/Keychains",
29
+ "Library/Application Support/iCloud",
30
+ "Library/Application Support/com.apple.TCC",
31
+ "Library/Group Containers"
32
+ ];
33
+ const DARWIN_SYSTEM_DENY_PATHS = [
34
+ "/private/etc/ssh",
35
+ "/private/etc/sudoers",
36
+ "/private/etc/sudoers.d",
37
+ "/private/etc/master.passwd"
38
+ ];
39
+ const LINUX_SYSTEM_DENY_PATHS = ["/root/.ssh"];
40
+ /**
41
+ * Builds the shared sensitive filesystem deny-list used by sandbox checks.
42
+ * Expects: homeDir, when provided, is an absolute or resolvable path.
43
+ */
44
+ export function sandboxSensitiveDenyPathsBuild(input = {}) {
45
+ const platform = input.platform ?? process.platform;
46
+ const homeDir = path.resolve(input.homeDir ?? os.homedir());
47
+ const platformHomeDeny = platform === "darwin" ? DARWIN_HOME_RELATIVE_DENY_PATHS.map((entry) => path.resolve(homeDir, entry)) : [];
48
+ const platformSystemDeny = platform === "darwin" ? DARWIN_SYSTEM_DENY_PATHS : platform === "linux" ? LINUX_SYSTEM_DENY_PATHS : [];
49
+ return dedupeResolvedPaths([
50
+ ...COMMON_HOME_RELATIVE_DENY_PATHS.map((entry) => path.resolve(homeDir, entry)),
51
+ ...platformHomeDeny,
52
+ ...COMMON_SYSTEM_DENY_PATHS,
53
+ ...platformSystemDeny
54
+ ]);
55
+ }
56
+ function dedupeResolvedPaths(values) {
57
+ const resolved = values
58
+ .map((entry) => entry.trim())
59
+ .filter((entry) => entry.length > 0)
60
+ .map((entry) => path.resolve(entry));
61
+ return Array.from(new Set(resolved));
62
+ }
63
+ //# sourceMappingURL=sandboxSensitiveDenyPathsBuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandboxSensitiveDenyPathsBuild.js","sourceRoot":"","sources":["../../sources/sandbox/sandboxSensitiveDenyPathsBuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,+BAA+B,GAAG;IACpC,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,mBAAmB;IACnB,uBAAuB;IACvB,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,kBAAkB;CACrB,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAC7B,UAAU;IACV,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,kBAAkB;CACrB,CAAC;AAEF,MAAM,+BAA+B,GAAG;IACpC,mBAAmB;IACnB,oCAAoC;IACpC,2CAA2C;IAC3C,0BAA0B;CAC7B,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAC7B,kBAAkB;IAClB,sBAAsB;IACtB,wBAAwB;IACxB,4BAA4B;CAC/B,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,YAAY,CAAC,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,QAA6C,EAAE;IAC1F,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAE5D,MAAM,gBAAgB,GAClB,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9G,MAAM,kBAAkB,GACpB,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3G,OAAO,mBAAmB,CAAC;QACvB,GAAG,+BAA+B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/E,GAAG,gBAAgB;QACnB,GAAG,wBAAwB;QAC3B,GAAG,kBAAkB;KACxB,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAgB;IACzC,MAAM,QAAQ,GAAG,MAAM;SAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SACnC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sandboxSensitiveDenyPathsBuild.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandboxSensitiveDenyPathsBuild.spec.d.ts","sourceRoot":"","sources":["../../sources/sandbox/sandboxSensitiveDenyPathsBuild.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import path from "node:path";
2
+ import { describe, expect, it } from "vitest";
3
+ import { sandboxSensitiveDenyPathsBuild } from "./sandboxSensitiveDenyPathsBuild.js";
4
+ describe("sandboxSensitiveDenyPathsBuild", () => {
5
+ it("includes common and linux-specific deny paths", () => {
6
+ const result = sandboxSensitiveDenyPathsBuild({
7
+ platform: "linux",
8
+ homeDir: "/home/alice"
9
+ });
10
+ expect(result).toEqual(expect.arrayContaining([
11
+ path.resolve("/home/alice/.ssh"),
12
+ path.resolve("/home/alice/.gnupg"),
13
+ path.resolve("/home/alice/.config/gh"),
14
+ path.resolve("/home/alice/.git-credentials"),
15
+ path.resolve("/etc/ssh"),
16
+ path.resolve("/etc/sudoers"),
17
+ path.resolve("/etc/ssl/private"),
18
+ path.resolve("/root/.ssh")
19
+ ]));
20
+ });
21
+ it("includes common and macOS-specific deny paths", () => {
22
+ const result = sandboxSensitiveDenyPathsBuild({
23
+ platform: "darwin",
24
+ homeDir: "/Users/alice"
25
+ });
26
+ expect(result).toEqual(expect.arrayContaining([
27
+ path.resolve("/Users/alice/.ssh"),
28
+ path.resolve("/Users/alice/Library/Keychains"),
29
+ path.resolve("/Users/alice/Library/Application Support/com.apple.TCC"),
30
+ path.resolve("/private/etc/master.passwd"),
31
+ path.resolve("/etc/ssh")
32
+ ]));
33
+ });
34
+ it("does not include platform-specific entries for unsupported platforms", () => {
35
+ const result = sandboxSensitiveDenyPathsBuild({
36
+ platform: "win32",
37
+ homeDir: "/Users/alice"
38
+ });
39
+ expect(result).toContain(path.resolve("/Users/alice/.ssh"));
40
+ expect(result).not.toContain(path.resolve("/Users/alice/Library/Keychains"));
41
+ expect(result).not.toContain(path.resolve("/root/.ssh"));
42
+ expect(result).not.toContain(path.resolve("/private/etc/master.passwd"));
43
+ });
44
+ it("dedupes resolved paths", () => {
45
+ const result = sandboxSensitiveDenyPathsBuild({
46
+ platform: "linux",
47
+ homeDir: "/home/alice/."
48
+ });
49
+ expect(new Set(result).size).toBe(result.length);
50
+ });
51
+ });
52
+ //# sourceMappingURL=sandboxSensitiveDenyPathsBuild.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandboxSensitiveDenyPathsBuild.spec.js","sourceRoot":"","sources":["../../sources/sandbox/sandboxSensitiveDenyPathsBuild.spec.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC1C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,aAAa;SACzB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAClB,MAAM,CAAC,eAAe,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;SAC7B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC1C,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,cAAc;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAClB,MAAM,CAAC,eAAe,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,wDAAwD,CAAC;YACtE,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SAC3B,CAAC,CACL,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC5E,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC1C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,cAAc;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC1C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,eAAe;SAC3B,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: memory-document
3
+ description: Write docs like code — Minto pyramid, MECE sections, BFO ontology, Mermaid diagrams, ground truth sources. Applies to any .md file.
4
+ version: "2.0.0"
5
+ ---
6
+
7
+ ## How to Write a Document
8
+
9
+ Write docs like code. Fractal structure where each level is complete. No redundancy — reference, don't repeat. Every claim has a source.
10
+
11
+ ```mermaid
12
+ graph TD
13
+ Thesis[Thesis: 1 sentence] --> Overview[Overview: 1 paragraph]
14
+ Overview --> Diagrams[Mermaid: TD + LR]
15
+ Diagrams --> Sections[MECE Sections 1.0–7.0]
16
+ Sections --> Details[¶1, ¶2, ¶3 per section]
17
+ Sources[Ground Truth] --> Sections
18
+ Sources --> Details
19
+ ```
20
+
21
+ ## 1.0 The Stack
22
+
23
+ Six rules. Use internal names here for clarity — don't leak them into the actual doc output.
24
+
25
+ ¶1 **Minto** — top-down. Thesis → overview → sections → details. Reader gets the point before the evidence.
26
+
27
+ ¶2 **MECE** — sections don't overlap, but cover everything. 3–7 top-level sections. If you can't draw a clean boundary between two sections, merge them.
28
+
29
+ ¶3 **BFO** — separate what exists (continuants) from what happens (occurrents). TD diagrams for structure, LR diagrams for process. This isn't decoration — it forces you to find the real shape of your content.
30
+
31
+ ¶4 **Fractal** — each subsection mirrors the whole. Own thesis sentence, own diagram if needed, own numbered paragraphs. Expand only if it earns the depth.
32
+
33
+ ¶5 **DRY** — each fact once. Cross-reference with §X.Y, don't restate.
34
+
35
+ ¶6 **Ground truth** — every claim traces to a source. URL, file path, query, session ID, person. No source = no claim. See §4.0.
36
+
37
+ ## 2.0 Structure
38
+
39
+ ¶1 **Thesis** — one sentence. Specific outcome with who/what/when. Must preview the MECE sections that follow.
40
+
41
+ ¶2 **Overview** — one paragraph expanding the thesis. Introduces each major section like a function docstring listing its parameters.
42
+
43
+ ¶3 **Mermaid diagrams** — go right after the overview, before §1.0. Structure (TD) before process (LR). See §3.0.
44
+
45
+ ¶4 **Sections** — numbered 1.0, 2.0, 3.0. Subsections 1.1, 1.2. State ordering logic upfront (importance / chronology / dependency). Continuant sections get noun titles, occurrent sections get verb titles.
46
+
47
+ ¶5 **Paragraphs** — numbered ¶1, ¶2, ¶3 within each section. Order: general → specific, or problem → solution, or setup → action → result.
48
+
49
+ ¶6 **Coherence** — if thesis says "planning, execution, monitoring", the doc must have all three. No surprise sections, no missing ones.
50
+
51
+ ¶7 **Big docs** — over ~10 pages, split into linked files with proper relative paths.
52
+
53
+ ## 3.0 Mermaid Diagrams
54
+
55
+ Every doc gets at least one diagram. Complex docs need both TD and LR.
56
+
57
+ ¶1 **Headers required** — every diagram gets a bold header before the code block. Format: `**[Specific Description] ([Type] - [Direction]):**`. "Skill Package Structure (Continuant - TD)" not "System Structure".
58
+
59
+ ¶2 **Continuant (TD/TB)** — what exists. Nodes are nouns (Database, API, User). Edges are "contains", "depends on", "is part of". Use for architecture, data models, component trees.
60
+
61
+ ¶3 **Occurrent (LR)** — what happens. Nodes are verbs or states (Extract, Validate, Deploy). Edges are temporal — "then", "triggers", "flows to". Use for pipelines, workflows, request flows.
62
+
63
+ ¶4 **Participation (optional)** — how continuants participate in occurrents. User triggers Pipeline which updates Database. TD or LR depending on emphasis.
64
+
65
+ ¶5 **Sizing** — 5–12 nodes per diagram. More than that, split. Short labels (1–3 words). Label edges only when the relationship isn't obvious.
66
+
67
+ ¶6 **Placement** — primary diagrams after overview, before §1.0. Section-level diagrams inline where needed. One diagram per abstraction level — deeper sections get smaller, focused diagrams.
68
+
69
+ ¶7 **Structure first** — when showing both, continuant (TD) before occurrent (LR).
70
+
71
+ ## 4.0 Ground Truth
72
+
73
+ Every piece of information traces to its source. No exceptions.
74
+
75
+ ### Patterns
76
+
77
+ ¶1 **External** — `**Source:** [Title](URL) (accessed YYYY-MM-DD)`
78
+
79
+ ¶2 **Code** — `**Source:** path/to/file.py:123-145 (function calculate_metrics)`
80
+
81
+ ¶3 **Session** — `**Generated by:** Claude Code session abc123 by Name (YYYY-MM-DD)`
82
+
83
+ ¶4 **LLM reasoning** — `**LLM Analysis:** Based on ¶1 + ¶3` — flag synthesis explicitly, don't present it as source data.
84
+
85
+ ¶5 **Query** — `**Query:** SELECT ... (YYYY-MM-DD)` with result and date. Data changes; timestamp matters.
86
+
87
+ ¶6 **Human** — `**Expert input:** Name (Role), discussed YYYY-MM-DD`
88
+
89
+ ¶7 **Meeting** — `**Source:** Gong call gong_123456 with Client (YYYY-MM-DD)` with key takeaway.
90
+
91
+ ### Where to Put It
92
+
93
+ ¶1 **Doc-level** — primary source right after the thesis in the overview.
94
+
95
+ ¶2 **Section-level** — at top of section if the whole section comes from one source.
96
+
97
+ ¶3 **Inline** — next to specific claims: "churn is 12% (**Source:** `SELECT AVG(churn_rate)...` 2025-11-10)".
98
+
99
+ ¶4 **Mixed** — multiple sources in one paragraph, attribute each piece separately.
100
+
101
+ ### Rules
102
+
103
+ - Dates mandatory. Always YYYY-MM-DD.
104
+ - URLs must work. Use archive.org if original might vanish.
105
+ - Code refs need line numbers or function names, not just file paths.
106
+ - "Based on research" is not a source. Name it.
107
+ - Synthesis presented as fact is a violation. Flag LLM reasoning.
108
+
109
+ ## Checklist
110
+
111
+ Paste at doc end. Tick before shipping.
112
+
113
+ **Structure:**
114
+ - [ ] Thesis: one sentence previewing all sections
115
+ - [ ] Overview: one paragraph introducing each section
116
+ - [ ] Mermaid: at least one; complex docs get TD + LR
117
+ - [ ] MECE: 3–7 sections, no overlap, full coverage
118
+ - [ ] Ordering stated: ¶1 of each section explains sequence logic
119
+ - [ ] Paragraph numbering: ¶1, ¶2, ¶3 throughout
120
+ - [ ] Coherence: thesis matches actual sections
121
+
122
+ **Content:**
123
+ - [ ] DRY: each fact once, §X.Y cross-references elsewhere
124
+ - [ ] Dense: no filler words, but enough to execute
125
+ - [ ] Labels: noun titles for continuants, verb titles for occurrents
126
+
127
+ **Ground Truth:**
128
+ - [ ] Primary source in overview
129
+ - [ ] Section sources attributed
130
+ - [ ] Inline sources on specific claims
131
+ - [ ] LLM reasoning flagged
132
+ - [ ] Code refs have line numbers
133
+ - [ ] All dates present
134
+ - [ ] URLs tested
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: memory-document
3
+ description: Write docs like code — Minto pyramid, MECE sections, BFO ontology, Mermaid diagrams, ground truth sources. Applies to any .md file.
4
+ version: "2.0.0"
5
+ ---
6
+
7
+ ## How to Write a Document
8
+
9
+ Write docs like code. Fractal structure where each level is complete. No redundancy — reference, don't repeat. Every claim has a source.
10
+
11
+ ```mermaid
12
+ graph TD
13
+ Thesis[Thesis: 1 sentence] --> Overview[Overview: 1 paragraph]
14
+ Overview --> Diagrams[Mermaid: TD + LR]
15
+ Diagrams --> Sections[MECE Sections 1.0–7.0]
16
+ Sections --> Details[¶1, ¶2, ¶3 per section]
17
+ Sources[Ground Truth] --> Sections
18
+ Sources --> Details
19
+ ```
20
+
21
+ ## 1.0 The Stack
22
+
23
+ Six rules. Use internal names here for clarity — don't leak them into the actual doc output.
24
+
25
+ ¶1 **Minto** — top-down. Thesis → overview → sections → details. Reader gets the point before the evidence.
26
+
27
+ ¶2 **MECE** — sections don't overlap, but cover everything. 3–7 top-level sections. If you can't draw a clean boundary between two sections, merge them.
28
+
29
+ ¶3 **BFO** — separate what exists (continuants) from what happens (occurrents). TD diagrams for structure, LR diagrams for process. This isn't decoration — it forces you to find the real shape of your content.
30
+
31
+ ¶4 **Fractal** — each subsection mirrors the whole. Own thesis sentence, own diagram if needed, own numbered paragraphs. Expand only if it earns the depth.
32
+
33
+ ¶5 **DRY** — each fact once. Cross-reference with §X.Y, don't restate.
34
+
35
+ ¶6 **Ground truth** — every claim traces to a source. URL, file path, query, session ID, person. No source = no claim. See §4.0.
36
+
37
+ ## 2.0 Structure
38
+
39
+ ¶1 **Thesis** — one sentence. Specific outcome with who/what/when. Must preview the MECE sections that follow.
40
+
41
+ ¶2 **Overview** — one paragraph expanding the thesis. Introduces each major section like a function docstring listing its parameters.
42
+
43
+ ¶3 **Mermaid diagrams** — go right after the overview, before §1.0. Structure (TD) before process (LR). See §3.0.
44
+
45
+ ¶4 **Sections** — numbered 1.0, 2.0, 3.0. Subsections 1.1, 1.2. State ordering logic upfront (importance / chronology / dependency). Continuant sections get noun titles, occurrent sections get verb titles.
46
+
47
+ ¶5 **Paragraphs** — numbered ¶1, ¶2, ¶3 within each section. Order: general → specific, or problem → solution, or setup → action → result.
48
+
49
+ ¶6 **Coherence** — if thesis says "planning, execution, monitoring", the doc must have all three. No surprise sections, no missing ones.
50
+
51
+ ¶7 **Big docs** — over ~10 pages, split into linked files with proper relative paths.
52
+
53
+ ## 3.0 Mermaid Diagrams
54
+
55
+ Every doc gets at least one diagram. Complex docs need both TD and LR.
56
+
57
+ ¶1 **Headers required** — every diagram gets a bold header before the code block. Format: `**[Specific Description] ([Type] - [Direction]):**`. "Skill Package Structure (Continuant - TD)" not "System Structure".
58
+
59
+ ¶2 **Continuant (TD/TB)** — what exists. Nodes are nouns (Database, API, User). Edges are "contains", "depends on", "is part of". Use for architecture, data models, component trees.
60
+
61
+ ¶3 **Occurrent (LR)** — what happens. Nodes are verbs or states (Extract, Validate, Deploy). Edges are temporal — "then", "triggers", "flows to". Use for pipelines, workflows, request flows.
62
+
63
+ ¶4 **Participation (optional)** — how continuants participate in occurrents. User triggers Pipeline which updates Database. TD or LR depending on emphasis.
64
+
65
+ ¶5 **Sizing** — 5–12 nodes per diagram. More than that, split. Short labels (1–3 words). Label edges only when the relationship isn't obvious.
66
+
67
+ ¶6 **Placement** — primary diagrams after overview, before §1.0. Section-level diagrams inline where needed. One diagram per abstraction level — deeper sections get smaller, focused diagrams.
68
+
69
+ ¶7 **Structure first** — when showing both, continuant (TD) before occurrent (LR).
70
+
71
+ ## 4.0 Ground Truth
72
+
73
+ Every piece of information traces to its source. No exceptions.
74
+
75
+ ### Patterns
76
+
77
+ ¶1 **External** — `**Source:** [Title](URL) (accessed YYYY-MM-DD)`
78
+
79
+ ¶2 **Code** — `**Source:** path/to/file.py:123-145 (function calculate_metrics)`
80
+
81
+ ¶3 **Session** — `**Generated by:** Claude Code session abc123 by Name (YYYY-MM-DD)`
82
+
83
+ ¶4 **LLM reasoning** — `**LLM Analysis:** Based on ¶1 + ¶3` — flag synthesis explicitly, don't present it as source data.
84
+
85
+ ¶5 **Query** — `**Query:** SELECT ... (YYYY-MM-DD)` with result and date. Data changes; timestamp matters.
86
+
87
+ ¶6 **Human** — `**Expert input:** Name (Role), discussed YYYY-MM-DD`
88
+
89
+ ¶7 **Meeting** — `**Source:** Gong call gong_123456 with Client (YYYY-MM-DD)` with key takeaway.
90
+
91
+ ### Where to Put It
92
+
93
+ ¶1 **Doc-level** — primary source right after the thesis in the overview.
94
+
95
+ ¶2 **Section-level** — at top of section if the whole section comes from one source.
96
+
97
+ ¶3 **Inline** — next to specific claims: "churn is 12% (**Source:** `SELECT AVG(churn_rate)...` 2025-11-10)".
98
+
99
+ ¶4 **Mixed** — multiple sources in one paragraph, attribute each piece separately.
100
+
101
+ ### Rules
102
+
103
+ - Dates mandatory. Always YYYY-MM-DD.
104
+ - URLs must work. Use archive.org if original might vanish.
105
+ - Code refs need line numbers or function names, not just file paths.
106
+ - "Based on research" is not a source. Name it.
107
+ - Synthesis presented as fact is a violation. Flag LLM reasoning.
108
+
109
+ ## Checklist
110
+
111
+ Paste at doc end. Tick before shipping.
112
+
113
+ **Structure:**
114
+ - [ ] Thesis: one sentence previewing all sections
115
+ - [ ] Overview: one paragraph introducing each section
116
+ - [ ] Mermaid: at least one; complex docs get TD + LR
117
+ - [ ] MECE: 3–7 sections, no overlap, full coverage
118
+ - [ ] Ordering stated: ¶1 of each section explains sequence logic
119
+ - [ ] Paragraph numbering: ¶1, ¶2, ¶3 throughout
120
+ - [ ] Coherence: thesis matches actual sections
121
+
122
+ **Content:**
123
+ - [ ] DRY: each fact once, §X.Y cross-references elsewhere
124
+ - [ ] Dense: no filler words, but enough to execute
125
+ - [ ] Labels: noun titles for continuants, verb titles for occurrents
126
+
127
+ **Ground Truth:**
128
+ - [ ] Primary source in overview
129
+ - [ ] Section sources attributed
130
+ - [ ] Inline sources on specific claims
131
+ - [ ] LLM reasoning flagged
132
+ - [ ] Code refs have line numbers
133
+ - [ ] All dates present
134
+ - [ ] URLs tested
@@ -8,7 +8,7 @@ export declare class HistoryRepository {
8
8
  private readonly db;
9
9
  constructor(db: DatabaseSync);
10
10
  findBySessionId(sessionId: string): Promise<AgentHistoryRecord[]>;
11
- findByAgentId(agentId: string): Promise<AgentHistoryRecord[]>;
11
+ findByAgentId(agentId: string, limit?: number): Promise<AgentHistoryRecord[]>;
12
12
  /**
13
13
  * Appends a history record and returns the new auto-increment id.
14
14
  * Expects: sessionId references an existing session.
@@ -1 +1 @@
1
- {"version":3,"file":"historyRepository.d.ts","sourceRoot":"","sources":["../../sources/storage/historyRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBAEtB,EAAE,EAAE,YAAY;IAItB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAQjE,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgBnE;;;OAGG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAa5E;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAOpF;;;OAGG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAMzD"}
1
+ {"version":3,"file":"historyRepository.d.ts","sourceRoot":"","sources":["../../sources/storage/historyRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBAEtB,EAAE,EAAE,YAAY;IAItB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAQjE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAcnF;;;OAGG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAa5E;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAOpF;;;OAGG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAMzD"}
@@ -13,16 +13,16 @@ export class HistoryRepository {
13
13
  .all(sessionId);
14
14
  return rows.map((row) => historyParse(row)).filter((record) => record !== null);
15
15
  }
16
- async findByAgentId(agentId) {
17
- const rows = this.db
18
- .prepare(`
16
+ async findByAgentId(agentId, limit) {
17
+ const sql = `
19
18
  SELECT h.*
20
19
  FROM session_history h
21
20
  INNER JOIN sessions s ON s.id = h.session_id
22
21
  WHERE s.agent_id = ?
23
22
  ORDER BY s.created_at ASC, h.id ASC
24
- `)
25
- .all(agentId);
23
+ ${limit !== undefined ? `LIMIT ${limit}` : ""}
24
+ `;
25
+ const rows = this.db.prepare(sql).all(agentId);
26
26
  return rows.map((row) => historyParse(row)).filter((record) => record !== null);
27
27
  }
28
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"historyRepository.js","sourceRoot":"","sources":["../../sources/storage/historyRepository.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACT,EAAE,CAAe;IAElC,YAAY,EAAgB;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACf,OAAO,CAAC,oEAAoE,CAAC;aAC7E,GAAG,CAAC,SAAS,CAAgC,CAAC;QAEnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAgC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACf,OAAO,CACJ;;;;;;aAMH,CACA;aACA,GAAG,CAAC,OAAO,CAAgC,CAAC;QAEjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAgC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,MAA0B;QACtD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACJ;;;aAGH,CACA;aACA,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,OAAe;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACf,OAAO,CAAC,+EAA+E,CAAC;aACxF,GAAG,CAAC,SAAS,EAAE,OAAO,CAAgC,CAAC;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAgC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,SAAiB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aACd,OAAO,CAAC,oEAAoE,CAAC;aAC7E,GAAG,CAAC,SAAS,CAAuC,CAAC;QAC1D,OAAO,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;CACJ;AAED,SAAS,YAAY,CAAC,GAA8B;IAChD,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAA4B,CAAC;QAC7D,OAAO;YACH,IAAI,EAAE,GAAG,CAAC,IAAkC;YAC5C,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,GAAG,IAAI;SACY,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"historyRepository.js","sourceRoot":"","sources":["../../sources/storage/historyRepository.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACT,EAAE,CAAe;IAElC,YAAY,EAAgB;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACf,OAAO,CAAC,oEAAoE,CAAC;aAC7E,GAAG,CAAC,SAAS,CAAgC,CAAC;QAEnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAgC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,KAAc;QAC/C,MAAM,GAAG,GAAG;;;;;;gBAMJ,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;aAC9C,CAAC;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAgC,CAAC;QAE9E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAgC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,MAA0B;QACtD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACJ;;;aAGH,CACA;aACA,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,OAAe;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACf,OAAO,CAAC,+EAA+E,CAAC;aACxF,GAAG,CAAC,SAAS,EAAE,OAAO,CAAgC,CAAC;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAgC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAClH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,SAAiB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aACd,OAAO,CAAC,oEAAoE,CAAC;aAC7E,GAAG,CAAC,SAAS,CAAuC,CAAC;QAC1D,OAAO,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;CACJ;AAED,SAAS,YAAY,CAAC,GAA8B;IAChD,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAA4B,CAAC;QAC7D,OAAO;YACH,IAAI,EAAE,GAAG,CAAC,IAAkC;YAC5C,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,GAAG,IAAI;SACY,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
@@ -315,7 +315,8 @@ function processRecordClone(record) {
315
315
  allowedDomains: [...record.allowedDomains],
316
316
  permissions: {
317
317
  ...record.permissions,
318
- writeDirs: [...record.permissions.writeDirs]
318
+ writeDirs: [...record.permissions.writeDirs],
319
+ readDirs: [...(record.permissions.readDirs ?? [])]
319
320
  },
320
321
  owner: record.owner ? { ...record.owner } : null
321
322
  };
@@ -354,15 +355,20 @@ function permissionsParse(raw) {
354
355
  if (typeof parsed.workingDir !== "string" || !Array.isArray(parsed.writeDirs)) {
355
356
  throw new Error("Invalid permissions");
356
357
  }
358
+ const readDirs = Array.isArray(parsed.readDirs)
359
+ ? parsed.readDirs.filter((entry) => typeof entry === "string")
360
+ : [];
357
361
  return {
358
362
  workingDir: parsed.workingDir,
359
- writeDirs: parsed.writeDirs.filter((entry) => typeof entry === "string")
363
+ writeDirs: parsed.writeDirs.filter((entry) => typeof entry === "string"),
364
+ readDirs
360
365
  };
361
366
  }
362
367
  catch {
363
368
  return {
364
369
  workingDir: "/",
365
- writeDirs: []
370
+ writeDirs: [],
371
+ readDirs: []
366
372
  };
367
373
  }
368
374
  }