@te-river/opencode-team-mode 1.5.11 → 1.5.12

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 (89) hide show
  1. package/README.md +129 -53
  2. package/README.zh-CN.md +103 -45
  3. package/dist/agents.d.ts.map +1 -1
  4. package/dist/agents.js +17 -11
  5. package/dist/agents.js.map +1 -1
  6. package/dist/approval-gate.d.ts +54 -16
  7. package/dist/approval-gate.d.ts.map +1 -1
  8. package/dist/approval-gate.js +163 -42
  9. package/dist/approval-gate.js.map +1 -1
  10. package/dist/prompts/lead.d.ts +1 -1
  11. package/dist/prompts/lead.d.ts.map +1 -1
  12. package/dist/prompts/lead.js +22 -3
  13. package/dist/prompts/lead.js.map +1 -1
  14. package/dist/prompts/shared.d.ts +1 -1
  15. package/dist/prompts/shared.d.ts.map +1 -1
  16. package/dist/prompts/shared.js +154 -119
  17. package/dist/prompts/shared.js.map +1 -1
  18. package/dist/prompts/specialists.d.ts +2 -2
  19. package/dist/prompts/specialists.d.ts.map +1 -1
  20. package/dist/prompts/specialists.js +40 -11
  21. package/dist/prompts/specialists.js.map +1 -1
  22. package/dist/tm/args-schema.d.ts +25 -1
  23. package/dist/tm/args-schema.d.ts.map +1 -1
  24. package/dist/tm/args-schema.js +149 -39
  25. package/dist/tm/args-schema.js.map +1 -1
  26. package/dist/tm/browser.d.ts +188 -19
  27. package/dist/tm/browser.d.ts.map +1 -1
  28. package/dist/tm/browser.js +781 -111
  29. package/dist/tm/browser.js.map +1 -1
  30. package/dist/tm/config.d.ts +61 -0
  31. package/dist/tm/config.d.ts.map +1 -1
  32. package/dist/tm/config.js +55 -1
  33. package/dist/tm/config.js.map +1 -1
  34. package/dist/tm/index.d.ts +5 -3
  35. package/dist/tm/index.d.ts.map +1 -1
  36. package/dist/tm/index.js +36 -2
  37. package/dist/tm/index.js.map +1 -1
  38. package/dist/tm/memory.d.ts +88 -10
  39. package/dist/tm/memory.d.ts.map +1 -1
  40. package/dist/tm/memory.js +881 -99
  41. package/dist/tm/memory.js.map +1 -1
  42. package/dist/tm/pipelines.d.ts +26 -3
  43. package/dist/tm/pipelines.d.ts.map +1 -1
  44. package/dist/tm/pipelines.js +167 -11
  45. package/dist/tm/pipelines.js.map +1 -1
  46. package/dist/tm/ptc/budgets.d.ts +22 -1
  47. package/dist/tm/ptc/budgets.d.ts.map +1 -1
  48. package/dist/tm/ptc/budgets.js +87 -8
  49. package/dist/tm/ptc/budgets.js.map +1 -1
  50. package/dist/tm/ptc/contract.d.ts +49 -9
  51. package/dist/tm/ptc/contract.d.ts.map +1 -1
  52. package/dist/tm/ptc/contract.js +41 -3
  53. package/dist/tm/ptc/contract.js.map +1 -1
  54. package/dist/tm/ptc/driver.d.ts +5 -2
  55. package/dist/tm/ptc/driver.d.ts.map +1 -1
  56. package/dist/tm/ptc/driver.js +47 -15
  57. package/dist/tm/ptc/driver.js.map +1 -1
  58. package/dist/tm/ptc/engines.d.ts +15 -4
  59. package/dist/tm/ptc/engines.d.ts.map +1 -1
  60. package/dist/tm/ptc/engines.js +281 -28
  61. package/dist/tm/ptc/engines.js.map +1 -1
  62. package/dist/tm/ptc/index.d.ts +4 -4
  63. package/dist/tm/ptc/index.d.ts.map +1 -1
  64. package/dist/tm/ptc/index.js +2 -2
  65. package/dist/tm/ptc/index.js.map +1 -1
  66. package/dist/tm/ptc/pscan.d.ts +20 -1
  67. package/dist/tm/ptc/pscan.d.ts.map +1 -1
  68. package/dist/tm/ptc/pscan.js +328 -14
  69. package/dist/tm/ptc/pscan.js.map +1 -1
  70. package/dist/tm/ptc/summary.d.ts.map +1 -1
  71. package/dist/tm/ptc/summary.js +23 -1
  72. package/dist/tm/ptc/summary.js.map +1 -1
  73. package/dist/tm/ptc/tool.d.ts +34 -3
  74. package/dist/tm/ptc/tool.d.ts.map +1 -1
  75. package/dist/tm/ptc/tool.js +117 -20
  76. package/dist/tm/ptc/tool.js.map +1 -1
  77. package/dist/tm/search.d.ts +83 -14
  78. package/dist/tm/search.d.ts.map +1 -1
  79. package/dist/tm/search.js +440 -45
  80. package/dist/tm/search.js.map +1 -1
  81. package/dist/tm/shell-bridge.d.ts +14 -1
  82. package/dist/tm/shell-bridge.d.ts.map +1 -1
  83. package/dist/tm/shell-bridge.js +57 -10
  84. package/dist/tm/shell-bridge.js.map +1 -1
  85. package/dist/tm/webfetch.d.ts +25 -7
  86. package/dist/tm/webfetch.d.ts.map +1 -1
  87. package/dist/tm/webfetch.js +88 -14
  88. package/dist/tm/webfetch.js.map +1 -1
  89. package/package.json +5 -2
