trellis-hgl-core 0.6.0-beta.18

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 (202) hide show
  1. package/LICENSE +235 -0
  2. package/dist/channel/api/assert.d.ts +3 -0
  3. package/dist/channel/api/assert.d.ts.map +1 -0
  4. package/dist/channel/api/assert.js +11 -0
  5. package/dist/channel/api/assert.js.map +1 -0
  6. package/dist/channel/api/context.d.ts +21 -0
  7. package/dist/channel/api/context.d.ts.map +1 -0
  8. package/dist/channel/api/context.js +99 -0
  9. package/dist/channel/api/context.js.map +1 -0
  10. package/dist/channel/api/create.d.ts +9 -0
  11. package/dist/channel/api/create.d.ts.map +1 -0
  12. package/dist/channel/api/create.js +104 -0
  13. package/dist/channel/api/create.js.map +1 -0
  14. package/dist/channel/api/inbox.d.ts +51 -0
  15. package/dist/channel/api/inbox.d.ts.map +1 -0
  16. package/dist/channel/api/inbox.js +176 -0
  17. package/dist/channel/api/inbox.js.map +1 -0
  18. package/dist/channel/api/interrupt.d.ts +31 -0
  19. package/dist/channel/api/interrupt.d.ts.map +1 -0
  20. package/dist/channel/api/interrupt.js +102 -0
  21. package/dist/channel/api/interrupt.js.map +1 -0
  22. package/dist/channel/api/post-thread.d.ts +14 -0
  23. package/dist/channel/api/post-thread.d.ts.map +1 -0
  24. package/dist/channel/api/post-thread.js +106 -0
  25. package/dist/channel/api/post-thread.js.map +1 -0
  26. package/dist/channel/api/read.d.ts +17 -0
  27. package/dist/channel/api/read.d.ts.map +1 -0
  28. package/dist/channel/api/read.js +44 -0
  29. package/dist/channel/api/read.js.map +1 -0
  30. package/dist/channel/api/resolve.d.ts +21 -0
  31. package/dist/channel/api/resolve.d.ts.map +1 -0
  32. package/dist/channel/api/resolve.js +28 -0
  33. package/dist/channel/api/resolve.js.map +1 -0
  34. package/dist/channel/api/runtime.d.ts +70 -0
  35. package/dist/channel/api/runtime.d.ts.map +1 -0
  36. package/dist/channel/api/runtime.js +11 -0
  37. package/dist/channel/api/runtime.js.map +1 -0
  38. package/dist/channel/api/send.d.ts +4 -0
  39. package/dist/channel/api/send.d.ts.map +1 -0
  40. package/dist/channel/api/send.js +44 -0
  41. package/dist/channel/api/send.js.map +1 -0
  42. package/dist/channel/api/spawn.d.ts +13 -0
  43. package/dist/channel/api/spawn.d.ts.map +1 -0
  44. package/dist/channel/api/spawn.js +54 -0
  45. package/dist/channel/api/spawn.js.map +1 -0
  46. package/dist/channel/api/title.d.ts +5 -0
  47. package/dist/channel/api/title.d.ts.map +1 -0
  48. package/dist/channel/api/title.js +40 -0
  49. package/dist/channel/api/title.js.map +1 -0
  50. package/dist/channel/api/types.d.ts +64 -0
  51. package/dist/channel/api/types.d.ts.map +1 -0
  52. package/dist/channel/api/types.js +2 -0
  53. package/dist/channel/api/types.js.map +1 -0
  54. package/dist/channel/api/watch-channels.d.ts +40 -0
  55. package/dist/channel/api/watch-channels.d.ts.map +1 -0
  56. package/dist/channel/api/watch-channels.js +143 -0
  57. package/dist/channel/api/watch-channels.js.map +1 -0
  58. package/dist/channel/api/watch.d.ts +11 -0
  59. package/dist/channel/api/watch.d.ts.map +1 -0
  60. package/dist/channel/api/watch.js +17 -0
  61. package/dist/channel/api/watch.js.map +1 -0
  62. package/dist/channel/api/workers.d.ts +69 -0
  63. package/dist/channel/api/workers.d.ts.map +1 -0
  64. package/dist/channel/api/workers.js +145 -0
  65. package/dist/channel/api/workers.js.map +1 -0
  66. package/dist/channel/index.d.ts +38 -0
  67. package/dist/channel/index.d.ts.map +1 -0
  68. package/dist/channel/index.js +23 -0
  69. package/dist/channel/index.js.map +1 -0
  70. package/dist/channel/internal/store/channel-metadata.d.ts +23 -0
  71. package/dist/channel/internal/store/channel-metadata.d.ts.map +1 -0
  72. package/dist/channel/internal/store/channel-metadata.js +94 -0
  73. package/dist/channel/internal/store/channel-metadata.js.map +1 -0
  74. package/dist/channel/internal/store/delivery.d.ts +27 -0
  75. package/dist/channel/internal/store/delivery.d.ts.map +1 -0
  76. package/dist/channel/internal/store/delivery.js +37 -0
  77. package/dist/channel/internal/store/delivery.js.map +1 -0
  78. package/dist/channel/internal/store/events.d.ts +203 -0
  79. package/dist/channel/internal/store/events.d.ts.map +1 -0
  80. package/dist/channel/internal/store/events.js +185 -0
  81. package/dist/channel/internal/store/events.js.map +1 -0
  82. package/dist/channel/internal/store/filter.d.ts +22 -0
  83. package/dist/channel/internal/store/filter.d.ts.map +1 -0
  84. package/dist/channel/internal/store/filter.js +78 -0
  85. package/dist/channel/internal/store/filter.js.map +1 -0
  86. package/dist/channel/internal/store/inbox.d.ts +17 -0
  87. package/dist/channel/internal/store/inbox.d.ts.map +1 -0
  88. package/dist/channel/internal/store/inbox.js +30 -0
  89. package/dist/channel/internal/store/inbox.js.map +1 -0
  90. package/dist/channel/internal/store/lock.d.ts +17 -0
  91. package/dist/channel/internal/store/lock.d.ts.map +1 -0
  92. package/dist/channel/internal/store/lock.js +88 -0
  93. package/dist/channel/internal/store/lock.js.map +1 -0
  94. package/dist/channel/internal/store/paths.d.ts +43 -0
  95. package/dist/channel/internal/store/paths.d.ts.map +1 -0
  96. package/dist/channel/internal/store/paths.js +233 -0
  97. package/dist/channel/internal/store/paths.js.map +1 -0
  98. package/dist/channel/internal/store/schema.d.ts +77 -0
  99. package/dist/channel/internal/store/schema.d.ts.map +1 -0
  100. package/dist/channel/internal/store/schema.js +127 -0
  101. package/dist/channel/internal/store/schema.js.map +1 -0
  102. package/dist/channel/internal/store/seq.d.ts +12 -0
  103. package/dist/channel/internal/store/seq.d.ts.map +1 -0
  104. package/dist/channel/internal/store/seq.js +133 -0
  105. package/dist/channel/internal/store/seq.js.map +1 -0
  106. package/dist/channel/internal/store/thread-state.d.ts +37 -0
  107. package/dist/channel/internal/store/thread-state.d.ts.map +1 -0
  108. package/dist/channel/internal/store/thread-state.js +206 -0
  109. package/dist/channel/internal/store/thread-state.js.map +1 -0
  110. package/dist/channel/internal/store/watch.d.ts +10 -0
  111. package/dist/channel/internal/store/watch.d.ts.map +1 -0
  112. package/dist/channel/internal/store/watch.js +122 -0
  113. package/dist/channel/internal/store/watch.js.map +1 -0
  114. package/dist/channel/internal/store/worker-state.d.ts +49 -0
  115. package/dist/channel/internal/store/worker-state.d.ts.map +1 -0
  116. package/dist/channel/internal/store/worker-state.js +207 -0
  117. package/dist/channel/internal/store/worker-state.js.map +1 -0
  118. package/dist/index.d.ts +3 -0
  119. package/dist/index.d.ts.map +1 -0
  120. package/dist/index.js +7 -0
  121. package/dist/index.js.map +1 -0
  122. package/dist/mem/adapters/claude.d.ts +22 -0
  123. package/dist/mem/adapters/claude.d.ts.map +1 -0
  124. package/dist/mem/adapters/claude.js +252 -0
  125. package/dist/mem/adapters/claude.js.map +1 -0
  126. package/dist/mem/adapters/codex.d.ts +35 -0
  127. package/dist/mem/adapters/codex.d.ts.map +1 -0
  128. package/dist/mem/adapters/codex.js +222 -0
  129. package/dist/mem/adapters/codex.js.map +1 -0
  130. package/dist/mem/adapters/opencode.d.ts +19 -0
  131. package/dist/mem/adapters/opencode.d.ts.map +1 -0
  132. package/dist/mem/adapters/opencode.js +25 -0
  133. package/dist/mem/adapters/opencode.js.map +1 -0
  134. package/dist/mem/context.d.ts +23 -0
  135. package/dist/mem/context.d.ts.map +1 -0
  136. package/dist/mem/context.js +118 -0
  137. package/dist/mem/context.js.map +1 -0
  138. package/dist/mem/dialogue.d.ts +17 -0
  139. package/dist/mem/dialogue.d.ts.map +1 -0
  140. package/dist/mem/dialogue.js +51 -0
  141. package/dist/mem/dialogue.js.map +1 -0
  142. package/dist/mem/filter.d.ts +31 -0
  143. package/dist/mem/filter.d.ts.map +1 -0
  144. package/dist/mem/filter.js +70 -0
  145. package/dist/mem/filter.js.map +1 -0
  146. package/dist/mem/index.d.ts +18 -0
  147. package/dist/mem/index.d.ts.map +1 -0
  148. package/dist/mem/index.js +17 -0
  149. package/dist/mem/index.js.map +1 -0
  150. package/dist/mem/internal/jsonl.d.ts +35 -0
  151. package/dist/mem/internal/jsonl.d.ts.map +1 -0
  152. package/dist/mem/internal/jsonl.js +125 -0
  153. package/dist/mem/internal/jsonl.js.map +1 -0
  154. package/dist/mem/internal/paths.d.ts +18 -0
  155. package/dist/mem/internal/paths.d.ts.map +1 -0
  156. package/dist/mem/internal/paths.js +51 -0
  157. package/dist/mem/internal/paths.js.map +1 -0
  158. package/dist/mem/phase.d.ts +45 -0
  159. package/dist/mem/phase.d.ts.map +1 -0
  160. package/dist/mem/phase.js +220 -0
  161. package/dist/mem/phase.js.map +1 -0
  162. package/dist/mem/projects.d.ts +13 -0
  163. package/dist/mem/projects.d.ts.map +1 -0
  164. package/dist/mem/projects.js +37 -0
  165. package/dist/mem/projects.js.map +1 -0
  166. package/dist/mem/search.d.ts +32 -0
  167. package/dist/mem/search.d.ts.map +1 -0
  168. package/dist/mem/search.js +125 -0
  169. package/dist/mem/search.js.map +1 -0
  170. package/dist/mem/sessions.d.ts +37 -0
  171. package/dist/mem/sessions.d.ts.map +1 -0
  172. package/dist/mem/sessions.js +270 -0
  173. package/dist/mem/sessions.js.map +1 -0
  174. package/dist/mem/types.d.ts +176 -0
  175. package/dist/mem/types.d.ts.map +1 -0
  176. package/dist/mem/types.js +10 -0
  177. package/dist/mem/types.js.map +1 -0
  178. package/dist/task/index.d.ts +9 -0
  179. package/dist/task/index.d.ts.map +1 -0
  180. package/dist/task/index.js +9 -0
  181. package/dist/task/index.js.map +1 -0
  182. package/dist/task/paths.d.ts +37 -0
  183. package/dist/task/paths.d.ts.map +1 -0
  184. package/dist/task/paths.js +49 -0
  185. package/dist/task/paths.js.map +1 -0
  186. package/dist/task/phase.d.ts +27 -0
  187. package/dist/task/phase.d.ts.map +1 -0
  188. package/dist/task/phase.js +24 -0
  189. package/dist/task/phase.js.map +1 -0
  190. package/dist/task/records.d.ts +39 -0
  191. package/dist/task/records.d.ts.map +1 -0
  192. package/dist/task/records.js +89 -0
  193. package/dist/task/records.js.map +1 -0
  194. package/dist/task/schema.d.ts +77 -0
  195. package/dist/task/schema.d.ts.map +1 -0
  196. package/dist/task/schema.js +220 -0
  197. package/dist/task/schema.js.map +1 -0
  198. package/dist/testing/index.d.ts +2 -0
  199. package/dist/testing/index.d.ts.map +1 -0
  200. package/dist/testing/index.js +4 -0
  201. package/dist/testing/index.js.map +1 -0
  202. package/package.json +78 -0
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Provider-injected worker runtime contract.
3
+ *
4
+ * Core owns event writes, reducer state, and the lifecycle contract. It
5
+ * must NOT import CLI provider adapters or shell-specific process
6
+ * behavior. The CLI adapter registry (or an external daemon) implements
7
+ * {@link WorkerRuntime} and passes it into {@link spawnWorker} /
8
+ * {@link interruptWorker}.
9
+ */
10
+ import type { InterruptMethod, InterruptOutcome, InterruptReason } from "../internal/store/events.js";
11
+ import type { ChannelRef, ChannelScope, InboxPolicy } from "../internal/store/schema.js";
12
+ export interface WorkerStartInput {
13
+ channel: ChannelRef;
14
+ workerId: string;
15
+ cwd: string;
16
+ systemPrompt: string;
17
+ model?: string;
18
+ resume?: string;
19
+ env?: Record<string, string>;
20
+ }
21
+ export interface WorkerRuntimeHandle {
22
+ workerId: string;
23
+ provider?: string;
24
+ pid?: number;
25
+ startedAt: string;
26
+ }
27
+ export interface WorkerInterruptInput {
28
+ workerId: string;
29
+ turnId?: string;
30
+ reason?: InterruptReason;
31
+ message?: string;
32
+ }
33
+ export interface WorkerInterruptResult {
34
+ method: InterruptMethod;
35
+ outcome: InterruptOutcome;
36
+ message?: string;
37
+ }
38
+ export interface WorkerStopInput {
39
+ workerId: string;
40
+ reason: "explicit-kill" | "timeout" | "crash" | "shutdown";
41
+ signal?: NodeJS.Signals;
42
+ force?: boolean;
43
+ }
44
+ export interface WorkerStopResult {
45
+ outcome: "stopped" | "already-stopped" | "failed";
46
+ signal?: NodeJS.Signals;
47
+ message?: string;
48
+ }
49
+ export interface WorkerRuntime {
50
+ start(input: WorkerStartInput): Promise<WorkerRuntimeHandle>;
51
+ interrupt?(input: WorkerInterruptInput): Promise<WorkerInterruptResult>;
52
+ stop?(input: WorkerStopInput): Promise<WorkerStopResult>;
53
+ }
54
+ export interface SpawnWorkerInput {
55
+ channel: string;
56
+ scope?: ChannelScope;
57
+ projectKey?: string;
58
+ cwd: string;
59
+ by: string;
60
+ workerId: string;
61
+ provider?: string;
62
+ agent?: string;
63
+ systemPrompt: string;
64
+ model?: string;
65
+ resume?: string;
66
+ inboxPolicy?: InboxPolicy;
67
+ timeoutMs?: number;
68
+ meta?: Record<string, unknown>;
69
+ }
70
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/channel/api/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,SAAS,GAAG,iBAAiB,GAAG,QAAQ,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7D,SAAS,CAAC,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxE,IAAI,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Provider-injected worker runtime contract.
3
+ *
4
+ * Core owns event writes, reducer state, and the lifecycle contract. It
5
+ * must NOT import CLI provider adapters or shell-specific process
6
+ * behavior. The CLI adapter registry (or an external daemon) implements
7
+ * {@link WorkerRuntime} and passes it into {@link spawnWorker} /
8
+ * {@link interruptWorker}.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/channel/api/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,4 @@
1
+ import { type MessageChannelEvent } from "../internal/store/events.js";
2
+ import type { SendMessageOptions } from "./types.js";
3
+ export declare function sendMessage(opts: SendMessageOptions): Promise<MessageChannelEvent>;
4
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/channel/api/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AAIrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAgD9B"}
@@ -0,0 +1,44 @@
1
+ import { appendEvent, readChannelEvents, } from "../internal/store/events.js";
2
+ import { classifyDelivery } from "../internal/store/delivery.js";
3
+ import { reduceWorkerRegistry } from "../internal/store/worker-state.js";
4
+ import { resolveChannelRef } from "./resolve.js";
5
+ export async function sendMessage(opts) {
6
+ const ref = resolveChannelRef({
7
+ channel: opts.channel,
8
+ ...(opts.scope !== undefined ? { scope: opts.scope } : {}),
9
+ ...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
10
+ ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
11
+ });
12
+ const event = (await appendEvent(opts.channel, {
13
+ kind: "message",
14
+ by: opts.by,
15
+ text: opts.text,
16
+ ...(opts.tag !== undefined ? { tag: opts.tag } : {}),
17
+ ...(opts.to !== undefined ? { to: opts.to } : {}),
18
+ ...(opts.origin !== undefined ? { origin: opts.origin } : {}),
19
+ ...(opts.meta !== undefined ? { meta: opts.meta } : {}),
20
+ }, ref.project));
21
+ // Strict delivery modes: classify targets against the durable worker
22
+ // registry and append `undeliverable` for failures. The message event
23
+ // is already durable above, so user intent is never lost.
24
+ const mode = opts.deliveryMode ?? "appendOnly";
25
+ if (mode !== "appendOnly" && opts.to !== undefined) {
26
+ const targets = Array.isArray(opts.to) ? opts.to : [opts.to];
27
+ const events = await readChannelEvents(opts.channel, ref.project);
28
+ const registry = reduceWorkerRegistry(events);
29
+ const failures = classifyDelivery(registry, targets, mode);
30
+ for (const failure of failures) {
31
+ await appendEvent(opts.channel, {
32
+ kind: "undeliverable",
33
+ by: opts.by,
34
+ targetWorker: failure.targetWorker,
35
+ messageSeq: event.seq,
36
+ reason: failure.reason,
37
+ ...(opts.origin !== undefined ? { origin: opts.origin } : {}),
38
+ ...(opts.meta !== undefined ? { meta: opts.meta } : {}),
39
+ }, ref.project);
40
+ }
41
+ }
42
+ return event;
43
+ }
44
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/channel/api/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type WorkerState } from "../internal/store/worker-state.js";
2
+ import type { SpawnWorkerInput, WorkerRuntime } from "./runtime.js";
3
+ /**
4
+ * Spawn a worker through a provider-injected runtime.
5
+ *
6
+ * Core resolves the channel, asks the injected runtime to start the
7
+ * worker process, appends the durable `spawned` event (with runtime
8
+ * metadata and the selected inbox policy), and returns the projected
9
+ * {@link WorkerState}. The runtime owns process launch details; core
10
+ * owns event writes and state projection.
11
+ */
12
+ export declare function spawnWorker(input: SpawnWorkerInput, runtime: WorkerRuntime): Promise<WorkerState>;
13
+ //# sourceMappingURL=spawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/channel/api/spawn.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EAEd,MAAM,cAAc,CAAC;AAEtB;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,WAAW,CAAC,CAkDtB"}
@@ -0,0 +1,54 @@
1
+ import { appendEvent, readChannelEvents, } from "../internal/store/events.js";
2
+ import { DEFAULT_INBOX_POLICY } from "../internal/store/inbox.js";
3
+ import { reduceWorkerRegistry, } from "../internal/store/worker-state.js";
4
+ import { resolveChannelRef } from "./resolve.js";
5
+ /**
6
+ * Spawn a worker through a provider-injected runtime.
7
+ *
8
+ * Core resolves the channel, asks the injected runtime to start the
9
+ * worker process, appends the durable `spawned` event (with runtime
10
+ * metadata and the selected inbox policy), and returns the projected
11
+ * {@link WorkerState}. The runtime owns process launch details; core
12
+ * owns event writes and state projection.
13
+ */
14
+ export async function spawnWorker(input, runtime) {
15
+ const ref = resolveChannelRef({
16
+ channel: input.channel,
17
+ ...(input.scope !== undefined ? { scope: input.scope } : {}),
18
+ ...(input.projectKey !== undefined
19
+ ? { projectKey: input.projectKey }
20
+ : {}),
21
+ ...(input.cwd !== undefined ? { cwd: input.cwd } : {}),
22
+ });
23
+ const startInput = {
24
+ channel: ref,
25
+ workerId: input.workerId,
26
+ cwd: input.cwd,
27
+ systemPrompt: input.systemPrompt,
28
+ ...(input.model !== undefined ? { model: input.model } : {}),
29
+ ...(input.resume !== undefined ? { resume: input.resume } : {}),
30
+ };
31
+ const handle = await runtime.start(startInput);
32
+ const inboxPolicy = input.inboxPolicy ?? DEFAULT_INBOX_POLICY;
33
+ await appendEvent(input.channel, {
34
+ kind: "spawned",
35
+ by: input.by,
36
+ as: input.workerId,
37
+ inboxPolicy,
38
+ ...(input.provider ?? handle.provider
39
+ ? { provider: input.provider ?? handle.provider }
40
+ : {}),
41
+ ...(handle.pid !== undefined ? { pid: handle.pid } : {}),
42
+ ...(input.agent !== undefined ? { agent: input.agent } : {}),
43
+ ...(input.meta !== undefined ? { meta: input.meta } : {}),
44
+ }, ref.project);
45
+ const events = await readChannelEvents(input.channel, ref.project);
46
+ const registry = reduceWorkerRegistry(events, ref);
47
+ const state = registry.workers.find((w) => w.workerId === input.workerId);
48
+ if (!state) {
49
+ // Should never happen — we just appended the spawned event.
50
+ throw new Error(`spawnWorker: worker '${input.workerId}' missing from registry after spawn`);
51
+ }
52
+ return state;
53
+ }
54
+ //# sourceMappingURL=spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/channel/api/spawn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type ChannelMetadataEvent } from "../internal/store/events.js";
2
+ import type { ClearChannelTitleOptions, SetChannelTitleOptions } from "./types.js";
3
+ export declare function setChannelTitle(opts: SetChannelTitleOptions): Promise<ChannelMetadataEvent>;
4
+ export declare function clearChannelTitle(opts: ClearChannelTitleOptions): Promise<ChannelMetadataEvent>;
5
+ //# sourceMappingURL=title.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../../src/channel/api/title.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EACV,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,wBAAsB,eAAe,CACnC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAuB/B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAoB/B"}
@@ -0,0 +1,40 @@
1
+ import { appendEvent, } from "../internal/store/events.js";
2
+ import { resolveChannelRef } from "./resolve.js";
3
+ export async function setChannelTitle(opts) {
4
+ if (!opts.title || opts.title.length === 0) {
5
+ throw new Error("Channel title must not be empty (use clearChannelTitle)");
6
+ }
7
+ const ref = resolveChannelRef({
8
+ channel: opts.channel,
9
+ ...(opts.scope !== undefined ? { scope: opts.scope } : {}),
10
+ ...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
11
+ ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
12
+ });
13
+ const event = await appendEvent(opts.channel, {
14
+ kind: "channel",
15
+ action: "title",
16
+ by: opts.by,
17
+ title: opts.title,
18
+ ...(opts.origin !== undefined ? { origin: opts.origin } : {}),
19
+ ...(opts.meta !== undefined ? { meta: opts.meta } : {}),
20
+ }, ref.project);
21
+ return event;
22
+ }
23
+ export async function clearChannelTitle(opts) {
24
+ const ref = resolveChannelRef({
25
+ channel: opts.channel,
26
+ ...(opts.scope !== undefined ? { scope: opts.scope } : {}),
27
+ ...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
28
+ ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
29
+ });
30
+ const event = await appendEvent(opts.channel, {
31
+ kind: "channel",
32
+ action: "title",
33
+ by: opts.by,
34
+ title: null,
35
+ ...(opts.origin !== undefined ? { origin: opts.origin } : {}),
36
+ ...(opts.meta !== undefined ? { meta: opts.meta } : {}),
37
+ }, ref.project);
38
+ return event;
39
+ }
40
+ //# sourceMappingURL=title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"title.js","sourceRoot":"","sources":["../../../src/channel/api/title.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { DeliveryMode } from "../internal/store/delivery.js";
2
+ import type { ChannelScope, ContextEntry, EventOrigin } from "../internal/store/schema.js";
3
+ export interface ChannelAddressOptions {
4
+ channel: string;
5
+ scope?: ChannelScope;
6
+ /** Storage project bucket key. Not the create-event `project` slug. */
7
+ projectKey?: string;
8
+ /** cwd used to derive the project bucket when scope is "project". */
9
+ cwd?: string;
10
+ }
11
+ export interface MutationCommonOptions {
12
+ by: string;
13
+ origin?: EventOrigin;
14
+ meta?: Record<string, unknown>;
15
+ }
16
+ export interface CreateChannelOptions extends ChannelAddressOptions, MutationCommonOptions {
17
+ type?: "chat" | "forum";
18
+ task?: string;
19
+ project?: string;
20
+ labels?: string[];
21
+ description?: string;
22
+ context?: ContextEntry[];
23
+ ephemeral?: boolean;
24
+ force?: boolean;
25
+ }
26
+ export interface SendMessageOptions extends ChannelAddressOptions, MutationCommonOptions {
27
+ text: string;
28
+ to?: string | string[];
29
+ tag?: string;
30
+ /**
31
+ * Delivery validation mode. Defaults to `appendOnly`, which preserves
32
+ * append-only / pre-spawn backlog behavior. Strict modes append the
33
+ * message first, then append `undeliverable` events for targeted
34
+ * workers that fail the selected condition.
35
+ */
36
+ deliveryMode?: DeliveryMode;
37
+ }
38
+ export interface PostThreadOptions extends ChannelAddressOptions, MutationCommonOptions {
39
+ action: "opened" | "comment" | "status" | "labels" | "assignees" | "summary" | "processed";
40
+ thread: string;
41
+ title?: string;
42
+ text?: string;
43
+ description?: string;
44
+ status?: string;
45
+ labels?: string[];
46
+ assignees?: string[];
47
+ summary?: string;
48
+ context?: ContextEntry[];
49
+ }
50
+ export interface ContextMutationOptions extends ChannelAddressOptions, MutationCommonOptions {
51
+ context: ContextEntry[];
52
+ }
53
+ export interface ThreadContextMutationOptions extends ContextMutationOptions {
54
+ thread: string;
55
+ }
56
+ export interface RenameThreadOptions extends ChannelAddressOptions, MutationCommonOptions {
57
+ thread: string;
58
+ newThread: string;
59
+ }
60
+ export interface SetChannelTitleOptions extends ChannelAddressOptions, MutationCommonOptions {
61
+ title: string;
62
+ }
63
+ export type ClearChannelTitleOptions = ChannelAddressOptions & MutationCommonOptions;
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channel/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACZ,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,oBACf,SAAQ,qBAAqB,EAC3B,qBAAqB;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CAEjB;AAED,MAAM,WAAW,kBACf,SAAQ,qBAAqB,EAC3B,qBAAqB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,iBACf,SAAQ,qBAAqB,EAC3B,qBAAqB;IACvB,MAAM,EACF,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,SAAS,GACT,WAAW,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,sBACf,SAAQ,qBAAqB,EAC3B,qBAAqB;IACvB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,4BAA6B,SAAQ,sBAAsB;IAC1E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBACf,SAAQ,qBAAqB,EAC3B,qBAAqB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBACf,SAAQ,qBAAqB,EAC3B,qBAAqB;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,wBAAwB,GAAG,qBAAqB,GAC1D,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/channel/api/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import type { ChannelEvent } from "../internal/store/events.js";
2
+ import type { ChannelEventFilter } from "../internal/store/filter.js";
3
+ import { type ChannelRef } from "../internal/store/schema.js";
4
+ /** Stable per-channel cursor key: `${scope}/${project}/${name}`. */
5
+ export type ChannelCursorKey = string;
6
+ /** Per-channel resume cursor for the cross-channel watcher. */
7
+ export type ChannelCursor = Record<ChannelCursorKey, number>;
8
+ export declare function channelCursorKey(ref: ChannelRef): ChannelCursorKey;
9
+ export interface WatchChannelsInput {
10
+ /** Project bucket scope, or the global bucket. */
11
+ scope: {
12
+ projectKey: string;
13
+ } | "global";
14
+ filter?: ChannelEventFilter;
15
+ /** Per-channel resume cursors keyed by {@link channelCursorKey}. */
16
+ cursor?: ChannelCursor;
17
+ signal?: AbortSignal;
18
+ /**
19
+ * When a channel is discovered after the watcher starts, read its
20
+ * backlog from seq 0. Default false (tail from end).
21
+ */
22
+ fromStartNewChannels?: boolean;
23
+ /** Channel-discovery poll interval in ms. Default 500. */
24
+ discoveryIntervalMs?: number;
25
+ }
26
+ export interface CrossChannelEvent {
27
+ channel: ChannelRef;
28
+ event: ChannelEvent;
29
+ /** Snapshot of the full cursor map after applying this event. */
30
+ cursor: ChannelCursor;
31
+ }
32
+ /**
33
+ * Watch every channel in a project (or the global) scope and fan their
34
+ * events into a single stream. Channels created inside the scope after
35
+ * the watcher starts are discovered dynamically. Each yielded event
36
+ * carries a snapshot of the per-channel cursor map so consumers can
37
+ * checkpoint `(channel, seq)` — delivery is at-least-once.
38
+ */
39
+ export declare function watchChannels(input: WatchChannelsInput): AsyncGenerator<CrossChannelEvent, void, unknown>;
40
+ //# sourceMappingURL=watch-channels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-channels.d.ts","sourceRoot":"","sources":["../../../src/channel/api/watch-channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAKtE,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,6BAA6B,CAAC;AAGrC,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE7D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAElE;AAED,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,QAAQ,CAAC;IACzC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,oEAAoE;IACpE,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,iEAAiE;IACjE,MAAM,EAAE,aAAa,CAAC;CACvB;AAYD;;;;;;GAMG;AACH,wBAAuB,aAAa,CAClC,KAAK,EAAE,kBAAkB,GACxB,cAAc,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAgIlD"}
@@ -0,0 +1,143 @@
1
+ import { channelDir, listChannelNamesInProject, } from "../internal/store/paths.js";
2
+ import { GLOBAL_PROJECT_KEY, } from "../internal/store/schema.js";
3
+ import { watchEvents } from "../internal/store/watch.js";
4
+ export function channelCursorKey(ref) {
5
+ return `${ref.scope}/${ref.project}/${ref.name}`;
6
+ }
7
+ function resolveScope(input) {
8
+ if (input.scope === "global") {
9
+ return { project: GLOBAL_PROJECT_KEY, scope: "global" };
10
+ }
11
+ return { project: input.scope.projectKey, scope: "project" };
12
+ }
13
+ /**
14
+ * Watch every channel in a project (or the global) scope and fan their
15
+ * events into a single stream. Channels created inside the scope after
16
+ * the watcher starts are discovered dynamically. Each yielded event
17
+ * carries a snapshot of the per-channel cursor map so consumers can
18
+ * checkpoint `(channel, seq)` — delivery is at-least-once.
19
+ */
20
+ export async function* watchChannels(input) {
21
+ const { project, scope } = resolveScope(input);
22
+ const filter = input.filter ?? {};
23
+ const discoveryIntervalMs = input.discoveryIntervalMs ?? 500;
24
+ const cursor = { ...(input.cursor ?? {}) };
25
+ const queue = [];
26
+ const active = new Set();
27
+ const controllers = new Map();
28
+ const tasks = new Set();
29
+ let wake = null;
30
+ let done = false;
31
+ let discovery;
32
+ let cleaned = false;
33
+ const notify = () => {
34
+ if (wake) {
35
+ const w = wake;
36
+ wake = null;
37
+ w();
38
+ }
39
+ };
40
+ const cleanup = () => {
41
+ if (cleaned)
42
+ return;
43
+ cleaned = true;
44
+ for (const controller of controllers.values()) {
45
+ controller.abort();
46
+ }
47
+ controllers.clear();
48
+ if (discovery !== undefined) {
49
+ clearInterval(discovery);
50
+ discovery = undefined;
51
+ }
52
+ input.signal?.removeEventListener("abort", abortHandler);
53
+ };
54
+ const abortHandler = () => {
55
+ done = true;
56
+ cleanup();
57
+ notify();
58
+ };
59
+ input.signal?.addEventListener("abort", abortHandler);
60
+ let initialScan = true;
61
+ const startWatcher = (name) => {
62
+ const ref = {
63
+ name,
64
+ scope,
65
+ project,
66
+ dir: channelDir(name, project),
67
+ };
68
+ const key = channelCursorKey(ref);
69
+ if (active.has(key))
70
+ return;
71
+ active.add(key);
72
+ const controller = new AbortController();
73
+ controllers.set(key, controller);
74
+ const resume = cursor[key];
75
+ const watchOpts = { project };
76
+ watchOpts.signal = controller.signal;
77
+ if (resume !== undefined) {
78
+ watchOpts.sinceSeq = resume;
79
+ }
80
+ else {
81
+ // No prior cursor: initial channels read their backlog; channels
82
+ // discovered later follow `fromStartNewChannels`.
83
+ watchOpts.fromStart = initialScan
84
+ ? true
85
+ : (input.fromStartNewChannels ?? false);
86
+ }
87
+ const task = (async () => {
88
+ try {
89
+ for await (const ev of watchEvents(name, filter, watchOpts)) {
90
+ cursor[key] = ev.seq;
91
+ queue.push({ channel: ref, event: ev, cursor: { ...cursor } });
92
+ notify();
93
+ }
94
+ }
95
+ catch {
96
+ // Watcher ended (abort / fs error). Discovery may restart it
97
+ // while the parent watcher is still active.
98
+ }
99
+ finally {
100
+ active.delete(key);
101
+ controllers.delete(key);
102
+ }
103
+ })();
104
+ tasks.add(task);
105
+ void task.finally(() => {
106
+ tasks.delete(task);
107
+ });
108
+ };
109
+ for (const name of listChannelNamesInProject(project)) {
110
+ startWatcher(name);
111
+ }
112
+ initialScan = false;
113
+ discovery = setInterval(() => {
114
+ if (done)
115
+ return;
116
+ for (const name of listChannelNamesInProject(project)) {
117
+ startWatcher(name);
118
+ }
119
+ }, discoveryIntervalMs);
120
+ try {
121
+ while (!done) {
122
+ if (input.signal?.aborted)
123
+ return;
124
+ if (queue.length > 0) {
125
+ yield queue.shift();
126
+ continue;
127
+ }
128
+ await new Promise((resolve) => {
129
+ wake = resolve;
130
+ });
131
+ }
132
+ // Drain anything that landed during the final wake.
133
+ while (queue.length > 0) {
134
+ yield queue.shift();
135
+ }
136
+ }
137
+ finally {
138
+ done = true;
139
+ cleanup();
140
+ await Promise.allSettled([...tasks]);
141
+ }
142
+ }
143
+ //# sourceMappingURL=watch-channels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-channels.js","sourceRoot":"","sources":["../../../src/channel/api/watch-channels.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,GAGnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAQzD,MAAM,UAAU,gBAAgB,CAAC,GAAe;IAC9C,OAAO,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAyBD,SAAS,YAAY,CAAC,KAAyB;IAI7C,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,aAAa,CAClC,KAAyB;IAEzB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAClC,MAAM,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,IAAI,GAAG,CAAC;IAC7D,MAAM,MAAM,GAAkB,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;IAE1D,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqC,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;IACvC,IAAI,IAAI,GAAwB,IAAI,CAAC;IACrC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,SAAqD,CAAC;IAC1D,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,IAAI,CAAC;YACf,IAAI,GAAG,IAAI,CAAC;YACZ,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QACD,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAS,EAAE;QAC9B,IAAI,GAAG,IAAI,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;IACX,CAAC,CAAC;IACF,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEtD,IAAI,WAAW,GAAG,IAAI,CAAC;IAEvB,MAAM,YAAY,GAAG,CAAC,IAAY,EAAQ,EAAE;QAC1C,MAAM,GAAG,GAAe;YACtB,IAAI;YACJ,KAAK;YACL,OAAO;YACP,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;SAC/B,CAAC;QACF,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,SAAS,GAKX,EAAE,OAAO,EAAE,CAAC;QAChB,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,iEAAiE;YACjE,kDAAkD;YAClD,SAAS,CAAC,SAAS,GAAG,WAAW;gBAC/B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,IAAI,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;oBAC5D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;oBACrB,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;oBAC/D,MAAM,EAAE,CAAC;gBACX,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;gBAC7D,4CAA4C;YAC9C,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACnB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACrB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,WAAW,GAAG,KAAK,CAAC;IAEpB,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3B,IAAI,IAAI;YAAE,OAAO;QACjB,KAAK,MAAM,IAAI,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAExB,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO;gBAAE,OAAO;YAClC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC,KAAK,EAAuB,CAAC;gBACzC,SAAS;YACX,CAAC;YACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,IAAI,GAAG,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,oDAAoD;QACpD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC,KAAK,EAAuB,CAAC;QAC3C,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,GAAG,IAAI,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type WatchFilter } from "../internal/store/watch.js";
2
+ import type { ChannelEvent } from "../internal/store/events.js";
3
+ import type { ChannelAddressOptions } from "./types.js";
4
+ export interface WatchChannelOptions extends ChannelAddressOptions {
5
+ filter?: WatchFilter;
6
+ signal?: AbortSignal;
7
+ fromStart?: boolean;
8
+ sinceSeq?: number;
9
+ }
10
+ export declare function watchChannelEvents(opts: WatchChannelOptions): AsyncGenerator<ChannelEvent, void, unknown>;
11
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/channel/api/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,mBAAmB,GACxB,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAa7C"}
@@ -0,0 +1,17 @@
1
+ import { watchEvents, } from "../internal/store/watch.js";
2
+ import { resolveChannelRef } from "./resolve.js";
3
+ export function watchChannelEvents(opts) {
4
+ const ref = resolveChannelRef({
5
+ channel: opts.channel,
6
+ ...(opts.scope !== undefined ? { scope: opts.scope } : {}),
7
+ ...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
8
+ ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
9
+ });
10
+ return watchEvents(opts.channel, opts.filter ?? {}, {
11
+ project: ref.project,
12
+ ...(opts.signal !== undefined ? { signal: opts.signal } : {}),
13
+ ...(opts.fromStart !== undefined ? { fromStart: opts.fromStart } : {}),
14
+ ...(opts.sinceSeq !== undefined ? { sinceSeq: opts.sinceSeq } : {}),
15
+ });
16
+ }
17
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/channel/api/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAEZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAUjD,MAAM,UAAU,kBAAkB,CAChC,IAAyB;IAEzB,MAAM,GAAG,GAAG,iBAAiB,CAAC;QAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC,CAAC;IACH,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE;QAClD,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC,CAAC;AACL,CAAC"}