@te-river/opencode-team-mode 1.5.5 → 1.5.7

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 (163) hide show
  1. package/README.md +544 -634
  2. package/README.zh-CN.md +511 -576
  3. package/dist/agents.d.ts +6 -1
  4. package/dist/agents.d.ts.map +1 -1
  5. package/dist/agents.js +113 -533
  6. package/dist/agents.js.map +1 -1
  7. package/dist/approval-gate.d.ts +16 -0
  8. package/dist/approval-gate.d.ts.map +1 -1
  9. package/dist/approval-gate.js +8 -1
  10. package/dist/approval-gate.js.map +1 -1
  11. package/dist/blackboard.d.ts.map +1 -1
  12. package/dist/blackboard.js +3 -2
  13. package/dist/blackboard.js.map +1 -1
  14. package/dist/commands.d.ts.map +1 -1
  15. package/dist/commands.js +7 -6
  16. package/dist/commands.js.map +1 -1
  17. package/dist/envprotect/bash-classify.d.ts +42 -0
  18. package/dist/envprotect/bash-classify.d.ts.map +1 -0
  19. package/dist/envprotect/bash-classify.js +221 -0
  20. package/dist/envprotect/bash-classify.js.map +1 -0
  21. package/dist/envprotect/gate-predicates.d.ts +57 -0
  22. package/dist/envprotect/gate-predicates.d.ts.map +1 -0
  23. package/dist/envprotect/gate-predicates.js +174 -0
  24. package/dist/envprotect/gate-predicates.js.map +1 -0
  25. package/dist/envprotect/hook.d.ts +45 -0
  26. package/dist/envprotect/hook.d.ts.map +1 -0
  27. package/dist/envprotect/hook.js +158 -0
  28. package/dist/envprotect/hook.js.map +1 -0
  29. package/dist/envprotect/path-classify.d.ts +16 -0
  30. package/dist/envprotect/path-classify.d.ts.map +1 -0
  31. package/dist/envprotect/path-classify.js +72 -0
  32. package/dist/envprotect/path-classify.js.map +1 -0
  33. package/dist/envprotect/patterns.d.ts +77 -0
  34. package/dist/envprotect/patterns.d.ts.map +1 -0
  35. package/dist/envprotect/patterns.js +182 -0
  36. package/dist/envprotect/patterns.js.map +1 -0
  37. package/dist/envprotect.d.ts +19 -217
  38. package/dist/envprotect.d.ts.map +1 -1
  39. package/dist/envprotect.js +18 -803
  40. package/dist/envprotect.js.map +1 -1
  41. package/dist/fs-safe.d.ts +16 -0
  42. package/dist/fs-safe.d.ts.map +1 -0
  43. package/dist/fs-safe.js +56 -0
  44. package/dist/fs-safe.js.map +1 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +22 -6
  47. package/dist/index.js.map +1 -1
  48. package/dist/prompts/lead.d.ts +7 -0
  49. package/dist/prompts/lead.d.ts.map +1 -0
  50. package/dist/prompts/lead.js +233 -0
  51. package/dist/prompts/lead.js.map +1 -0
  52. package/dist/prompts/shared.d.ts +8 -0
  53. package/dist/prompts/shared.d.ts.map +1 -0
  54. package/dist/prompts/shared.js +120 -0
  55. package/dist/prompts/shared.js.map +1 -0
  56. package/dist/prompts/specialists.d.ts +12 -0
  57. package/dist/prompts/specialists.d.ts.map +1 -0
  58. package/dist/prompts/specialists.js +241 -0
  59. package/dist/prompts/specialists.js.map +1 -0
  60. package/dist/shell-text.d.ts +14 -0
  61. package/dist/shell-text.d.ts.map +1 -0
  62. package/dist/shell-text.js +16 -0
  63. package/dist/shell-text.js.map +1 -0
  64. package/dist/tm/args-schema.d.ts +42 -0
  65. package/dist/tm/args-schema.d.ts.map +1 -0
  66. package/dist/tm/args-schema.js +213 -0
  67. package/dist/tm/args-schema.js.map +1 -0
  68. package/dist/tm/browser.d.ts +52 -0
  69. package/dist/tm/browser.d.ts.map +1 -0
  70. package/dist/tm/browser.js +361 -0
  71. package/dist/tm/browser.js.map +1 -0
  72. package/dist/tm/client-unwrap.d.ts +38 -0
  73. package/dist/tm/client-unwrap.d.ts.map +1 -0
  74. package/dist/tm/client-unwrap.js +113 -0
  75. package/dist/tm/client-unwrap.js.map +1 -0
  76. package/dist/tm/config.d.ts +55 -19
  77. package/dist/tm/config.d.ts.map +1 -1
  78. package/dist/tm/config.js +74 -19
  79. package/dist/tm/config.js.map +1 -1
  80. package/dist/tm/guard.d.ts.map +1 -1
  81. package/dist/tm/guard.js +4 -7
  82. package/dist/tm/guard.js.map +1 -1
  83. package/dist/tm/index.d.ts +24 -7
  84. package/dist/tm/index.d.ts.map +1 -1
  85. package/dist/tm/index.js +111 -21
  86. package/dist/tm/index.js.map +1 -1
  87. package/dist/tm/memory.d.ts +88 -0
  88. package/dist/tm/memory.d.ts.map +1 -0
  89. package/dist/tm/memory.js +360 -0
  90. package/dist/tm/memory.js.map +1 -0
  91. package/dist/tm/pipelines.d.ts +58 -0
  92. package/dist/tm/pipelines.d.ts.map +1 -0
  93. package/dist/tm/pipelines.js +308 -0
  94. package/dist/tm/pipelines.js.map +1 -0
  95. package/dist/tm/preview.d.ts +6 -1
  96. package/dist/tm/preview.d.ts.map +1 -1
  97. package/dist/tm/preview.js +63 -13
  98. package/dist/tm/preview.js.map +1 -1
  99. package/dist/tm/ptc/budgets.d.ts +38 -0
  100. package/dist/tm/ptc/budgets.d.ts.map +1 -0
  101. package/dist/tm/ptc/budgets.js +59 -0
  102. package/dist/tm/ptc/budgets.js.map +1 -0
  103. package/dist/tm/ptc/contract.d.ts +131 -0
  104. package/dist/tm/ptc/contract.d.ts.map +1 -0
  105. package/dist/tm/ptc/contract.js +47 -0
  106. package/dist/tm/ptc/contract.js.map +1 -0
  107. package/dist/tm/ptc/driver.d.ts +37 -0
  108. package/dist/tm/ptc/driver.d.ts.map +1 -0
  109. package/dist/tm/ptc/driver.js +181 -0
  110. package/dist/tm/ptc/driver.js.map +1 -0
  111. package/dist/tm/ptc/engines.d.ts +32 -0
  112. package/dist/tm/ptc/engines.d.ts.map +1 -0
  113. package/dist/tm/ptc/engines.js +201 -0
  114. package/dist/tm/ptc/engines.js.map +1 -0
  115. package/dist/tm/ptc/gate.d.ts +28 -0
  116. package/dist/tm/ptc/gate.d.ts.map +1 -0
  117. package/dist/tm/ptc/gate.js +130 -0
  118. package/dist/tm/ptc/gate.js.map +1 -0
  119. package/dist/tm/ptc/index.d.ts +19 -0
  120. package/dist/tm/ptc/index.d.ts.map +1 -0
  121. package/dist/tm/ptc/index.js +15 -0
  122. package/dist/tm/ptc/index.js.map +1 -0
  123. package/dist/tm/ptc/pscan.d.ts +11 -0
  124. package/dist/tm/ptc/pscan.d.ts.map +1 -0
  125. package/dist/tm/ptc/pscan.js +27 -0
  126. package/dist/tm/ptc/pscan.js.map +1 -0
  127. package/dist/tm/ptc/summary.d.ts +17 -0
  128. package/dist/tm/ptc/summary.d.ts.map +1 -0
  129. package/dist/tm/ptc/summary.js +112 -0
  130. package/dist/tm/ptc/summary.js.map +1 -0
  131. package/dist/tm/ptc/tool.d.ts +35 -0
  132. package/dist/tm/ptc/tool.d.ts.map +1 -0
  133. package/dist/tm/ptc/tool.js +136 -0
  134. package/dist/tm/ptc/tool.js.map +1 -0
  135. package/dist/tm/ptc.d.ts +45 -26
  136. package/dist/tm/ptc.d.ts.map +1 -1
  137. package/dist/tm/ptc.js +71 -45
  138. package/dist/tm/ptc.js.map +1 -1
  139. package/dist/tm/result.d.ts +34 -0
  140. package/dist/tm/result.d.ts.map +1 -0
  141. package/dist/tm/result.js +87 -0
  142. package/dist/tm/result.js.map +1 -0
  143. package/dist/tm/search.d.ts +58 -0
  144. package/dist/tm/search.d.ts.map +1 -0
  145. package/dist/tm/search.js +229 -0
  146. package/dist/tm/search.js.map +1 -0
  147. package/dist/tm/shell-bridge.d.ts +22 -0
  148. package/dist/tm/shell-bridge.d.ts.map +1 -0
  149. package/dist/tm/shell-bridge.js +116 -0
  150. package/dist/tm/shell-bridge.js.map +1 -0
  151. package/dist/tm/store.d.ts.map +1 -1
  152. package/dist/tm/store.js +2 -1
  153. package/dist/tm/store.js.map +1 -1
  154. package/dist/tm/tools.d.ts +13 -71
  155. package/dist/tm/tools.d.ts.map +1 -1
  156. package/dist/tm/tools.js +22 -656
  157. package/dist/tm/tools.js.map +1 -1
  158. package/dist/tm/webfetch.d.ts +109 -0
  159. package/dist/tm/webfetch.d.ts.map +1 -0
  160. package/dist/tm/webfetch.js +305 -0
  161. package/dist/tm/webfetch.js.map +1 -0
  162. package/docs/installation.md +201 -0
  163. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tm/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EACL,cAAc,EACd,qBAAqB,GAEtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACpJ,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAuC,MAAM,aAAa,CAAA;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAoBjD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAkB,EAClB,OAA6B,EAAE;IAE/B,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACxC,MAAM,SAAS,GACb,OAAO,KAAK,EAAE,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAChE,CAAC,CAAC,KAAK,CAAC,SAAS;QACjB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACtC,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC7C,uEAAuE;IACvE,sEAAsE;IACtE,uEAAuE;IACvE,sEAAsE;IACtE,sEAAsE;IACtE,qEAAqE;IACrE,iCAAiC;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpD,MAAM,SAAS,GACb,MAAM,KAAK,IAAI;QACf,CAAC,GAAG,EAAE;YACJ,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,SAAS,GAAG,SAAS;QACzB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAgB,EAAE,eAAe,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAA;IAC3C,sEAAsE;IACtE,sEAAsE;IACtE,MAAM,iBAAiB,GAAG,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IAChH,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC;QACzB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;QACtE,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;QACtE,KAAK;QACL,OAAO,EAAE,GAAG,CAAC,iBAAiB;KAC/B,CAAC,CAAA;IACF,2EAA2E;IAC3E,sEAAsE;IACtE,KAAK,CAAC,YAAY,EAAE,CAAA;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IACzE,sEAAsE;IACtE,oEAAoE;IACpE,sEAAsE;IACtE,uEAAuE;IACvE,kEAAkE;IAClE,2BAA2B;IAC3B,8DAA8D;IAC9D,MAAM,WAAW,GAAY,KAAK,EAAE,CAAC,IAAK,UAAkB,CAAC,CAAC,IAAK,UAAkB,CAAC,GAAG,EAAE,CAAC,CAAA;IAC5F,MAAM,IAAI,GAAG;QACX,MAAM,EAAE,KAAK,EAAE,MAAM;QACrB,CAAC,EAAE,WAAW;QACd,GAAG;QACH,KAAK;QACL,KAAK;QACL,OAAO;QACP,WAAW;QACX,QAAQ;QACR,IAAI;QACJ,KAAK;KACN,CAAA;IACD,wEAAwE;IACxE,wEAAwE;IACxE,iEAAiE;IACjE,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACjD,sEAAsE;IACtE,yEAAyE;IACzE,2EAA2E;IAC3E,yDAAyD;IACzD,MAAM,YAAY,GAAG,MAAM,uBAAuB,EAAE,CAAA;IACpD,KAAK,CAAC,WAAW,GAAG,mBAAmB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA;IAC/E,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;IACtE,iEAAiE;IACjE,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,qBAAqB,EAAE,EAAE,CAAC,CAAA;IAC5F,yEAAyE;IACzE,0EAA0E;IAC1E,qDAAqD;IACrD,MAAM,UAAU,GAAG,MAAM,qBAAqB,EAAE,CAAA;IAChD,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC;QAClC,SAAS;QACT,UAAU,EAAE,iBAAiB;QAC7B,SAAS;QACT,GAAG;QACH,SAAS;QACT,IAAI,EAAE,UAAU;KACjB,CAAC,CAAA;IACF,wEAAwE;IACxE,uEAAuE;IACvE,wEAAwE;IACxE,yDAAyD;IACzD,MAAM,WAAW,GAAG,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,sBAAsB,EAAE,EAAE,CAAC,CAAA;IAChG,KAAK,CAAC,UAAU,GAAG,WAAW,CAAA;IAC9B,sEAAsE;IACtE,kEAAkE;IAClE,sEAAsE;IACtE,qEAAqE;IACrE,sEAAsE;IACtE,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,MAAM;QACrB,CAAC,EAAE,WAAW;QACd,GAAG;QACH,KAAK;QACL,KAAK;QACL,OAAO;QACP,WAAW;QACX,QAAQ;QACR,IAAI;QACJ,KAAK;QACL,UAAU,EAAE,MAAM;KACnB,CAAA;IACD,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,eAAe,CAAC;QAC9B,GAAG;QACH,KAAK;QACL,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,GAAG,EAAE,EAAE,SAAS,EAAE;QAClB,WAAW;QACX,IAAI,EAAE,MAAM,kBAAkB,EAAE;QAChC,SAAS,EAAE,YAAY;KACxB,CAAC,CAAA;IACF,KAAK,CAAC,UAAU,GAAG,OAAO,CAAA;IAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAA;AAC9F,CAAC;AAED,oFAAoF;AAEpF,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,aAAa,EACb,OAAO,EACP,kBAAkB,GACnB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,GACZ,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,GACZ,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACrG,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE3E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,UAAU,GACX,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAEpB,mCAAmC;AACnC,yEAAyE;AACzE,sEAAsE;AACtE,uEAAuE;AACvE,uDAAuD;AACvD,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,EACN,YAAY,EACZ,WAAW,GACZ,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * tm_memory — project/global memory mirror (Qoder-inspired, re-implemented
3
+ * from mechanism analysis; no code reused).
4
+ *
5
+ * Design: memories are plain Markdown files with a small YAML-ish
6
+ * frontmatter (title / usage_scenario / keywords) — git-diffable, human-
7
+ * editable, injectable into context without any database. The store lives
8
+ * under the git-aware base (<repo>/.git/opencode-team/memories/ or tmpdir
9
+ * fallback), mirroring the run-store philosophy: never pollute the working
10
+ * tree, TTL-free (memories are long-lived by design; forget is explicit).
11
+ *
12
+ * Layout:
13
+ * GLOBAL (user-level, follows you across projects):
14
+ * <globalRoot>/<category>/<title>.md — default ~/.opencode-team/memories/global/
15
+ * PROJECT (repo-level, per checkout):
16
+ * <storeBase>/memories/projects/<project-slug>/<category>/<title>.md
17
+ *
18
+ * The project slug is derived from the workspace path (drive letter + path
19
+ * segments dashed, lowercased) so two checkouts never share a memory set.
20
+ * Injection is PULL-based for now: agents search via this tool; the lead
21
+ * distills relevant memories into dispatches (see SHARED_RULES).
22
+ */
23
+ import type { ToolResult } from "../types.js";
24
+ import { type TmConfig } from "./config.js";
25
+ import type { TmPipelines } from "./pipelines.js";
26
+ /** Hard caps — a memory that cannot fit a context budget is a doc, not a memory. */
27
+ export declare const MEMORY_TITLE_MAX = 120;
28
+ export declare const MEMORY_CONTENT_MAX = 4000;
29
+ export declare const MEMORY_SEARCH_RESULTS = 5;
30
+ export declare const MEMORY_EXCERPT_MAX = 600;
31
+ /** Seeded category taxonomy (Qoder's seven, reused as the starting point). */
32
+ export declare const MEMORY_CATEGORIES: readonly string[];
33
+ /** Path → project slug ("D:\Github\App" -> "d-github-app"). */
34
+ export declare function projectSlug(directory: string): string;
35
+ /** Title → safe file stem (collapsed dashes, capped). */
36
+ export declare function titleSlug(title: string): string;
37
+ export declare function renderMemoryMarkdown(m: {
38
+ title: string;
39
+ usageScenario: string[];
40
+ keywords: string[];
41
+ content: string;
42
+ }): string;
43
+ /** Parse a memory file; null when the file is not ours (foreign md). */
44
+ export declare function parseMemoryMarkdown(raw: string, filePath: string): {
45
+ title: string;
46
+ usageScenario: string[];
47
+ keywords: string[];
48
+ content: string;
49
+ filePath: string;
50
+ category: string;
51
+ } | null;
52
+ export interface MemoryHit {
53
+ title: string;
54
+ category: string;
55
+ scope: "project" | "global";
56
+ filePath: string;
57
+ keywords: string[];
58
+ usageScenario: string[];
59
+ content: string;
60
+ score: number;
61
+ }
62
+ /**
63
+ * Substring scoring — no embeddings, deterministic: title ×5, keywords ×4,
64
+ * usage_scenario ×3, category ×2, body ×1 (query tokenized on whitespace).
65
+ */
66
+ export declare function scoreMemory(m: {
67
+ title: string;
68
+ keywords: string[];
69
+ usageScenario: string[];
70
+ category: string;
71
+ content: string;
72
+ }, query: string): number;
73
+ export declare function buildTmMemoryTool(deps: {
74
+ storeBase: string;
75
+ /** User-level global memory dir (default ~/.opencode-team/memories/global;
76
+ * TM_MEMORY_GLOBAL_DIR override). Lives OUTSIDE any repo so "global"
77
+ * really follows the user across projects. */
78
+ globalRoot: string;
79
+ directory: string;
80
+ cfg: TmConfig;
81
+ pipelines: TmPipelines;
82
+ args?: Record<string, unknown>;
83
+ }): {
84
+ description: string;
85
+ args: Record<string, unknown>;
86
+ execute: (rawArgs: Record<string, unknown>, ctx: unknown) => Promise<ToolResult>;
87
+ };
88
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/tm/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,MAAM,CAAA;AACnC,eAAO,MAAM,kBAAkB,OAAO,CAAA;AACtC,eAAO,MAAM,qBAAqB,IAAI,CAAA;AACtC,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAQ9C,CAAA;AAID,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAUrD;AAED,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/C;AA0BD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,MAAM,CAST;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAClE,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,GAAG,IAAI,CA8BP;AAID,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AA2BD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACpG,KAAK,EAAE,MAAM,GACZ,MAAM,CAiBR;AAqCD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB;;mDAE+C;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,QAAQ,CAAA;IACb,SAAS,EAAE,WAAW,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,GAAG;IACF,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;CACjF,CA6HA"}
@@ -0,0 +1,360 @@
1
+ /**
2
+ * tm_memory — project/global memory mirror (Qoder-inspired, re-implemented
3
+ * from mechanism analysis; no code reused).
4
+ *
5
+ * Design: memories are plain Markdown files with a small YAML-ish
6
+ * frontmatter (title / usage_scenario / keywords) — git-diffable, human-
7
+ * editable, injectable into context without any database. The store lives
8
+ * under the git-aware base (<repo>/.git/opencode-team/memories/ or tmpdir
9
+ * fallback), mirroring the run-store philosophy: never pollute the working
10
+ * tree, TTL-free (memories are long-lived by design; forget is explicit).
11
+ *
12
+ * Layout:
13
+ * GLOBAL (user-level, follows you across projects):
14
+ * <globalRoot>/<category>/<title>.md — default ~/.opencode-team/memories/global/
15
+ * PROJECT (repo-level, per checkout):
16
+ * <storeBase>/memories/projects/<project-slug>/<category>/<title>.md
17
+ *
18
+ * The project slug is derived from the workspace path (drive letter + path
19
+ * segments dashed, lowercased) so two checkouts never share a memory set.
20
+ * Injection is PULL-based for now: agents search via this tool; the lead
21
+ * distills relevant memories into dispatches (see SHARED_RULES).
22
+ */
23
+ import * as fs from "node:fs";
24
+ import * as path from "node:path";
25
+ import { shorten } from "./config.js";
26
+ import { tmError, toToolResult } from "./result.js";
27
+ import { rmForceSafe } from "../fs-safe.js";
28
+ /** Hard caps — a memory that cannot fit a context budget is a doc, not a memory. */
29
+ export const MEMORY_TITLE_MAX = 120;
30
+ export const MEMORY_CONTENT_MAX = 4000;
31
+ export const MEMORY_SEARCH_RESULTS = 5;
32
+ export const MEMORY_EXCERPT_MAX = 600;
33
+ /** Seeded category taxonomy (Qoder's seven, reused as the starting point). */
34
+ export const MEMORY_CATEGORIES = [
35
+ "project_introduction",
36
+ "project_tech_stack",
37
+ "project_build_configuration",
38
+ "project_dependency_configuration",
39
+ "project_environment_configuration",
40
+ "development_code_specification",
41
+ "task_summary_experience",
42
+ ];
43
+ // ---------- slugs + paths ----------------------------------------------------
44
+ /** Path → project slug ("D:\Github\App" -> "d-github-app"). */
45
+ export function projectSlug(directory) {
46
+ const raw = String(directory ?? "").trim().toLowerCase();
47
+ const slug = raw
48
+ .split(/[\\/]+/)
49
+ .filter(Boolean)
50
+ .join("-")
51
+ .replace(/[^a-z0-9.-]+/g, "-")
52
+ .replace(/-{2,}/g, "-")
53
+ .replace(/^-|-$/g, "");
54
+ return slug || "default";
55
+ }
56
+ /** Title → safe file stem (collapsed dashes, capped). */
57
+ export function titleSlug(title) {
58
+ return String(title ?? "")
59
+ .toLowerCase()
60
+ .replace(/[^a-z0-9\u4e00-\u9fff]+/g, "-")
61
+ .replace(/-{2,}/g, "-")
62
+ .replace(/^-|-$/g, "")
63
+ .slice(0, 80) || "untitled";
64
+ }
65
+ function categorySlug(category) {
66
+ return String(category ?? "")
67
+ .trim()
68
+ .toLowerCase()
69
+ .replace(/[^a-z0-9_-]+/g, "_")
70
+ .replace(/^_+|_+$/g, "") || "notes";
71
+ }
72
+ function projectRoot(storeBase, directory) {
73
+ return path.join(storeBase, "memories", "projects", projectSlug(directory));
74
+ }
75
+ function scopeRoot(globalRoot, storeBase, scope, directory) {
76
+ return scope === "global"
77
+ ? globalRoot
78
+ : projectRoot(storeBase, directory);
79
+ }
80
+ // ---------- frontmatter (minimal writer/parser, no YAML dep) ------------------
81
+ function yamlList(items) {
82
+ return items.map((s) => ` - ${JSON.stringify(s)}`).join("\n");
83
+ }
84
+ export function renderMemoryMarkdown(m) {
85
+ const parts = [
86
+ "---",
87
+ `title: ${JSON.stringify(m.title)}`,
88
+ ];
89
+ if (m.usageScenario.length)
90
+ parts.push("usage_scenario:", yamlList(m.usageScenario));
91
+ if (m.keywords.length)
92
+ parts.push("keywords:", yamlList(m.keywords));
93
+ parts.push("---", "", m.content.trim(), "");
94
+ return parts.join("\n");
95
+ }
96
+ /** Parse a memory file; null when the file is not ours (foreign md). */
97
+ export function parseMemoryMarkdown(raw, filePath) {
98
+ const text = String(raw ?? "");
99
+ if (!text.startsWith("---"))
100
+ return null;
101
+ const end = text.indexOf("\n---", 3);
102
+ if (end === -1)
103
+ return null;
104
+ const head = text.slice(3, end);
105
+ const body = text.slice(text.indexOf("\n", end + 1) + 1).trim();
106
+ let title = "";
107
+ let section = "";
108
+ const usageScenario = [];
109
+ const keywords = [];
110
+ for (const line of head.split(/\r?\n/)) {
111
+ if (/^\s+-\s/.test(line) && section) {
112
+ let v = line.trim().slice(2).trim();
113
+ try {
114
+ v = String(JSON.parse(v));
115
+ }
116
+ catch { /* keep raw */ }
117
+ if (section === "usage_scenario" && v)
118
+ usageScenario.push(v);
119
+ if (section === "keywords" && v)
120
+ keywords.push(v);
121
+ continue;
122
+ }
123
+ const kv = /^([a-z_]+)\s*:\s*(.*)$/.exec(line);
124
+ if (!kv)
125
+ continue;
126
+ const [, key, rest] = kv;
127
+ section = key === "usage_scenario" || key === "keywords" ? key : "";
128
+ if (key === "title") {
129
+ try {
130
+ title = String(JSON.parse(rest));
131
+ }
132
+ catch {
133
+ title = rest.replace(/^"|"$/g, "");
134
+ }
135
+ }
136
+ }
137
+ if (!title)
138
+ return null;
139
+ const category = path.basename(path.dirname(filePath));
140
+ return { title, usageScenario, keywords, content: body, filePath, category };
141
+ }
142
+ function walkMemories(dir, out) {
143
+ let entries;
144
+ try {
145
+ entries = fs.readdirSync(dir, { withFileTypes: true });
146
+ }
147
+ catch {
148
+ return;
149
+ }
150
+ for (const e of entries) {
151
+ const p = path.join(dir, e.name);
152
+ if (e.isDirectory())
153
+ walkMemories(p, out);
154
+ else if (e.isFile() && e.name.endsWith(".md"))
155
+ out.push(p);
156
+ }
157
+ }
158
+ function listMemoryFiles(globalRoot, storeBase, directory, scope) {
159
+ const files = [];
160
+ if (!scope || scope === "project")
161
+ walkMemories(scopeRoot(globalRoot, storeBase, "project", directory), files);
162
+ if (!scope || scope === "global")
163
+ walkMemories(scopeRoot(globalRoot, storeBase, "global", directory), files);
164
+ return files;
165
+ }
166
+ function scopeOf(globalRoot, filePath) {
167
+ return filePath.startsWith(globalRoot + path.sep) ? "global" : "project";
168
+ }
169
+ /**
170
+ * Substring scoring — no embeddings, deterministic: title ×5, keywords ×4,
171
+ * usage_scenario ×3, category ×2, body ×1 (query tokenized on whitespace).
172
+ */
173
+ export function scoreMemory(m, query) {
174
+ const tokens = String(query ?? "").toLowerCase().split(/\s+/).filter(Boolean);
175
+ if (!tokens.length)
176
+ return 0;
177
+ const title = m.title.toLowerCase();
178
+ const keywords = m.keywords.join("\n").toLowerCase();
179
+ const scenarios = m.usageScenario.join("\n").toLowerCase();
180
+ const category = m.category.toLowerCase();
181
+ const content = m.content.toLowerCase();
182
+ let score = 0;
183
+ for (const t of tokens) {
184
+ if (title.includes(t))
185
+ score += 5;
186
+ if (keywords.includes(t))
187
+ score += 4;
188
+ if (scenarios.includes(t))
189
+ score += 3;
190
+ if (category.includes(t))
191
+ score += 2;
192
+ if (content.includes(t))
193
+ score += 1;
194
+ }
195
+ return score;
196
+ }
197
+ function readAllMemories(globalRoot, storeBase, directory, scope) {
198
+ const hits = [];
199
+ for (const file of listMemoryFiles(globalRoot, storeBase, directory, scope)) {
200
+ try {
201
+ const m = parseMemoryMarkdown(fs.readFileSync(file, "utf8"), file);
202
+ if (!m)
203
+ continue;
204
+ hits.push({
205
+ title: m.title,
206
+ category: m.category,
207
+ scope: scopeOf(globalRoot, file),
208
+ filePath: file,
209
+ keywords: m.keywords,
210
+ usageScenario: m.usageScenario,
211
+ content: m.content,
212
+ score: 0,
213
+ });
214
+ }
215
+ catch {
216
+ /* unreadable foreign file — skip */
217
+ }
218
+ }
219
+ return hits;
220
+ }
221
+ // ---------- tool ----------------------------------------------------------------
222
+ function asStringArray(v) {
223
+ if (Array.isArray(v))
224
+ return v.map((x) => String(x).trim()).filter(Boolean);
225
+ if (typeof v === "string")
226
+ return v.split(/[,;]/).map((s) => s.trim()).filter(Boolean);
227
+ return [];
228
+ }
229
+ function normalizeScope(v) {
230
+ return String(v ?? "").trim().toLowerCase() === "global" ? "global" : "project";
231
+ }
232
+ export function buildTmMemoryTool(deps) {
233
+ const { storeBase, globalRoot, directory, pipelines } = deps;
234
+ const tool = "tm_memory";
235
+ const traj = (e) => pipelines.store.appendTrajectory({ tool, ...e });
236
+ const execute = async (rawArgs) => {
237
+ try {
238
+ const args = rawArgs ?? {};
239
+ const action = String(args.action ?? "").trim();
240
+ if (action === "add") {
241
+ const title = String(args.title ?? "").trim();
242
+ const content = String(args.content ?? "").trim();
243
+ if (!title)
244
+ return tmError(tool, "args", "缺少 title 参数");
245
+ if (!content)
246
+ return tmError(tool, "args", "缺少 content 参数(一段浓缩事实,不要长文)");
247
+ if (content.length > MEMORY_CONTENT_MAX) {
248
+ return tmError(tool, "args", `content 超过 ${MEMORY_CONTENT_MAX} 字符上限(实际 ${content.length})——记忆应当精炼`);
249
+ }
250
+ const scope = normalizeScope(args.scope);
251
+ const category = categorySlug(String(args.category ?? "notes"));
252
+ const usageScenario = asStringArray(args.usage_scenario).slice(0, 8);
253
+ const keywords = asStringArray(args.keywords).slice(0, 10);
254
+ const file = path.join(scopeRoot(globalRoot, storeBase, scope, directory), category, `${titleSlug(title)}.md`);
255
+ const existed = fs.existsSync(file);
256
+ fs.mkdirSync(path.dirname(file), { recursive: true });
257
+ const md = renderMemoryMarkdown({
258
+ title: title.slice(0, MEMORY_TITLE_MAX),
259
+ usageScenario,
260
+ keywords,
261
+ content,
262
+ });
263
+ fs.writeFileSync(file, md, "utf8");
264
+ traj({ step_id: "memory", event: "add", scope, category, title: shorten(title, 80) });
265
+ return `记忆已${existed ? "更新" : "保存"}(${scope}):${file}\n分类: ${category}\n标题: ${shorten(title, 80)}\n注入时机: 该项目的 lead/researcher 通过 tm_memory search 检索后进入派发上下文。`;
266
+ }
267
+ if (action === "search") {
268
+ const query = String(args.query ?? "").trim();
269
+ if (!query)
270
+ return tmError(tool, "args", "缺少 query 参数");
271
+ const scope = args.scope ? normalizeScope(args.scope) : undefined;
272
+ const all = readAllMemories(globalRoot, storeBase, directory, scope);
273
+ for (const m of all)
274
+ m.score = scoreMemory(m, query);
275
+ const top = all
276
+ .filter((m) => m.score > 0)
277
+ .sort((a, b) => b.score - a.score || a.title.localeCompare(b.title))
278
+ .slice(0, MEMORY_SEARCH_RESULTS);
279
+ traj({ step_id: "memory", event: "search", query: shorten(query, 80), hits: top.length });
280
+ if (!top.length)
281
+ return `无匹配记忆(query: ${shorten(query, 80)})。可用 tm_memory list 查看 existing 记忆。`;
282
+ const blocks = top.map((m) => [
283
+ `[score ${m.score}] ${m.title} (${m.scope}/${m.category})`,
284
+ m.keywords.length ? `keywords: ${m.keywords.join(", ")}` : "",
285
+ `--- 内容 ---`,
286
+ shorten(m.content, MEMORY_EXCERPT_MAX),
287
+ ].filter(Boolean).join("\n"));
288
+ return `命中 ${top.length}/${all.length} 条记忆(按相关度,取前 ${MEMORY_SEARCH_RESULTS}):\n\n${blocks.join("\n\n")}`;
289
+ }
290
+ if (action === "list") {
291
+ const scope = args.scope ? normalizeScope(args.scope) : undefined;
292
+ const all = readAllMemories(globalRoot, storeBase, directory, scope);
293
+ traj({ step_id: "memory", event: "list", count: all.length });
294
+ if (!all.length)
295
+ return "当前没有任何记忆。用 tm_memory add 保存第一条。";
296
+ const byScope = new Map();
297
+ for (const m of all) {
298
+ const key = `${m.scope}/${m.category}`;
299
+ byScope.set(key, [...(byScope.get(key) ?? []), m.title]);
300
+ }
301
+ const lines = [`共 ${all.length} 条记忆:`];
302
+ for (const [key, titles] of [...byScope.entries()].sort()) {
303
+ lines.push(`${key}:`);
304
+ for (const t of titles)
305
+ lines.push(` - ${t}`);
306
+ }
307
+ lines.push("", "检索用 tm_memory search;删除用 tm_memory forget。");
308
+ return lines.join("\n");
309
+ }
310
+ if (action === "forget") {
311
+ const title = String(args.title ?? "").trim();
312
+ if (!title)
313
+ return tmError(tool, "args", "缺少 title 参数");
314
+ const stem = titleSlug(title);
315
+ const scope = args.scope ? normalizeScope(args.scope) : undefined;
316
+ const files = listMemoryFiles(globalRoot, storeBase, directory, scope).filter((f) => {
317
+ if (path.basename(f, ".md") !== stem)
318
+ return false;
319
+ // slugs collide ("API Rate Limits" / "API rate-limits") — when the
320
+ // file carries a parsable frontmatter title, it must match the
321
+ // request before deletion; unparsable (hand-edited) files fall
322
+ // back to slug-only matching
323
+ const m = parseMemoryMarkdown(fs.readFileSync(f, "utf8"), f);
324
+ return m === null || m.title.trim().toLowerCase() === title.toLowerCase();
325
+ });
326
+ if (!files.length)
327
+ return tmError(tool, "args", `没有找到标题为 "${shorten(title, 80)}" 的记忆(可用 tm_memory list 确认)`);
328
+ for (const f of files)
329
+ rmForceSafe(f);
330
+ traj({ step_id: "memory", event: "forget", count: files.length, title: shorten(title, 80) });
331
+ return `已删除 ${files.length} 条记忆:${files.join(", ")}`;
332
+ }
333
+ return tmError(tool, "args", `未知 action "${shorten(action, 30)}"——可用: add | search | list | forget`);
334
+ }
335
+ catch (err) {
336
+ return tmError(tool, "execute", String(err?.message ?? err ?? "memory 操作失败"));
337
+ }
338
+ };
339
+ const DESCRIPTION = `Project/global memory store (Markdown files with frontmatter — persistent across conversations). Actions: add | search | list | forget.
340
+ - add: { title, content (≤4000 chars, one condensed fact), category?, keywords?, usage_scenario?, scope? ("project" default | "global") }. Seeded categories: ${MEMORY_CATEGORIES.join(" / ")}; free-form allowed.
341
+ - search: { query } — deterministic substring scoring (title > keywords > usage_scenario > body), top ${MEMORY_SEARCH_RESULTS}. Use BEFORE assuming project conventions.
342
+ - list: { scope? } — everything, grouped.
343
+ - forget: { title } — delete by title.
344
+ - What belongs here: durable project facts (build commands, environment quirks, architecture decisions, user-stated conventions that outlive one conversation). What does NOT: task state (todo list owns that), oversized docs (board files own those).`;
345
+ return {
346
+ description: DESCRIPTION,
347
+ args: deps.args ?? {
348
+ action: { descriptor: "action: add|search|list|forget (required)" },
349
+ title: { descriptor: "title: string (add/forget)" },
350
+ content: { descriptor: "content: string (add, ≤4000 chars)" },
351
+ category: { descriptor: "category: string (add, optional)" },
352
+ keywords: { descriptor: "keywords: string[] or comma string (add, optional)" },
353
+ usage_scenario: { descriptor: "usage_scenario: string[] or comma string (add, optional)" },
354
+ query: { descriptor: "query: string (search)" },
355
+ scope: { descriptor: "scope: project|global (optional, default project)" },
356
+ },
357
+ execute: async (rawArgs) => toToolResult(await execute(rawArgs)),
358
+ };
359
+ }
360
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/tm/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * tm layer — the four governed pipelines (T1.2 + T1.3 + T1.4). Split out of
3
+ * the former tools.ts hub; behavior unchanged. Assembly lives in tools.ts.
4
+ *
5
+ * tm_read — governed passthrough of client.file.read (T0.4-verified API)
6
+ * tm_grep — governed passthrough of client.find.text (T0.4-verified API)
7
+ * tm_bash — read-only allowlisted shell via the host `$` bridge
8
+ * tm_fetch — paged/structured retrieval of offloaded payloads (handles)
9
+ *
10
+ * Shared governance (every tool): threshold offload (TM_OFFLOAD_THRESHOLD,
11
+ * == threshold offloads), R6 reuse (same envprotect matchers as the global
12
+ * hook — anti-backdoor), structured errors (never a bare throw), and store
13
+ * failure degradation (governance faults never fail the task).
14
+ */
15
+ import type * as crypto from "node:crypto";
16
+ import { type EnvProtectMode } from "../envprotect.js";
17
+ import { type TmConfig } from "./config.js";
18
+ import type { RunStore } from "./store.js";
19
+ import { detectContentType } from "./preview.js";
20
+ export interface TmDeps {
21
+ client: unknown;
22
+ $: unknown;
23
+ cfg: TmConfig;
24
+ store: RunStore;
25
+ runId: string;
26
+ /** Process-random HMAC key — used to VERIFY handle tokens in tm_fetch. */
27
+ hmacKey: crypto.BinaryLike;
28
+ accessToken: string;
29
+ expireAt: number;
30
+ mode: EnvProtectMode;
31
+ extra: RegExp[];
32
+ /**
33
+ * Step-id namespace prefix for SECONDARY pipeline instances. A second
34
+ * buildPipelines instance (PTC's) starts its counter at s0001 again —
35
+ * without a distinct prefix its offloaded payloads would collide with
36
+ * the main pipeline's same-numbered steps inside the shared run store
37
+ * (refs ignore seq, so tm_fetch's last-append-wins would return the
38
+ * WRONG payload). PTC passes "ptc-"; the main instance stays "".
39
+ */
40
+ stepPrefix?: string;
41
+ }
42
+ interface GovernOptions {
43
+ contentType: ReturnType<typeof detectContentType>;
44
+ clue?: string;
45
+ }
46
+ export declare function buildPipelines(deps: TmDeps): {
47
+ nextStepId: () => string;
48
+ govern: (stepId: string, tool: string, content: string, opts: GovernOptions) => unknown;
49
+ tmRead: (rawArgs: Record<string, unknown>, ctx: unknown) => Promise<unknown>;
50
+ tmGrep: (rawArgs: Record<string, unknown>, ctx: unknown) => Promise<unknown>;
51
+ tmBash: (rawArgs: Record<string, unknown>, ctx: unknown) => Promise<unknown>;
52
+ tmFetch: (rawArgs: Record<string, unknown>, _ctx: unknown) => Promise<unknown>;
53
+ store: RunStore;
54
+ };
55
+ /** The four governed pipelines + shared step-counter/govern (PTC bridge seam). */
56
+ export type TmPipelines = ReturnType<typeof buildPipelines>;
57
+ export {};
58
+ //# sourceMappingURL=pipelines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../src/tm/pipelines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAgE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAA0C,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEnF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAIL,iBAAiB,EAClB,MAAM,cAAc,CAAA;AAmBrB,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,OAAO,CAAA;IACf,CAAC,EAAE,OAAO,CAAA;IACV,GAAG,EAAE,QAAQ,CAAA;IACb,KAAK,EAAE,QAAQ,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC,UAAU,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAID,UAAU,aAAa;IACrB,WAAW,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;IACjD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM;;qBAsBjB,MAAM,QAAQ,MAAM,WAAW,MAAM,QAAQ,aAAa,KAAG,OAAO;sBAsD7D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC;sBAyCxD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC;sBA4CxD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC;uBAiCvD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC;;EAgF1F;AAED,kFAAkF;AAClF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA"}