@@ -1,24 +1,50 @@
1
1
  /**
2
- * tm_memory — project/global memory mirror (Qoder-inspired, re-implemented
3
- * from mechanism analysis; no code reused).
2
+ * tm_memory — THREE-layer memory store (global / project / session),
3
+ * Qoder-inspired, re-implemented from mechanism analysis; no code reused.
4
4
  *
5
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).
6
+ * frontmatter (title / usage_scenario / keywords / supersedes / created_at /
7
+ * updated_at / expires) — git-diffable, human-editable, injectable into
8
+ * context without any database. The store lives under the git-aware base
9
+ * (<repo>/.git/opencode-team/memories/ or tmpdir fallback), mirroring the
10
+ * run-store philosophy: never pollute the working tree.
11
11
  *
12
12
  * Layout:
13
13
  * GLOBAL (user-level, follows you across projects):
14
14
  * <globalRoot>/<category>/<title>.md — default ~/.opencode-team/memories/global/
15
15
  * PROJECT (repo-level, per checkout):
16
16
  * <storeBase>/memories/projects/<project-slug>/<category>/<title>.md
17
+ * SESSION (per ctx.sessionID — EPHEMERAL by default):
18
+ * in-process Map keyed by the session id; nothing touches the disk
19
+ * unless TM_MEMORY_SESSION_PERSIST=1, which mirrors every session entry
20
+ * to <storeBase>/memories/sessions/<sid>/<category>/<title>.md with an
21
+ * `expires:` frontmatter line. Expired entries die on a lazy per-call
22
+ * sweep AND a startup sweep (never read back after the TTL).
23
+ * COMPACT backups (rollback path, never walked — dot-dirs are skipped):
24
+ * <storeBase>/memories/.compact-backup/<UTC ts>/<scope>/<rel path>
25
+ *
26
+ * Precedence: session > project > global. search scores every layer it is
27
+ * asked to walk; same-title lower-layer entries are shadowed by the highest
28
+ * layer that carries them, and project gets a +2 / session a +3 near-tie
29
+ * weight so a layer's entries rank first.
30
+ *
31
+ * Bloat control (the root cause this tier fixes: near-identical memories
32
+ * piling up as separate files):
33
+ * - add NEVER creates a second entry that duplicates an existing one in
34
+ * the same scope+category: identity is `category + sorted(stopword-
35
+ * stripped title tokens)` OR a Jaccard(title∪keywords tokens) ≥ 0.6 —
36
+ * either match MERGES into the existing file (content takes the new
37
+ * value, keywords union, `supersedes:` grows, updated_at refreshes).
38
+ * - over cfg.memoryMaxEntries per scope, add fails with a compact/forget
39
+ * hint instead of growing the store.
40
+ * - cfg.memoryStaleDays > 0 tags search hits `[stale Nd]`.
41
+ * - action "compact" groups the existing duplicates: dry-run by default,
42
+ * `apply: true` merges for real after moving originals to the backup dir.
17
43
  *
18
44
  * The project slug is derived from the workspace path (drive letter + path
19
45
  * 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).
46
+ * Injection is PULL-based: agents search via this tool; the lead distills
47
+ * relevant memories into dispatches (see SHARED_RULES).
22
48
  */
23
49
  import type { ToolResult } from "../types.js";
24
50
  import { type TmConfig } from "./config.js";
@@ -28,17 +54,56 @@ export declare const MEMORY_TITLE_MAX = 120;
28
54
  export declare const MEMORY_CONTENT_MAX = 4000;
29
55
  export declare const MEMORY_SEARCH_RESULTS = 5;
30
56
  export declare const MEMORY_EXCERPT_MAX = 600;
