@pennixrv/trellis-core 0.7.0-beta.9 → 0.7.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/mem/adapters/claude.d.ts +1 -1
  6. package/dist/mem/adapters/claude.js +1 -1
  7. package/dist/mem/adapters/codex.d.ts +1 -1
  8. package/dist/mem/adapters/codex.js +1 -1
  9. package/dist/mem/adapters/devin.d.ts +1 -1
  10. package/dist/mem/adapters/devin.js +1 -1
  11. package/dist/mem/adapters/grok.d.ts +1 -1
  12. package/dist/mem/adapters/grok.js +1 -1
  13. package/dist/mem/adapters/zcode.d.ts +1 -1
  14. package/dist/mem/adapters/zcode.js +1 -1
  15. package/dist/mem/index.d.ts +3 -3
  16. package/dist/mem/index.js +3 -3
  17. package/dist/mem/phase.d.ts +4 -4
  18. package/dist/mem/phase.d.ts.map +1 -1
  19. package/dist/mem/phase.js +23 -26
  20. package/dist/mem/phase.js.map +1 -1
  21. package/dist/mem/sessions.js +2 -2
  22. package/dist/mem/sessions.js.map +1 -1
  23. package/dist/mem/types.d.ts +6 -6
  24. package/dist/mem/types.d.ts.map +1 -1
  25. package/dist/mem/types.js +3 -3
  26. package/dist/task/index.d.ts +2 -2
  27. package/dist/task/index.d.ts.map +1 -1
  28. package/dist/task/index.js +2 -2
  29. package/dist/task/index.js.map +1 -1
  30. package/dist/task/phase.d.ts +61 -26
  31. package/dist/task/phase.d.ts.map +1 -1
  32. package/dist/task/phase.js +152 -21
  33. package/dist/task/phase.js.map +1 -1
  34. package/dist/teamwork/api/assert.d.ts +3 -0
  35. package/dist/teamwork/api/assert.d.ts.map +1 -0
  36. package/dist/teamwork/api/assert.js +11 -0
  37. package/dist/teamwork/api/assert.js.map +1 -0
  38. package/dist/{channel → teamwork}/api/context.d.ts +8 -8
  39. package/dist/teamwork/api/context.d.ts.map +1 -0
  40. package/dist/{channel → teamwork}/api/context.js +32 -32
  41. package/dist/teamwork/api/context.js.map +1 -0
  42. package/dist/teamwork/api/coordination.d.ts +40 -0
  43. package/dist/teamwork/api/coordination.d.ts.map +1 -0
  44. package/dist/teamwork/api/coordination.js +50 -0
  45. package/dist/teamwork/api/coordination.js.map +1 -0
  46. package/dist/teamwork/api/create.d.ts +9 -0
  47. package/dist/teamwork/api/create.d.ts.map +1 -0
  48. package/dist/{channel → teamwork}/api/create.js +17 -20
  49. package/dist/teamwork/api/create.js.map +1 -0
  50. package/dist/{channel → teamwork}/api/inbox.d.ts +9 -9
  51. package/dist/teamwork/api/inbox.d.ts.map +1 -0
  52. package/dist/{channel → teamwork}/api/inbox.js +22 -22
  53. package/dist/teamwork/api/inbox.js.map +1 -0
  54. package/dist/{channel → teamwork}/api/interrupt.d.ts +5 -5
  55. package/dist/teamwork/api/interrupt.d.ts.map +1 -0
  56. package/dist/{channel → teamwork}/api/interrupt.js +10 -10
  57. package/dist/teamwork/api/interrupt.js.map +1 -0
  58. package/dist/{channel → teamwork}/api/post-thread.d.ts +4 -4
  59. package/dist/teamwork/api/post-thread.d.ts.map +1 -0
  60. package/dist/{channel → teamwork}/api/post-thread.js +13 -13
  61. package/dist/teamwork/api/post-thread.js.map +1 -0
  62. package/dist/teamwork/api/read.d.ts +17 -0
  63. package/dist/teamwork/api/read.d.ts.map +1 -0
  64. package/dist/{channel → teamwork}/api/read.js +17 -17
  65. package/dist/teamwork/api/read.js.map +1 -0
  66. package/dist/teamwork/api/resolve.d.ts +21 -0
  67. package/dist/teamwork/api/resolve.d.ts.map +1 -0
  68. package/dist/teamwork/api/resolve.js +28 -0
  69. package/dist/teamwork/api/resolve.js.map +1 -0
  70. package/dist/{channel → teamwork}/api/runtime.d.ts +4 -4
  71. package/dist/teamwork/api/runtime.d.ts.map +1 -0
  72. package/dist/teamwork/api/runtime.js.map +1 -0
  73. package/dist/teamwork/api/send.d.ts +4 -0
  74. package/dist/teamwork/api/send.d.ts.map +1 -0
  75. package/dist/{channel → teamwork}/api/send.js +7 -7
  76. package/dist/teamwork/api/send.js.map +1 -0
  77. package/dist/{channel → teamwork}/api/spawn.d.ts +1 -1
  78. package/dist/teamwork/api/spawn.d.ts.map +1 -0
  79. package/dist/teamwork/api/spawn.js +54 -0
  80. package/dist/teamwork/api/spawn.js.map +1 -0
  81. package/dist/teamwork/api/title.d.ts +5 -0
  82. package/dist/teamwork/api/title.d.ts.map +1 -0
  83. package/dist/{channel → teamwork}/api/title.js +12 -12
  84. package/dist/teamwork/api/title.js.map +1 -0
  85. package/dist/{channel → teamwork}/api/types.d.ts +11 -13
  86. package/dist/teamwork/api/types.d.ts.map +1 -0
  87. package/dist/{channel → teamwork}/api/types.js.map +1 -1
  88. package/dist/teamwork/api/watch-sessions.d.ts +40 -0
  89. package/dist/teamwork/api/watch-sessions.d.ts.map +1 -0
  90. package/dist/{channel/api/watch-channels.js → teamwork/api/watch-sessions.js} +16 -16
  91. package/dist/teamwork/api/watch-sessions.js.map +1 -0
  92. package/dist/teamwork/api/watch.d.ts +11 -0
  93. package/dist/teamwork/api/watch.d.ts.map +1 -0
  94. package/dist/{channel → teamwork}/api/watch.js +5 -5
  95. package/dist/teamwork/api/watch.js.map +1 -0
  96. package/dist/{channel → teamwork}/api/workers.d.ts +10 -10
  97. package/dist/teamwork/api/workers.d.ts.map +1 -0
  98. package/dist/{channel → teamwork}/api/workers.js +14 -14
  99. package/dist/teamwork/api/workers.js.map +1 -0
  100. package/dist/teamwork/index.d.ts +42 -0
  101. package/dist/teamwork/index.d.ts.map +1 -0
  102. package/dist/teamwork/index.js +25 -0
  103. package/dist/teamwork/index.js.map +1 -0
  104. package/dist/teamwork/internal/store/coordination.d.ts +64 -0
  105. package/dist/teamwork/internal/store/coordination.d.ts.map +1 -0
  106. package/dist/teamwork/internal/store/coordination.js +311 -0
  107. package/dist/teamwork/internal/store/coordination.js.map +1 -0
  108. package/dist/teamwork/internal/store/delivery.d.ts.map +1 -0
  109. package/dist/teamwork/internal/store/delivery.js.map +1 -0
  110. package/dist/teamwork/internal/store/events.d.ts +232 -0
  111. package/dist/teamwork/internal/store/events.d.ts.map +1 -0
  112. package/dist/{channel → teamwork}/internal/store/events.js +24 -21
  113. package/dist/teamwork/internal/store/events.js.map +1 -0
  114. package/dist/{channel → teamwork}/internal/store/filter.d.ts +5 -5
  115. package/dist/teamwork/internal/store/filter.d.ts.map +1 -0
  116. package/dist/{channel → teamwork}/internal/store/filter.js +1 -1
  117. package/dist/teamwork/internal/store/filter.js.map +1 -0
  118. package/dist/{channel → teamwork}/internal/store/inbox.d.ts +3 -3
  119. package/dist/teamwork/internal/store/inbox.d.ts.map +1 -0
  120. package/dist/{channel → teamwork}/internal/store/inbox.js +1 -1
  121. package/dist/teamwork/internal/store/inbox.js.map +1 -0
  122. package/dist/teamwork/internal/store/lock.d.ts.map +1 -0
  123. package/dist/{channel → teamwork}/internal/store/lock.js +1 -1
  124. package/dist/teamwork/internal/store/lock.js.map +1 -0
  125. package/dist/{channel → teamwork}/internal/store/paths.d.ts +17 -23
  126. package/dist/teamwork/internal/store/paths.d.ts.map +1 -0
  127. package/dist/{channel → teamwork}/internal/store/paths.js +44 -98
  128. package/dist/teamwork/internal/store/paths.js.map +1 -0
  129. package/dist/{channel → teamwork}/internal/store/schema.d.ts +12 -19
  130. package/dist/teamwork/internal/store/schema.d.ts.map +1 -0
  131. package/dist/{channel → teamwork}/internal/store/schema.js +4 -7
  132. package/dist/teamwork/internal/store/schema.js.map +1 -0
  133. package/dist/{channel → teamwork}/internal/store/seq.d.ts +2 -2
  134. package/dist/teamwork/internal/store/seq.d.ts.map +1 -0
  135. package/dist/{channel → teamwork}/internal/store/seq.js +3 -3
  136. package/dist/teamwork/internal/store/seq.js.map +1 -0
  137. package/dist/teamwork/internal/store/teamwork-session-metadata.d.ts +15 -0
  138. package/dist/teamwork/internal/store/teamwork-session-metadata.d.ts.map +1 -0
  139. package/dist/{channel/internal/store/channel-metadata.js → teamwork/internal/store/teamwork-session-metadata.js} +13 -27
  140. package/dist/teamwork/internal/store/teamwork-session-metadata.js.map +1 -0
  141. package/dist/{channel → teamwork}/internal/store/thread-state.d.ts +4 -4
  142. package/dist/teamwork/internal/store/thread-state.d.ts.map +1 -0
  143. package/dist/{channel → teamwork}/internal/store/thread-state.js +1 -1
  144. package/dist/teamwork/internal/store/thread-state.js.map +1 -0
  145. package/dist/teamwork/internal/store/watch.d.ts +10 -0
  146. package/dist/teamwork/internal/store/watch.d.ts.map +1 -0
  147. package/dist/{channel → teamwork}/internal/store/watch.js +6 -6
  148. package/dist/teamwork/internal/store/watch.js.map +1 -0
  149. package/dist/{channel → teamwork}/internal/store/worker-state.d.ts +7 -9
  150. package/dist/teamwork/internal/store/worker-state.d.ts.map +1 -0
  151. package/dist/{channel → teamwork}/internal/store/worker-state.js +6 -29
  152. package/dist/teamwork/internal/store/worker-state.js.map +1 -0
  153. package/package.json +7 -7
  154. package/dist/channel/api/assert.d.ts +0 -3
  155. package/dist/channel/api/assert.d.ts.map +0 -1
  156. package/dist/channel/api/assert.js +0 -11
  157. package/dist/channel/api/assert.js.map +0 -1
  158. package/dist/channel/api/context.d.ts.map +0 -1
  159. package/dist/channel/api/context.js.map +0 -1
  160. package/dist/channel/api/create.d.ts +0 -9
  161. package/dist/channel/api/create.d.ts.map +0 -1
  162. package/dist/channel/api/create.js.map +0 -1
  163. package/dist/channel/api/inbox.d.ts.map +0 -1
  164. package/dist/channel/api/inbox.js.map +0 -1
  165. package/dist/channel/api/interrupt.d.ts.map +0 -1
  166. package/dist/channel/api/interrupt.js.map +0 -1
  167. package/dist/channel/api/post-thread.d.ts.map +0 -1
  168. package/dist/channel/api/post-thread.js.map +0 -1
  169. package/dist/channel/api/read.d.ts +0 -17
  170. package/dist/channel/api/read.d.ts.map +0 -1
  171. package/dist/channel/api/read.js.map +0 -1
  172. package/dist/channel/api/resolve.d.ts +0 -21
  173. package/dist/channel/api/resolve.d.ts.map +0 -1
  174. package/dist/channel/api/resolve.js +0 -28
  175. package/dist/channel/api/resolve.js.map +0 -1
  176. package/dist/channel/api/runtime.d.ts.map +0 -1
  177. package/dist/channel/api/runtime.js.map +0 -1
  178. package/dist/channel/api/send.d.ts +0 -4
  179. package/dist/channel/api/send.d.ts.map +0 -1
  180. package/dist/channel/api/send.js.map +0 -1
  181. package/dist/channel/api/spawn.d.ts.map +0 -1
  182. package/dist/channel/api/spawn.js +0 -74
  183. package/dist/channel/api/spawn.js.map +0 -1
  184. package/dist/channel/api/title.d.ts +0 -5
  185. package/dist/channel/api/title.d.ts.map +0 -1
  186. package/dist/channel/api/title.js.map +0 -1
  187. package/dist/channel/api/types.d.ts.map +0 -1
  188. package/dist/channel/api/watch-channels.d.ts +0 -40
  189. package/dist/channel/api/watch-channels.d.ts.map +0 -1
  190. package/dist/channel/api/watch-channels.js.map +0 -1
  191. package/dist/channel/api/watch.d.ts +0 -11
  192. package/dist/channel/api/watch.d.ts.map +0 -1
  193. package/dist/channel/api/watch.js.map +0 -1
  194. package/dist/channel/api/workers.d.ts.map +0 -1
  195. package/dist/channel/api/workers.js.map +0 -1
  196. package/dist/channel/index.d.ts +0 -38
  197. package/dist/channel/index.d.ts.map +0 -1
  198. package/dist/channel/index.js +0 -23
  199. package/dist/channel/index.js.map +0 -1
  200. package/dist/channel/internal/store/channel-metadata.d.ts +0 -23
  201. package/dist/channel/internal/store/channel-metadata.d.ts.map +0 -1
  202. package/dist/channel/internal/store/channel-metadata.js.map +0 -1
  203. package/dist/channel/internal/store/delivery.d.ts.map +0 -1
  204. package/dist/channel/internal/store/delivery.js.map +0 -1
  205. package/dist/channel/internal/store/events.d.ts +0 -221
  206. package/dist/channel/internal/store/events.d.ts.map +0 -1
  207. package/dist/channel/internal/store/events.js.map +0 -1
  208. package/dist/channel/internal/store/filter.d.ts.map +0 -1
  209. package/dist/channel/internal/store/filter.js.map +0 -1
  210. package/dist/channel/internal/store/inbox.d.ts.map +0 -1
  211. package/dist/channel/internal/store/inbox.js.map +0 -1
  212. package/dist/channel/internal/store/lock.d.ts.map +0 -1
  213. package/dist/channel/internal/store/lock.js.map +0 -1
  214. package/dist/channel/internal/store/paths.d.ts.map +0 -1
  215. package/dist/channel/internal/store/paths.js.map +0 -1
  216. package/dist/channel/internal/store/schema.d.ts.map +0 -1
  217. package/dist/channel/internal/store/schema.js.map +0 -1
  218. package/dist/channel/internal/store/seq.d.ts.map +0 -1
  219. package/dist/channel/internal/store/seq.js.map +0 -1
  220. package/dist/channel/internal/store/thread-state.d.ts.map +0 -1
  221. package/dist/channel/internal/store/thread-state.js.map +0 -1
  222. package/dist/channel/internal/store/watch.d.ts +0 -10
  223. package/dist/channel/internal/store/watch.d.ts.map +0 -1
  224. package/dist/channel/internal/store/watch.js.map +0 -1
  225. package/dist/channel/internal/store/worker-state.d.ts.map +0 -1
  226. package/dist/channel/internal/store/worker-state.js.map +0 -1
  227. /package/dist/{channel → teamwork}/api/runtime.js +0 -0
  228. /package/dist/{channel → teamwork}/api/types.js +0 -0
  229. /package/dist/{channel → teamwork}/internal/store/delivery.d.ts +0 -0
  230. /package/dist/{channel → teamwork}/internal/store/delivery.js +0 -0
  231. /package/dist/{channel → teamwork}/internal/store/lock.d.ts +0 -0