57
+ /** Layered precedence: session > project > global — (a) same-title entries in
58
+ * a lower layer are shadowed by the highest layer carrying them, (b) session
59
+ * entries get a +3 and project entries a +2 near-tie weight (matches
60
+ * category ×2 in the scoring grammar). */
61
+ export declare const MEMORY_PROJECT_SCOPE_BONUS = 2;
62
+ export declare const MEMORY_SESSION_SCOPE_BONUS = 3;
63
+ /** Near-duplicate merge threshold on title∪keywords token sets. */
64
+ export declare const MEMORY_DEDUP_JACCARD = 0.6;
65
+ /** Per-list frontmatter caps (kept stable so merges cannot grow unbounded). */
66
+ export declare const MEMORY_KEYWORDS_MAX = 10;
67
+ export declare const MEMORY_SCENARIOS_MAX = 8;
68
+ export declare const MEMORY_SUPERSEDES_MAX = 50;
69
+ /** Default session id when the host ctx carries no sessionID. */
70
+ export declare const MEMORY_DEFAULT_SESSION_ID = "default";
31
71
  /** Seeded category taxonomy (Qoder's seven, reused as the starting point). */
32
72
  export declare const MEMORY_CATEGORIES: readonly string[];
73
+ /** The three memory layers. */
74
+ export type MemoryScope = "project" | "global" | "session";
75
+ export declare const MEMORY_SCOPES: readonly MemoryScope[];
76
+ /** Layer precedence: session > project > global (also drives same-title shadowing). */
77
+ export declare const MEMORY_ALL_SCOPES: MemoryScope[];
33
78
  /** Path → project slug ("D:\Github\App" -> "d-github-app"). */
34
79
  export declare function projectSlug(directory: string): string;
35
80
  /** Title → safe file stem (collapsed dashes, capped). */
36
81
  export declare function titleSlug(title: string): string;
82
+ /** Session id → path-safe dir name. */
83
+ export declare function sessionIdSlug(sid: unknown): string;
84
+ /**
85
+ * Deterministic tokenizer: latin/digit runs + one token per CJK glyph
86
+ * (Chinese titles have no whitespace, so glyph tokens are what make the
87
+ * Jaccard signal work). Stopwords removed.
88
+ */
89
+ export declare function memoryTokens(text: unknown): string[];
90
+ /**
91
+ * Identity key of a memory: category + the sorted token set of its title.
92
+ * Two entries with the same key in the same scope+category are the same fact.
93
+ */
94
+ export declare function memoryDedupKey(category: string, title: string): string;
95
+ /** Jaccard similarity of two token sets; empty-vs-empty is 0 (no signal). */
96
+ export declare function memoryJaccard(a: string[], b: string[]): number;
37
97
  export declare function renderMemoryMarkdown(m: {
38
98
  title: string;
39
99
  usageScenario: string[];
40
100
  keywords: string[];
41
101
  content: string;
102
+ /** Forward-compatible extras — old readers ignore unknown keys. */
103
+ supersedes?: string[];
104
+ createdAt?: number | null;
105
+ updatedAt?: number | null;
106
+ expiresAt?: number | null;
42
107
  }): string;
43
108
  /** Parse a memory file; null when the file is not ours (foreign md). */
44
109
  export declare function parseMemoryMarkdown(raw: string, filePath: string): {
@@ -48,16 +113,27 @@ export declare function parseMemoryMarkdown(raw: string, filePath: string): {
48
113
  content: string;
49
114
  filePath: string;
50
115
  category: string;
116
+ supersedes: string[];
117
+ createdAt: number | null;
118
+ updatedAt: number | null;
119
+ expiresAt: number | null;
51
120
  } | null;
52
121
  export interface MemoryHit {
53
122
  title: string;
54
123
  category: string;
55
- scope: "project" | "global";
124
+ scope: MemoryScope;
56
125
  filePath: string;
57
126
  keywords: string[];
58
127
  usageScenario: string[];
59
128
  content: string;
60
129
  score: number;
130
+ /** Merge / staleness / TTL bookkeeping (additive — older readers ignore). */
131
+ slug: string;
132
+ createdAt: number;
133
+ updatedAt: number;
134
+ expiresAt: number | null;
135
+ supersedes: string[];
136
+ sid: string;
61
137
  }
62
138
  /**
63
139
  * Substring scoring — no embeddings, deterministic: title ×5, keywords ×4,
@@ -80,6 +156,8 @@ export declare function buildTmMemoryTool(deps: {
80
156
  cfg: TmConfig;
81
157
  pipelines: TmPipelines;
82
158
  args?: Record<string, unknown>;
159
+ /** Clock seam for tests (TTL / staleness); defaults to Date.now. */
160
+ now?: () => number;
83
161
  }): {
84
162
  description: string;
85
163
  args: Record<string, unknown>;
@@ -1 +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"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/tm/memory.ts"],"names":[],"mappings":"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"}