@@ -2,12 +2,12 @@ import fs from "node:fs";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { GLOBAL_PROJECT_KEY, } from "./schema.js";
5
- /** Top-level Trellis channels directory. */
6
- export function channelRoot() {
7
- const env = process.env.TRELLIS_CHANNEL_ROOT;
5
+ /** Top-level Trellis Teamwork directory. */
6
+ export function teamworkRoot() {
7
+ const env = process.env.TRELLIS_TEAMWORK_ROOT;
8
8
  if (env && env.length > 0)
9
9
  return path.resolve(env);
10
- return path.join(os.homedir(), ".trellis", "channels");
10
+ return path.join(os.homedir(), ".trellis", "teamwork");
11
11
  }
12
12
  /**
13
13
  * Derive a per-project bucket name from an absolute cwd, mirroring
@@ -20,113 +20,62 @@ export function projectKey(cwd) {
20
20
  }
21
21
  /**
22
22
  * Project key for the current CLI invocation. Reads
23
- * `TRELLIS_CHANNEL_PROJECT` env first, then falls back to deriving from
23
+ * `TRELLIS_TEAMWORK_PROJECT` env first, then falls back to deriving from
24
24
  * `process.cwd()`.
25
25
  */
26
26
  export function currentProjectKey() {
27
- const env = process.env.TRELLIS_CHANNEL_PROJECT;
27
+ const env = process.env.TRELLIS_TEAMWORK_PROJECT;
28
28
  if (env && env.length > 0)
29
29
  return env;
30
30
  return projectKey(process.cwd());
31
31
  }
32
32
  export function projectDir(project = currentProjectKey()) {
33
- return path.join(channelRoot(), project);
33
+ return path.join(teamworkRoot(), project);
34
34
  }
35
35
  const BUCKET_MARKER = ".bucket";
36
- /** Characters allowed in a channel or worker name used as a path segment. */
36
+ /** Characters allowed in a Teamwork Session or teammate name used as a path segment. */
37
37
  const SAFE_SEGMENT_RE = /^[A-Za-z0-9._-]+$/;
38
38
  /**
39
- * Whether a channel/worker name is usable as a filesystem segment.
39
+ * Whether a Teamwork Session or teammate name is usable as a filesystem segment.
40
40
  * Discovery scans use this to skip directories created before name
41
41
  * validation existed (spaces, CJK, ...) — they can never be valid
42
- * channels, and `assertSafeName` throwing mid-scan would kill the scan.
42
+ * valid Teamwork Sessions, and `assertSafeName` throwing mid-scan would kill the scan.
43
43
  */
44
44
  export function isSafeName(name) {
45
45
  return name !== "." && name !== ".." && SAFE_SEGMENT_RE.test(name);
46
46
  }
47
47
  /**
48
48
  * Reject names that would escape their bucket when joined into a path.
49
- * A channel/worker name becomes a filesystem segment; without this guard
49
+ * A Teamwork Session or teammate name becomes a filesystem segment; without this guard
50
50
  * a name like `../../x` lets `path.join` resolve outside the store and a
51
51
  * later `fs.rmSync(recursive)` deletes arbitrary directories.
52
52
  */
53
- export function assertSafeName(name, kind = "channel") {
53
+ export function assertSafeName(name, kind = "Teamwork Session") {
54
54
  if (!isSafeName(name)) {
55
55
  throw new Error(`Invalid ${kind} name: ${JSON.stringify(name)}. ` +
56
56
  `Names may only contain letters, digits, '.', '_' and '-'.`);
57
57
  }
58
58
  }
59
- export function channelDir(name, project = currentProjectKey()) {
59
+ export function sessionDir(name, project = currentProjectKey()) {
60
60
  assertSafeName(name);
61
61
  return path.join(projectDir(project), name);
62
62
  }
63
63
  export function eventsPath(name, project = currentProjectKey()) {
64
- return path.join(channelDir(name, project), "events.jsonl");
64
+ return path.join(sessionDir(name, project), "events.jsonl");
65
65
  }
66
66
  export function seqSidecarPath(name, project = currentProjectKey()) {
67
- return path.join(channelDir(name, project), ".seq");
67
+ return path.join(sessionDir(name, project), ".seq");
68
68
  }
69
69
  export function lockPath(name, project = currentProjectKey()) {
70
- return path.join(channelDir(name, project), `${name}.lock`);
70
+ return path.join(sessionDir(name, project), `${name}.lock`);
71
71
  }
72
72
  export function workerFile(name, worker, suffix, project = currentProjectKey()) {
73
73
  assertSafeName(worker, "worker");
74
- return path.join(channelDir(name, project), `${worker}.${suffix}`);
74
+ return path.join(sessionDir(name, project), `${worker}.${suffix}`);
75
75
  }
76
76
  export function workerLockPath(name, worker, project = currentProjectKey()) {
77
77
  assertSafeName(worker, "worker");
78
- return path.join(channelDir(name, project), `${worker}.spawnlock`);
79
- }
80
- /**
81
- * One-shot migration: move legacy flat channels at `<root>/<name>/` into
82
- * a `_legacy/` bucket so the new project-scoped layout can use the top
83
- * level. Idempotent.
84
- */
85
- export function migrateLegacyChannels() {
86
- const root = channelRoot();
87
- if (!fs.existsSync(root))
88
- return;
89
- const legacy = path.join(root, "_legacy");
90
- let moved = 0;
91
- let entries;
92
- try {
93
- entries = fs.readdirSync(root);
94
- }
95
- catch {
96
- return;
97
- }
98
- for (const entry of entries) {
99
- if (entry === "_legacy" || entry === "_default")
100
- continue;
101
- const dir = path.join(root, entry);
102
- let stat;
103
- try {
104
- stat = fs.statSync(dir);
105
- }
106
- catch {
107
- continue;
108
- }
109
- if (!stat.isDirectory())
110
- continue;
111
- if (fs.existsSync(path.join(dir, BUCKET_MARKER)))
112
- continue;
113
- if (!fs.existsSync(path.join(dir, "events.jsonl")))
114
- continue;
115
- fs.mkdirSync(legacy, { recursive: true });
116
- const target = path.join(legacy, entry);
117
- try {
118
- fs.renameSync(dir, target);
119
- moved++;
120
- }
121
- catch (err) {
122
- process.stderr.write(`[channel migrate] failed to move ${entry} to _legacy/: ${err instanceof Error ? err.message : err}\n`);
123
- }
124
- }
125
- if (moved > 0) {
126
- fs.mkdirSync(legacy, { recursive: true });
127
- fs.writeFileSync(path.join(legacy, BUCKET_MARKER), "");
128
- process.stderr.write(`[channel migrate] moved ${moved} legacy channel(s) to ${legacy}\n`);
129
- }
78
+ return path.join(sessionDir(name, project), `${worker}.spawnlock`);
130
79
  }
131
80
  export function ensureBucketMarker(project) {
132
81
  const dir = projectDir(project);
@@ -137,7 +86,7 @@ export function ensureBucketMarker(project) {
137
86
  }
138
87
  }
139
88
  export function listProjects() {
140
- const root = channelRoot();
89
+ const root = teamworkRoot();
141
90
  if (!fs.existsSync(root))
142
91
  return [];
143
92
  const out = [];
@@ -151,8 +100,6 @@ export function listProjects() {
151
100
  continue;
152
101
  }
153
102
  if (fs.existsSync(path.join(dir, BUCKET_MARKER)) ||
154
- entry === "_legacy" ||
155
- entry === "_default" ||
156
103
  entry === GLOBAL_PROJECT_KEY) {
157
104
  out.push(entry);
158
105
  }
@@ -160,11 +107,11 @@ export function listProjects() {
160
107
  return out;
161
108
  }
162
109
  /**
163
- * List channel names inside a project bucket — subdirectories that
164
- * contain an `events.jsonl` file. Used by the cross-channel watcher for
165
- * dynamic channel discovery.
110
+ * List Teamwork Session names inside a project bucket — subdirectories that
111
+ * contain an `events.jsonl` file. Used by the cross-session watcher for
112
+ * dynamic Teamwork Session discovery.
166
113
  */
167
- export function listChannelNamesInProject(project) {
114
+ export function listSessionIdsInProject(project) {
168
115
  const dir = projectDir(project);
169
116
  if (!fs.existsSync(dir))
170
117
  return [];
@@ -180,17 +127,17 @@ export function listChannelNamesInProject(project) {
180
127
  if (entry.startsWith("."))
181
128
  continue;
182
129
  // Pre-validation legacy dirs (spaces, CJK, ...) can never be valid
183
- // channels; returning them would make the watcher's channelDir/
184
- // eventsPath calls throw and kill cross-channel discovery.
130
+ // valid Teamwork Sessions; returning them would make the watcher's sessionDir/
131
+ // eventsPath calls throw and kill cross-session discovery.
185
132
  if (!isSafeName(entry))
186
133
  continue;
187
- const channelEvents = path.join(dir, entry, "events.jsonl");
188
- if (fs.existsSync(channelEvents))
134
+ const teamworkEvents = path.join(dir, entry, "events.jsonl");
135
+ if (fs.existsSync(teamworkEvents))
189
136
  out.push(entry);
190
137
  }
191
138
  return out;
192
139
  }
193
- export function resolveChannelProjectForCreate(name, opts = {}) {
140
+ export function resolveTeamworkSessionProjectForCreate(name, opts = {}) {
194
141
  const scope = opts.scope ?? "project";
195
142
  const project = scope === "global"
196
143
  ? GLOBAL_PROJECT_KEY
@@ -201,11 +148,10 @@ export function resolveChannelProjectForCreate(name, opts = {}) {
201
148
  name,
202
149
  scope,
203
150
  project,
204
- dir: channelDir(name, project),
151
+ dir: sessionDir(name, project),
205
152
  };
206
153
  }
207
- export function resolveExistingChannelRef(name, opts = {}) {
208
- migrateLegacyChannels();
154
+ export function resolveExistingTeamworkSession(name, opts = {}) {
209
155
  if (opts.scope) {
210
156
  const project = opts.scope === "global"
211
157
  ? GLOBAL_PROJECT_KEY
@@ -213,10 +159,10 @@ export function resolveExistingChannelRef(name, opts = {}) {
213
159
  ? projectKey(opts.cwd)
214
160
  : currentProjectKey();
215
161
  if (!fs.existsSync(eventsPath(name, project))) {
216
- throw new Error(`Channel '${name}' not found in ${opts.scope} scope (${project})`);
162
+ throw new Error(`Teamwork Session '${name}' not found in ${opts.scope} scope (${project})`);
217
163
  }
218
- process.env.TRELLIS_CHANNEL_PROJECT = project;
219
- return { name, scope: opts.scope, project, dir: channelDir(name, project) };
164
+ process.env.TRELLIS_TEAMWORK_PROJECT = project;
165
+ return { name, scope: opts.scope, project, dir: sessionDir(name, project) };
220
166
  }
221
167
  const current = currentProjectKey();
222
168
  const projectMatches = listProjects()
@@ -224,41 +170,41 @@ export function resolveExistingChannelRef(name, opts = {}) {
224
170
  .filter((project) => fs.existsSync(eventsPath(name, project)));
225
171
  const globalExists = fs.existsSync(eventsPath(name, GLOBAL_PROJECT_KEY));
226
172
  if (globalExists && projectMatches.length > 0) {
227
- throw new Error(`Channel '${name}' exists in global and project scopes. Use --scope global or --scope project.`);
173
+ throw new Error(`Teamwork Session '${name}' exists in global and project scopes. Use --scope global or --scope project.`);
228
174
  }
229
175
  if (globalExists) {
230
- process.env.TRELLIS_CHANNEL_PROJECT = GLOBAL_PROJECT_KEY;
176
+ process.env.TRELLIS_TEAMWORK_PROJECT = GLOBAL_PROJECT_KEY;
231
177
  return {
232
178
  name,
233
179
  scope: "global",
234
180
  project: GLOBAL_PROJECT_KEY,
235
- dir: channelDir(name, GLOBAL_PROJECT_KEY),
181
+ dir: sessionDir(name, GLOBAL_PROJECT_KEY),
236
182
  };
237
183
  }
238
184
  if (fs.existsSync(eventsPath(name, current))) {
239
- process.env.TRELLIS_CHANNEL_PROJECT = current;
185
+ process.env.TRELLIS_TEAMWORK_PROJECT = current;
240
186
  return {
241
187
  name,
242
188
  scope: "project",
243
189
  project: current,
244
- dir: channelDir(name, current),
190
+ dir: sessionDir(name, current),
245
191
  };
246
192
  }
247
193
  if (projectMatches.length === 1) {
248
- process.env.TRELLIS_CHANNEL_PROJECT = projectMatches[0];
194
+ process.env.TRELLIS_TEAMWORK_PROJECT = projectMatches[0];
249
195
  return {
250
196
  name,
251
197
  scope: "project",
252
198
  project: projectMatches[0],
253
- dir: channelDir(name, projectMatches[0]),
199
+ dir: sessionDir(name, projectMatches[0]),
254
200
  };
255
201
  }
256
202
  if (projectMatches.length > 1) {
257
- throw new Error(`Channel '${name}' exists in multiple project buckets: ${projectMatches.join(", ")}. Run from the owning project cwd or use --scope.`);
203
+ throw new Error(`Teamwork Session '${name}' exists in multiple project buckets: ${projectMatches.join(", ")}. Run from the owning project cwd or use --scope.`);
258
204
  }
259
- throw new Error(`Channel '${name}' not found in current project bucket (${current}) or any known scope`);
205
+ throw new Error(`Teamwork Session '${name}' not found in current project bucket (${current}) or any known scope`);
260
206
  }
261
- export function selectExistingChannelProject(name) {
262
- return resolveExistingChannelRef(name).project;
207
+ export function selectExistingTeamworkSessionProject(name) {
208
+ return resolveExistingTeamworkSession(name).project;
263
209
  }
264
210
  //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/paths.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  export declare const GLOBAL_PROJECT_KEY = "_global";
2
- export type ChannelScope = "project" | "global";
2
+ export type TeamworkSessionScope = "project" | "global";
3
3
  /**
4
- * Channel structural type. `chat` is timeline-first; `forum` is a topic
4
+ * Teamwork Session type. `chat` is timeline-first; `forum` is a topic
5
5
  * area whose threads are individual topics. Legacy event logs may carry
6
6
  * the old `"threads"` / `"thread"` values — readers do NOT normalize them
7
- * to `forum`; they are treated as non-forum channels. New writes always
7
+ * to `forum`; they are treated as non-forum Teamwork Sessions. New writes always
8
8
  * emit `"forum"`.
9
9
  */
10
- export type ChannelType = "chat" | "forum";
10
+ export type TeamworkSessionType = "chat" | "forum";
11
11
  export type ThreadAction = "opened" | "comment" | "status" | "labels" | "assignees" | "summary" | "processed" | "rename";
12
- export type ContextTarget = "channel" | "thread";
12
+ export type ContextTarget = "session" | "thread";
13
13
  export type ContextMutationAction = "add" | "delete";
14
14
  export type EventOrigin = "cli" | "api" | "worker";
15
15
  /**
@@ -21,7 +21,7 @@ export type EventOrigin = "cli" | "api" | "worker";
21
21
  export type InboxPolicy = "explicitOnly" | "broadcastAndExplicit";
22
22
  export declare const INBOX_POLICIES: ReadonlySet<InboxPolicy>;
23
23
  export declare function parseInboxPolicy(v: string | undefined): InboxPolicy | undefined;
24
- export declare const CHANNEL_TYPES: ReadonlySet<ChannelType>;
24
+ export declare const TEAMWORK_SESSION_TYPES: ReadonlySet<TeamworkSessionType>;
25
25
  export declare const THREAD_ACTIONS: ReadonlySet<ThreadAction>;
26
26
  export declare const EVENT_ORIGINS: ReadonlySet<EventOrigin>;
27
27
  export interface FileContextEntry {
@@ -33,29 +33,22 @@ export interface RawContextEntry {
33
33
  text: string;
34
34
  }
35
35
  export type ContextEntry = FileContextEntry | RawContextEntry;
36
- /**
37
- * Legacy alias kept while old code spells the field "linkedContext". New
38
- * APIs use `ContextEntry`.
39
- *
40
- * @deprecated Use {@link ContextEntry} instead.
41
- */
42
- export type LinkedContextEntry = ContextEntry;
43
- export interface ChannelRef {
36
+ export interface TeamworkSessionRef {
44
37
  name: string;
45
- scope: ChannelScope;
38
+ scope: TeamworkSessionScope;
46
39
  /** Storage project bucket key (not the metadata `project` slug). */
47
40
  project: string;
48
41
  dir: string;
49
42
  }
50
- export interface ChannelMetadata {
51
- type: ChannelType;
43
+ export interface TeamworkSessionMetadata {
44
+ type: TeamworkSessionType;
52
45
  title?: string;
53
46
  description?: string;
54
47
  context?: ContextEntry[];
55
48
  labels?: string[];
56
49
  }
57
- export declare function parseChannelScope(v: string | undefined): ChannelScope | undefined;
58
- export declare function parseChannelType(v: string | undefined): ChannelType;
50
+ export declare function parseTeamworkSessionScope(v: string | undefined): TeamworkSessionScope | undefined;
51
+ export declare function parseTeamworkSessionType(v: string | undefined): TeamworkSessionType;
59
52
  export declare function parseThreadAction(v: string): ThreadAction;
60
53
  export declare function parseEventOrigin(v: string | undefined): EventOrigin | undefined;
61
54
  export declare function normalizeThreadKey(v: string): string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,QAAQ,CAAC;AACxD;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnD,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjD,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,sBAAsB,CAAC;AAElE,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,WAAW,CAGlD,CAAC;AAEH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,MAAM,GAAG,SAAS,GACpB,WAAW,GAAG,SAAS,CAQzB;AAED,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,mBAAmB,CAGlE,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,YAAY,CASnD,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,WAAW,CAIjD,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,oBAAoB,CAAC;IAC5B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,MAAM,GAAG,SAAS,GACpB,oBAAoB,GAAG,SAAS,CAMlC;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,CAMnF;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAOzD;AAED,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,MAAM,GAAG,SAAS,GACpB,WAAW,GAAG,SAAS,CAQzB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CASpD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAC3B,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,GACxB,YAAY,EAAE,GAAG,SAAS,CAgB5B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAGlE;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,GACb,YAAY,EAAE,GAAG,SAAS,CAU5B;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAE3D"}
@@ -12,7 +12,7 @@ export function parseInboxPolicy(v) {
12
12
  }
13
13
  return v;
14
14
  }
15
- export const CHANNEL_TYPES = new Set([
15
+ export const TEAMWORK_SESSION_TYPES = new Set([
16
16
  "chat",
17
17
  "forum",
18
18
  ]);
@@ -31,7 +31,7 @@ export const EVENT_ORIGINS = new Set([
31
31
  "api",
32
32
  "worker",
33
33
  ]);
34
- export function parseChannelScope(v) {
34
+ export function parseTeamworkSessionScope(v) {
35
35
  if (v === undefined)
36
36
  return undefined;
37
37
  if (v !== "project" && v !== "global") {
@@ -39,13 +39,10 @@ export function parseChannelScope(v) {
39
39
  }
40
40
  return v;
41
41
  }
42
- export function parseChannelType(v) {
42
+ export function parseTeamworkSessionType(v) {
43
43
  if (v === undefined)
44
44
  return "chat";
45
- if (v === "thread" || v === "threads") {
46
- throw new Error(`Invalid --type '${v}'. Use '--type forum'.`);
47
- }
48
- if (!CHANNEL_TYPES.has(v)) {
45
+ if (!TEAMWORK_SESSION_TYPES.has(v)) {
49
46
  throw new Error("Invalid --type. Must be one of: chat, forum");
50
47
  }
51
48
  return v;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/schema.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * unparseable lines are left intact — that is mid-file damage, not a
7
7
  * torn tail.
8
8
  *
9
- * Caller must hold the channel lock.
9
+ * Caller must hold the Teamwork Session lock.
10
10
  */
11
11
  export declare function truncateIncompleteTail(jsonlPath: string): Promise<void>;
12
12
  /**
@@ -15,7 +15,7 @@ export declare function truncateIncompleteTail(jsonlPath: string): Promise<void>
15
15
  * lower than the JSONL tail, or ahead of the JSONL tail (for example,
16
16
  * after manual corruption or a stale future reservation).
17
17
  *
18
- * Caller must hold the channel lock when invoking this and the
18
+ * Caller must hold the Teamwork Session lock when invoking this and the
19
19
  * subsequent JSONL append + sidecar write.
20
20
  */
21
21
  export declare function reconcileSeq(jsonlPath: string, sidecarPath: string): Promise<number>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seq.d.ts","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/seq.ts"],"names":[],"mappings":"AAgGA;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B7E;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAKf"}
@@ -95,7 +95,7 @@ async function readLastJsonlSeq(jsonlPath) {
95
95
  if (found !== null)
96
96
  return found;
97
97
  if (text.split("\n").some((line) => line.trim() !== "")) {
98
- throw new Error(`Unable to recover channel seq from ${jsonlPath}`);
98
+ throw new Error(`Unable to recover Teamwork Session sequence from ${jsonlPath}`);
99
99
  }
100
100
  return 0;
101
101
  }
@@ -107,7 +107,7 @@ async function readLastJsonlSeq(jsonlPath) {
107
107
  * unparseable lines are left intact — that is mid-file damage, not a
108
108
  * torn tail.
109
109
  *
110
- * Caller must hold the channel lock.
110
+ * Caller must hold the Teamwork Session lock.
111
111
  */
112
112
  export async function truncateIncompleteTail(jsonlPath) {
113
113
  if (!fs.existsSync(jsonlPath))
@@ -146,7 +146,7 @@ export async function truncateIncompleteTail(jsonlPath) {
146
146
  * lower than the JSONL tail, or ahead of the JSONL tail (for example,
147
147
  * after manual corruption or a stale future reservation).
148
148
  *
149
- * Caller must hold the channel lock when invoking this and the
149
+ * Caller must hold the Teamwork Session lock when invoking this and the
150
150
  * subsequent JSONL append + sidecar write.
151
151
  */
152
152
  export async function reconcileSeq(jsonlPath, sidecarPath) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seq.js","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/seq.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type TeamworkEvent } from "./events.js";
2
+ import { type TeamworkSessionMetadata } from "./schema.js";
3
+ /**
4
+ * Single source of truth for projecting Teamwork Session metadata from its
5
+ * event stream.
6
+ *
7
+ * Covers:
8
+ * - create event metadata (type, description, labels, context)
9
+ * - `kind:"context", target:"session"` add/delete projection
10
+ * - `kind:"teamwork", action:"title"` set/clear projection
11
+ */
12
+ export declare function reduceTeamworkSessionMetadata(events: TeamworkEvent[]): TeamworkSessionMetadata;
13
+ /** Project a single create event into Teamwork Session metadata. */
14
+ export declare function metadataFromCreateEvent(create: TeamworkEvent | undefined): TeamworkSessionMetadata;
15
+ //# sourceMappingURL=teamwork-session-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teamwork-session-metadata.d.ts","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/teamwork-session-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,KAAK,uBAAuB,EAG7B,MAAM,aAAa,CAAC;AAErB;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,aAAa,EAAE,GACtB,uBAAuB,CAuDzB;AAED,oEAAoE;AACpE,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,GAAG,SAAS,GAChC,uBAAuB,CAGzB"}
@@ -1,18 +1,15 @@
1
- import { isChannelMetadataEvent, isContextEvent, isCreateEvent, } from "./events.js";
1
+ import { isTeamworkMetadataEvent, isContextEvent, isCreateEvent, } from "./events.js";
2
2
  import { asContextEntries, asStringArray, contextEntryKey, } from "./schema.js";
3
3
  /**
4
- * Single source of truth for projecting a channel's metadata from its
4
+ * Single source of truth for projecting Teamwork Session metadata from its
5
5
  * event stream.
6
6
  *
7
7
  * Covers:
8
8
  * - create event metadata (type, description, labels, context)
9
- * - legacy `linkedContext` field on create / thread events
10
- * - legacy `type:"thread"` / `type:"threads"` are NOT normalized to
11
- * `forum`; they project to `chat` so thread APIs reject them
12
- * - `kind:"context", target:"channel"` add/delete projection
13
- * - `kind:"channel", action:"title"` set/clear projection
9
+ * - `kind:"context", target:"session"` add/delete projection
10
+ * - `kind:"teamwork", action:"title"` set/clear projection
14
11
  */
15
- export function reduceChannelMetadata(events) {
12
+ export function reduceTeamworkSessionMetadata(events) {
16
13
  let type = "chat";
17
14
  let description;
18
15
  let labels;
@@ -34,19 +31,16 @@ export function reduceChannelMetadata(events) {
34
31
  };
35
32
  for (const ev of events) {
36
33
  if (isCreateEvent(ev)) {
37
- type = normalizeChannelType(ev.type);
34
+ type = normalizeTeamworkSessionType(ev.type);
38
35
  if (typeof ev.description === "string")
39
36
  description = ev.description;
40
37
  labels = asStringArray(ev.labels) ?? labels;
41
- // Initial context comes from `context` (new) or legacy
42
- // `linkedContext`. New entries replace any prior state because a
43
- // `create` event is always seq 1.
44
- const initial = asContextEntries(ev.context) ?? asContextEntries(ev.linkedContext);
38
+ const initial = asContextEntries(ev.context);
45
39
  contextMap.clear();
46
40
  addEntries(initial);
47
41
  continue;
48
42
  }
49
- if (isContextEvent(ev) && ev.target === "channel") {
43
+ if (isContextEvent(ev) && ev.target === "session") {
50
44
  const entries = asContextEntries(ev.context);
51
45
  if (ev.action === "add")
52
46
  addEntries(entries);
@@ -54,7 +48,7 @@ export function reduceChannelMetadata(events) {
54
48
  deleteEntries(entries);
55
49
  continue;
56
50
  }
57
- if (isChannelMetadataEvent(ev) && ev.action === "title") {
51
+ if (isTeamworkMetadataEvent(ev) && ev.action === "title") {
58
52
  const next = ev.title;
59
53
  if (typeof next === "string" && next.length > 0)
60
54
  title = next;
@@ -72,23 +66,15 @@ export function reduceChannelMetadata(events) {
72
66
  ...(labels !== undefined ? { labels } : {}),
73
67
  };
74
68
  }
75
- /**
76
- * Legacy compatibility: project a single create event into channel
77
- * metadata. New callers should use {@link reduceChannelMetadata} over
78
- * the full event stream so context add/delete, title set/clear, and
79
- * legacy `linkedContext` projection are honored.
80
- */
69
+ /** Project a single create event into Teamwork Session metadata. */
81
70
  export function metadataFromCreateEvent(create) {
82
71
  if (!create || !isCreateEvent(create))
83
72
  return { type: "chat" };
84
- return reduceChannelMetadata([create]);
73
+ return reduceTeamworkSessionMetadata([create]);
85
74
  }
86
- function normalizeChannelType(value) {
75
+ function normalizeTeamworkSessionType(value) {
87
76
  if (value === "forum")
88
77
  return "forum";
89
- // Legacy `"thread"` / `"threads"` values are intentionally not
90
- // upgraded to `forum`; they fall through to `chat` so forum/thread
91
- // APIs reject pre-rename channels.
92
78
  return "chat";
93
79
  }
94
- //# sourceMappingURL=channel-metadata.js.map
80
+ //# sourceMappingURL=teamwork-session-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teamwork-session-metadata.js","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/teamwork-session-metadata.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type ChannelEvent, type ContextChannelEvent, type ThreadChannelEvent } from "./events.js";
1
+ import { type TeamworkEvent, type ContextTeamworkEvent, type ThreadTeamworkEvent } from "./events.js";
2
2
  import { type ContextEntry } from "./schema.js";
3
3
  export interface ThreadState {
4
4
  thread: string;
@@ -26,12 +26,12 @@ export interface ThreadAliasResolver {
26
26
  resolve(key: string): string;
27
27
  aliasesFor(currentKey: string): string[];
28
28
  }
29
- export declare function buildThreadAliasResolver(events: ChannelEvent[]): ThreadAliasResolver;
30
- export declare function reduceThreads(events: ChannelEvent[]): ThreadState[];
29
+ export declare function buildThreadAliasResolver(events: TeamworkEvent[]): ThreadAliasResolver;
30
+ export declare function reduceThreads(events: TeamworkEvent[]): ThreadState[];
31
31
  /**
32
32
  * Return the timeline events that belong to a given thread (or any of
33
33
  * its rename aliases), in seq order. Includes thread events and
34
34
  * thread-targeted context events.
35
35
  */
36
- export declare function collectThreadTimeline(events: ChannelEvent[], threadKey: string): (ThreadChannelEvent | ContextChannelEvent)[];
36
+ export declare function collectThreadTimeline(events: TeamworkEvent[], threadKey: string): (ThreadTeamworkEvent | ContextTeamworkEvent)[];
37
37
  //# sourceMappingURL=thread-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-state.d.ts","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/thread-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB;6EACyE;IACzE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAMD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1C;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,EAAE,GACtB,mBAAmB,CAsDrB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAgFpE;AAmDD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EAAE,EACvB,SAAS,EAAE,MAAM,GAChB,CAAC,mBAAmB,GAAG,oBAAoB,CAAC,EAAE,CAgBhD"}
@@ -142,7 +142,7 @@ function applyThreadAction(current, ev) {
142
142
  current.description = ev.description;
143
143
  }
144
144
  {
145
- const initial = asContextEntries(ev.context) ?? asContextEntries(ev.linkedContext);
145
+ const initial = asContextEntries(ev.context);
146
146
  if (initial) {
147
147
  current.contextMap.clear();
148
148
  for (const entry of initial) {