@blxzer/cursor-trellis-core 0.5.0-beta.4 → 0.5.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.
- package/channel.d.ts +1 -0
- package/channel.js +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +27 -47
- package/task.d.ts +1 -0
- package/task.js +1 -0
- package/testing.d.ts +1 -0
- package/testing.js +1 -0
- package/dist/channel/api/assert.d.ts +0 -3
- package/dist/channel/api/assert.d.ts.map +0 -1
- package/dist/channel/api/assert.js +0 -11
- package/dist/channel/api/assert.js.map +0 -1
- package/dist/channel/api/context.d.ts +0 -21
- package/dist/channel/api/context.d.ts.map +0 -1
- package/dist/channel/api/context.js +0 -99
- package/dist/channel/api/context.js.map +0 -1
- package/dist/channel/api/create.d.ts +0 -9
- package/dist/channel/api/create.d.ts.map +0 -1
- package/dist/channel/api/create.js +0 -104
- package/dist/channel/api/create.js.map +0 -1
- package/dist/channel/api/inbox.d.ts +0 -51
- package/dist/channel/api/inbox.d.ts.map +0 -1
- package/dist/channel/api/inbox.js +0 -176
- package/dist/channel/api/inbox.js.map +0 -1
- package/dist/channel/api/interrupt.d.ts +0 -31
- package/dist/channel/api/interrupt.d.ts.map +0 -1
- package/dist/channel/api/interrupt.js +0 -102
- package/dist/channel/api/interrupt.js.map +0 -1
- package/dist/channel/api/post-thread.d.ts +0 -14
- package/dist/channel/api/post-thread.d.ts.map +0 -1
- package/dist/channel/api/post-thread.js +0 -109
- package/dist/channel/api/post-thread.js.map +0 -1
- package/dist/channel/api/read.d.ts +0 -17
- package/dist/channel/api/read.d.ts.map +0 -1
- package/dist/channel/api/read.js +0 -44
- package/dist/channel/api/read.js.map +0 -1
- package/dist/channel/api/resolve.d.ts +0 -21
- package/dist/channel/api/resolve.d.ts.map +0 -1
- package/dist/channel/api/resolve.js +0 -28
- package/dist/channel/api/resolve.js.map +0 -1
- package/dist/channel/api/runtime.d.ts +0 -70
- package/dist/channel/api/runtime.d.ts.map +0 -1
- package/dist/channel/api/runtime.js +0 -11
- package/dist/channel/api/runtime.js.map +0 -1
- package/dist/channel/api/send.d.ts +0 -4
- package/dist/channel/api/send.d.ts.map +0 -1
- package/dist/channel/api/send.js +0 -52
- package/dist/channel/api/send.js.map +0 -1
- package/dist/channel/api/spawn.d.ts +0 -13
- package/dist/channel/api/spawn.d.ts.map +0 -1
- package/dist/channel/api/spawn.js +0 -54
- package/dist/channel/api/spawn.js.map +0 -1
- package/dist/channel/api/title.d.ts +0 -5
- package/dist/channel/api/title.d.ts.map +0 -1
- package/dist/channel/api/title.js +0 -40
- package/dist/channel/api/title.js.map +0 -1
- package/dist/channel/api/types.d.ts +0 -65
- package/dist/channel/api/types.d.ts.map +0 -1
- package/dist/channel/api/types.js +0 -2
- package/dist/channel/api/types.js.map +0 -1
- package/dist/channel/api/watch-channels.d.ts +0 -40
- package/dist/channel/api/watch-channels.d.ts.map +0 -1
- package/dist/channel/api/watch-channels.js +0 -143
- package/dist/channel/api/watch-channels.js.map +0 -1
- package/dist/channel/api/watch.d.ts +0 -11
- package/dist/channel/api/watch.d.ts.map +0 -1
- package/dist/channel/api/watch.js +0 -17
- package/dist/channel/api/watch.js.map +0 -1
- package/dist/channel/api/workers.d.ts +0 -69
- package/dist/channel/api/workers.d.ts.map +0 -1
- package/dist/channel/api/workers.js +0 -145
- package/dist/channel/api/workers.js.map +0 -1
- package/dist/channel/index.d.ts +0 -38
- package/dist/channel/index.d.ts.map +0 -1
- package/dist/channel/index.js +0 -23
- package/dist/channel/index.js.map +0 -1
- package/dist/channel/internal/store/channel-metadata.d.ts +0 -23
- package/dist/channel/internal/store/channel-metadata.d.ts.map +0 -1
- package/dist/channel/internal/store/channel-metadata.js +0 -94
- package/dist/channel/internal/store/channel-metadata.js.map +0 -1
- package/dist/channel/internal/store/delivery.d.ts +0 -27
- package/dist/channel/internal/store/delivery.d.ts.map +0 -1
- package/dist/channel/internal/store/delivery.js +0 -37
- package/dist/channel/internal/store/delivery.js.map +0 -1
- package/dist/channel/internal/store/events.d.ts +0 -215
- package/dist/channel/internal/store/events.d.ts.map +0 -1
- package/dist/channel/internal/store/events.js +0 -206
- package/dist/channel/internal/store/events.js.map +0 -1
- package/dist/channel/internal/store/filter.d.ts +0 -21
- package/dist/channel/internal/store/filter.d.ts.map +0 -1
- package/dist/channel/internal/store/filter.js +0 -75
- package/dist/channel/internal/store/filter.js.map +0 -1
- package/dist/channel/internal/store/inbox.d.ts +0 -17
- package/dist/channel/internal/store/inbox.d.ts.map +0 -1
- package/dist/channel/internal/store/inbox.js +0 -30
- package/dist/channel/internal/store/inbox.js.map +0 -1
- package/dist/channel/internal/store/lock.d.ts +0 -17
- package/dist/channel/internal/store/lock.d.ts.map +0 -1
- package/dist/channel/internal/store/lock.js +0 -88
- package/dist/channel/internal/store/lock.js.map +0 -1
- package/dist/channel/internal/store/paths.d.ts +0 -43
- package/dist/channel/internal/store/paths.d.ts.map +0 -1
- package/dist/channel/internal/store/paths.js +0 -233
- package/dist/channel/internal/store/paths.js.map +0 -1
- package/dist/channel/internal/store/schema.d.ts +0 -77
- package/dist/channel/internal/store/schema.d.ts.map +0 -1
- package/dist/channel/internal/store/schema.js +0 -127
- package/dist/channel/internal/store/schema.js.map +0 -1
- package/dist/channel/internal/store/seq.d.ts +0 -12
- package/dist/channel/internal/store/seq.d.ts.map +0 -1
- package/dist/channel/internal/store/seq.js +0 -133
- package/dist/channel/internal/store/seq.js.map +0 -1
- package/dist/channel/internal/store/thread-state.d.ts +0 -37
- package/dist/channel/internal/store/thread-state.d.ts.map +0 -1
- package/dist/channel/internal/store/thread-state.js +0 -206
- package/dist/channel/internal/store/thread-state.js.map +0 -1
- package/dist/channel/internal/store/watch.d.ts +0 -10
- package/dist/channel/internal/store/watch.d.ts.map +0 -1
- package/dist/channel/internal/store/watch.js +0 -122
- package/dist/channel/internal/store/watch.js.map +0 -1
- package/dist/channel/internal/store/worker-state.d.ts +0 -56
- package/dist/channel/internal/store/worker-state.d.ts.map +0 -1
- package/dist/channel/internal/store/worker-state.js +0 -220
- package/dist/channel/internal/store/worker-state.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -7
- package/dist/index.js.map +0 -1
- package/dist/task/adapter-middleware.d.ts +0 -118
- package/dist/task/adapter-middleware.d.ts.map +0 -1
- package/dist/task/adapter-middleware.js +0 -508
- package/dist/task/adapter-middleware.js.map +0 -1
- package/dist/task/contract-migrate.d.ts +0 -29
- package/dist/task/contract-migrate.d.ts.map +0 -1
- package/dist/task/contract-migrate.js +0 -207
- package/dist/task/contract-migrate.js.map +0 -1
- package/dist/task/full-quality.d.ts +0 -89
- package/dist/task/full-quality.d.ts.map +0 -1
- package/dist/task/full-quality.js +0 -379
- package/dist/task/full-quality.js.map +0 -1
- package/dist/task/index.d.ts +0 -31
- package/dist/task/index.d.ts.map +0 -1
- package/dist/task/index.js +0 -20
- package/dist/task/index.js.map +0 -1
- package/dist/task/kernel-cli.d.ts +0 -44
- package/dist/task/kernel-cli.d.ts.map +0 -1
- package/dist/task/kernel-cli.js +0 -287
- package/dist/task/kernel-cli.js.map +0 -1
- package/dist/task/kernel-contract.d.ts +0 -113
- package/dist/task/kernel-contract.d.ts.map +0 -1
- package/dist/task/kernel-contract.js +0 -332
- package/dist/task/kernel-contract.js.map +0 -1
- package/dist/task/kernel-store.d.ts +0 -99
- package/dist/task/kernel-store.d.ts.map +0 -1
- package/dist/task/kernel-store.js +0 -735
- package/dist/task/kernel-store.js.map +0 -1
- package/dist/task/kernel-surface.d.ts +0 -39
- package/dist/task/kernel-surface.d.ts.map +0 -1
- package/dist/task/kernel-surface.js +0 -73
- package/dist/task/kernel-surface.js.map +0 -1
- package/dist/task/lite-context-pack.d.ts +0 -71
- package/dist/task/lite-context-pack.d.ts.map +0 -1
- package/dist/task/lite-context-pack.js +0 -175
- package/dist/task/lite-context-pack.js.map +0 -1
- package/dist/task/ondemand-topology.d.ts +0 -108
- package/dist/task/ondemand-topology.d.ts.map +0 -1
- package/dist/task/ondemand-topology.js +0 -453
- package/dist/task/ondemand-topology.js.map +0 -1
- package/dist/task/p36-artifact-migrate.d.ts +0 -61
- package/dist/task/p36-artifact-migrate.d.ts.map +0 -1
- package/dist/task/p36-artifact-migrate.js +0 -336
- package/dist/task/p36-artifact-migrate.js.map +0 -1
- package/dist/task/p36-wave-c.d.ts +0 -39
- package/dist/task/p36-wave-c.d.ts.map +0 -1
- package/dist/task/p36-wave-c.js +0 -100
- package/dist/task/p36-wave-c.js.map +0 -1
- package/dist/task/paths.d.ts +0 -37
- package/dist/task/paths.d.ts.map +0 -1
- package/dist/task/paths.js +0 -49
- package/dist/task/paths.js.map +0 -1
- package/dist/task/phase.d.ts +0 -27
- package/dist/task/phase.d.ts.map +0 -1
- package/dist/task/phase.js +0 -24
- package/dist/task/phase.js.map +0 -1
- package/dist/task/records.d.ts +0 -48
- package/dist/task/records.d.ts.map +0 -1
- package/dist/task/records.js +0 -100
- package/dist/task/records.js.map +0 -1
- package/dist/task/schema.d.ts +0 -77
- package/dist/task/schema.d.ts.map +0 -1
- package/dist/task/schema.js +0 -220
- package/dist/task/schema.js.map +0 -1
- package/dist/testing/index.d.ts +0 -2
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -4
- package/dist/testing/index.js.map +0 -1
package/channel.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@blxzer/pactile-core/channel";
|
package/channel.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@blxzer/pactile-core/channel";
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@blxzer/pactile-core";
|
package/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@blxzer/pactile-core";
|
package/package.json
CHANGED
|
@@ -1,72 +1,52 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blxzer/cursor-trellis-core",
|
|
3
|
-
"version": "0.5.0
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Deprecated compatibility shim for @blxzer/pactile-core",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "./
|
|
7
|
-
"types": "./
|
|
6
|
+
"main": "./index.js",
|
|
7
|
+
"types": "./index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
"./package.json": "./package.json",
|
|
10
10
|
".": {
|
|
11
|
-
"types": "./
|
|
12
|
-
"import": "./
|
|
13
|
-
"default": "./
|
|
11
|
+
"types": "./index.d.ts",
|
|
12
|
+
"import": "./index.js",
|
|
13
|
+
"default": "./index.js"
|
|
14
14
|
},
|
|
15
15
|
"./channel": {
|
|
16
|
-
"types": "./
|
|
17
|
-
"import": "./
|
|
18
|
-
"default": "./
|
|
16
|
+
"types": "./channel.d.ts",
|
|
17
|
+
"import": "./channel.js",
|
|
18
|
+
"default": "./channel.js"
|
|
19
19
|
},
|
|
20
20
|
"./task": {
|
|
21
|
-
"types": "./
|
|
22
|
-
"import": "./
|
|
23
|
-
"default": "./
|
|
21
|
+
"types": "./task.d.ts",
|
|
22
|
+
"import": "./task.js",
|
|
23
|
+
"default": "./task.js"
|
|
24
24
|
},
|
|
25
25
|
"./testing": {
|
|
26
|
-
"types": "./
|
|
27
|
-
"import": "./
|
|
28
|
-
"default": "./
|
|
26
|
+
"types": "./testing.d.ts",
|
|
27
|
+
"import": "./testing.js",
|
|
28
|
+
"default": "./testing.js"
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"files": [
|
|
32
|
-
"
|
|
32
|
+
"index.js",
|
|
33
|
+
"index.d.ts",
|
|
34
|
+
"channel.js",
|
|
35
|
+
"channel.d.ts",
|
|
36
|
+
"task.js",
|
|
37
|
+
"task.d.ts",
|
|
38
|
+
"testing.js",
|
|
39
|
+
"testing.d.ts"
|
|
33
40
|
],
|
|
34
41
|
"sideEffects": false,
|
|
35
42
|
"publishConfig": {
|
|
36
43
|
"access": "public"
|
|
37
44
|
},
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"channel",
|
|
41
|
-
"sdk",
|
|
42
|
-
"agent",
|
|
43
|
-
"events"
|
|
44
|
-
],
|
|
45
|
-
"author": "Mindfold LLC",
|
|
46
|
-
"license": "AGPL-3.0-only",
|
|
47
|
-
"devDependencies": {
|
|
48
|
-
"@eslint/js": "^9.18.0",
|
|
49
|
-
"@types/node": "^20.17.10",
|
|
50
|
-
"eslint": "^9.18.0",
|
|
51
|
-
"typescript": "^5.7.2",
|
|
52
|
-
"typescript-eslint": "^8.21.0",
|
|
53
|
-
"vitest": "^4.0.18"
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@blxzer/pactile-core": "0.5.0"
|
|
54
47
|
},
|
|
55
48
|
"engines": {
|
|
56
49
|
"node": ">=18.17.0"
|
|
57
50
|
},
|
|
58
|
-
"
|
|
59
|
-
"type": "git",
|
|
60
|
-
"url": "https://github.com/blxzer77/cursor-trellis.git"
|
|
61
|
-
},
|
|
62
|
-
"scripts": {
|
|
63
|
-
"build": "pnpm run clean && tsc",
|
|
64
|
-
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
65
|
-
"dev": "tsc --watch",
|
|
66
|
-
"test": "vitest run",
|
|
67
|
-
"test:watch": "vitest",
|
|
68
|
-
"lint": "eslint src/ test/",
|
|
69
|
-
"lint:fix": "eslint src/ test/ --fix",
|
|
70
|
-
"typecheck": "tsc --noEmit"
|
|
71
|
-
}
|
|
51
|
+
"license": "AGPL-3.0-only"
|
|
72
52
|
}
|
package/task.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@blxzer/pactile-core/task";
|
package/task.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@blxzer/pactile-core/task";
|
package/testing.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@blxzer/pactile-core/testing";
|
package/testing.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@blxzer/pactile-core/testing";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/channel/api/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AAGrC,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,EAAE,CAAC,CASzB"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { readChannelEvents, } from "../internal/store/events.js";
|
|
2
|
-
import { reduceChannelMetadata } from "../internal/store/channel-metadata.js";
|
|
3
|
-
export async function readForumChannelEvents(channel, project, operation) {
|
|
4
|
-
const events = await readChannelEvents(channel, project);
|
|
5
|
-
const metadata = reduceChannelMetadata(events);
|
|
6
|
-
if (metadata.type !== "forum") {
|
|
7
|
-
throw new Error(`Channel '${channel}' is type '${metadata.type}'. '${operation}' requires a forum channel.`);
|
|
8
|
-
}
|
|
9
|
-
return events;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=assert.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assert.js","sourceRoot":"","sources":["../../../src/channel/api/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAElB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,OAAe,EACf,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,YAAY,OAAO,cAAc,QAAQ,CAAC,IAAI,OAAO,SAAS,6BAA6B,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { type ContextChannelEvent } from "../internal/store/events.js";
|
|
2
|
-
import { type ContextEntry } from "../internal/store/schema.js";
|
|
3
|
-
import type { ContextMutationOptions, ThreadContextMutationOptions } from "./types.js";
|
|
4
|
-
export declare function addChannelContext(opts: ContextMutationOptions): Promise<ContextChannelEvent>;
|
|
5
|
-
export declare function deleteChannelContext(opts: ContextMutationOptions): Promise<ContextChannelEvent>;
|
|
6
|
-
export declare function listChannelContext(opts: {
|
|
7
|
-
channel: string;
|
|
8
|
-
scope?: ContextMutationOptions["scope"];
|
|
9
|
-
projectKey?: string;
|
|
10
|
-
cwd?: string;
|
|
11
|
-
}): Promise<ContextEntry[]>;
|
|
12
|
-
export declare function addThreadContext(opts: ThreadContextMutationOptions): Promise<ContextChannelEvent>;
|
|
13
|
-
export declare function deleteThreadContext(opts: ThreadContextMutationOptions): Promise<ContextChannelEvent>;
|
|
14
|
-
export declare function listThreadContext(opts: {
|
|
15
|
-
channel: string;
|
|
16
|
-
thread: string;
|
|
17
|
-
scope?: ContextMutationOptions["scope"];
|
|
18
|
-
projectKey?: string;
|
|
19
|
-
cwd?: string;
|
|
20
|
-
}): Promise<ContextEntry[]>;
|
|
21
|
-
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/channel/api/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AAOrC,OAAO,KAAK,EACV,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAgCpB,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAiB9B;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAiB9B;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC,YAAY,EAAE,CAAC,CAUzB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAsB9B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAsB9B;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAoB1B"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { appendEvent, readChannelEvents, } from "../internal/store/events.js";
|
|
2
|
-
import { reduceChannelMetadata } from "../internal/store/channel-metadata.js";
|
|
3
|
-
import { normalizeThreadKey, } from "../internal/store/schema.js";
|
|
4
|
-
import { reduceThreads, } from "../internal/store/thread-state.js";
|
|
5
|
-
import { readForumChannelEvents } from "./assert.js";
|
|
6
|
-
import { resolveChannelRef } from "./resolve.js";
|
|
7
|
-
async function appendContextEvent(ref, by, action, target, context, thread, origin, meta) {
|
|
8
|
-
if (!context || context.length === 0) {
|
|
9
|
-
throw new Error("context must contain at least one entry");
|
|
10
|
-
}
|
|
11
|
-
const event = await appendEvent(ref.name, {
|
|
12
|
-
kind: "context",
|
|
13
|
-
by,
|
|
14
|
-
target,
|
|
15
|
-
action,
|
|
16
|
-
context,
|
|
17
|
-
...(thread !== undefined ? { thread } : {}),
|
|
18
|
-
...(origin !== undefined ? { origin } : {}),
|
|
19
|
-
...(meta !== undefined ? { meta } : {}),
|
|
20
|
-
}, ref.project);
|
|
21
|
-
return event;
|
|
22
|
-
}
|
|
23
|
-
export async function addChannelContext(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
|
-
return appendContextEvent({ name: opts.channel, project: ref.project }, opts.by, "add", "channel", opts.context, undefined, opts.origin, opts.meta);
|
|
31
|
-
}
|
|
32
|
-
export async function deleteChannelContext(opts) {
|
|
33
|
-
const ref = resolveChannelRef({
|
|
34
|
-
channel: opts.channel,
|
|
35
|
-
...(opts.scope !== undefined ? { scope: opts.scope } : {}),
|
|
36
|
-
...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
|
|
37
|
-
...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
|
|
38
|
-
});
|
|
39
|
-
return appendContextEvent({ name: opts.channel, project: ref.project }, opts.by, "delete", "channel", opts.context, undefined, opts.origin, opts.meta);
|
|
40
|
-
}
|
|
41
|
-
export async function listChannelContext(opts) {
|
|
42
|
-
const ref = resolveChannelRef({
|
|
43
|
-
channel: opts.channel,
|
|
44
|
-
...(opts.scope !== undefined ? { scope: opts.scope } : {}),
|
|
45
|
-
...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
|
|
46
|
-
...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
|
|
47
|
-
});
|
|
48
|
-
const events = await readChannelEvents(opts.channel, ref.project);
|
|
49
|
-
const meta = reduceChannelMetadata(events);
|
|
50
|
-
return meta.context ?? [];
|
|
51
|
-
}
|
|
52
|
-
export async function addThreadContext(opts) {
|
|
53
|
-
const ref = resolveChannelRef({
|
|
54
|
-
channel: opts.channel,
|
|
55
|
-
...(opts.scope !== undefined ? { scope: opts.scope } : {}),
|
|
56
|
-
...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
|
|
57
|
-
...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
|
|
58
|
-
});
|
|
59
|
-
const thread = normalizeThreadKey(opts.thread);
|
|
60
|
-
const states = reduceThreads(await readForumChannelEvents(opts.channel, ref.project, "context add"));
|
|
61
|
-
assertKnownThread(states, thread, opts.channel);
|
|
62
|
-
return appendContextEvent({ name: opts.channel, project: ref.project }, opts.by, "add", "thread", opts.context, thread, opts.origin, opts.meta);
|
|
63
|
-
}
|
|
64
|
-
export async function deleteThreadContext(opts) {
|
|
65
|
-
const ref = resolveChannelRef({
|
|
66
|
-
channel: opts.channel,
|
|
67
|
-
...(opts.scope !== undefined ? { scope: opts.scope } : {}),
|
|
68
|
-
...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
|
|
69
|
-
...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
|
|
70
|
-
});
|
|
71
|
-
const thread = normalizeThreadKey(opts.thread);
|
|
72
|
-
const states = reduceThreads(await readForumChannelEvents(opts.channel, ref.project, "context delete"));
|
|
73
|
-
assertKnownThread(states, thread, opts.channel);
|
|
74
|
-
return appendContextEvent({ name: opts.channel, project: ref.project }, opts.by, "delete", "thread", opts.context, thread, opts.origin, opts.meta);
|
|
75
|
-
}
|
|
76
|
-
export async function listThreadContext(opts) {
|
|
77
|
-
const ref = resolveChannelRef({
|
|
78
|
-
channel: opts.channel,
|
|
79
|
-
...(opts.scope !== undefined ? { scope: opts.scope } : {}),
|
|
80
|
-
...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
|
|
81
|
-
...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
|
|
82
|
-
});
|
|
83
|
-
const events = await readForumChannelEvents(opts.channel, ref.project, "context list");
|
|
84
|
-
const states = reduceThreads(events);
|
|
85
|
-
const key = normalizeThreadKey(opts.thread);
|
|
86
|
-
for (const state of states) {
|
|
87
|
-
if (state.thread === key || state.aliases.includes(key)) {
|
|
88
|
-
return state.context ?? [];
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
return [];
|
|
92
|
-
}
|
|
93
|
-
function assertKnownThread(states, thread, channel) {
|
|
94
|
-
const found = states.some((state) => state.thread === thread || state.aliases.includes(thread));
|
|
95
|
-
if (!found) {
|
|
96
|
-
throw new Error(`Thread '${thread}' not found in channel '${channel}'.`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/channel/api/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type CreateChannelEvent } from "../internal/store/events.js";
|
|
2
|
-
import type { CreateChannelOptions } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Create a new channel. Throws when the channel already exists unless
|
|
5
|
-
* `force` is set, in which case the existing channel directory is wiped
|
|
6
|
-
* before the create event is appended.
|
|
7
|
-
*/
|
|
8
|
-
export declare function createChannel(opts: CreateChannelOptions): Promise<CreateChannelEvent>;
|
|
9
|
-
//# sourceMappingURL=create.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/channel/api/create.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAQrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAgD7B"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { appendEvent, } from "../internal/store/events.js";
|
|
4
|
-
import { channelDir, ensureBucketMarker, eventsPath, } from "../internal/store/paths.js";
|
|
5
|
-
import { parseChannelType } from "../internal/store/schema.js";
|
|
6
|
-
import { resolveChannelRef } from "./resolve.js";
|
|
7
|
-
/**
|
|
8
|
-
* Create a new channel. Throws when the channel already exists unless
|
|
9
|
-
* `force` is set, in which case the existing channel directory is wiped
|
|
10
|
-
* before the create event is appended.
|
|
11
|
-
*/
|
|
12
|
-
export async function createChannel(opts) {
|
|
13
|
-
const ref = resolveChannelRef({
|
|
14
|
-
channel: opts.channel,
|
|
15
|
-
scope: opts.scope ?? "project",
|
|
16
|
-
...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
|
|
17
|
-
...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
|
|
18
|
-
forCreate: true,
|
|
19
|
-
});
|
|
20
|
-
const channelType = parseChannelType(opts.type);
|
|
21
|
-
const events = eventsPath(opts.channel, ref.project);
|
|
22
|
-
const dir = ref.dir;
|
|
23
|
-
if (fs.existsSync(events) && !opts.force) {
|
|
24
|
-
throw new Error(`Channel '${opts.channel}' already exists at ${dir}. Use --force to overwrite.`);
|
|
25
|
-
}
|
|
26
|
-
if (opts.force && fs.existsSync(dir)) {
|
|
27
|
-
await forceCleanChannel(opts.channel, ref.project);
|
|
28
|
-
}
|
|
29
|
-
ensureBucketMarker(ref.project);
|
|
30
|
-
const cwd = opts.cwd ?? process.cwd();
|
|
31
|
-
const event = await appendEvent(opts.channel, {
|
|
32
|
-
kind: "create",
|
|
33
|
-
by: opts.by,
|
|
34
|
-
cwd,
|
|
35
|
-
scope: ref.scope,
|
|
36
|
-
type: channelType,
|
|
37
|
-
...(opts.task ? { task: opts.task } : {}),
|
|
38
|
-
...(opts.project ? { project: opts.project } : {}),
|
|
39
|
-
...(opts.labels && opts.labels.length > 0 ? { labels: opts.labels } : {}),
|
|
40
|
-
...(opts.description ? { description: opts.description } : {}),
|
|
41
|
-
...(opts.context && opts.context.length > 0
|
|
42
|
-
? { context: opts.context }
|
|
43
|
-
: {}),
|
|
44
|
-
...(opts.ephemeral ? { ephemeral: true } : {}),
|
|
45
|
-
...(opts.origin ? { origin: opts.origin } : {}),
|
|
46
|
-
...(opts.meta ? { meta: opts.meta } : {}),
|
|
47
|
-
}, ref.project);
|
|
48
|
-
return event;
|
|
49
|
-
}
|
|
50
|
-
async function forceCleanChannel(name, project) {
|
|
51
|
-
const dir = channelDir(name, project);
|
|
52
|
-
let entries;
|
|
53
|
-
try {
|
|
54
|
-
entries = fs.readdirSync(dir);
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
for (const f of entries) {
|
|
60
|
-
if (!f.endsWith(".pid"))
|
|
61
|
-
continue;
|
|
62
|
-
const pidFile = path.join(dir, f);
|
|
63
|
-
let pid = 0;
|
|
64
|
-
try {
|
|
65
|
-
pid = Number(fs.readFileSync(pidFile, "utf-8").trim());
|
|
66
|
-
}
|
|
67
|
-
catch {
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
if (pid && pidAlive(pid)) {
|
|
71
|
-
try {
|
|
72
|
-
process.kill(pid, "SIGTERM");
|
|
73
|
-
const deadline = Date.now() + 1500;
|
|
74
|
-
while (pidAlive(pid) && Date.now() < deadline) {
|
|
75
|
-
await sleep(50);
|
|
76
|
-
}
|
|
77
|
-
if (pidAlive(pid))
|
|
78
|
-
process.kill(pid, "SIGKILL");
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
// already dead
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
try {
|
|
86
|
-
fs.rmSync(dir, { recursive: true, force: true });
|
|
87
|
-
}
|
|
88
|
-
catch (err) {
|
|
89
|
-
process.stderr.write(`[channel create --force] warning: failed to fully clean ${dir}: ${err instanceof Error ? err.message : err}\n`);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
function pidAlive(pid) {
|
|
93
|
-
try {
|
|
94
|
-
process.kill(pid, 0);
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
catch {
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
function sleep(ms) {
|
|
102
|
-
return new Promise((r) => setTimeout(r, ms));
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=create.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/channel/api/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { type MessageChannelEvent } from "../internal/store/events.js";
|
|
2
|
-
import type { ChannelAddressOptions } from "./types.js";
|
|
3
|
-
export type WorkerInboxErrorCode = "WORKER_INBOX_WORKER_NOT_FOUND" | "WORKER_INBOX_WORKER_TERMINAL";
|
|
4
|
-
export declare class WorkerInboxError extends Error {
|
|
5
|
-
readonly code: WorkerInboxErrorCode;
|
|
6
|
-
readonly channel: string;
|
|
7
|
-
readonly workerId: string;
|
|
8
|
-
constructor(code: WorkerInboxErrorCode, channel: string, workerId: string, message?: string);
|
|
9
|
-
}
|
|
10
|
-
export interface ReadWorkerInboxInput extends ChannelAddressOptions {
|
|
11
|
-
workerId: string;
|
|
12
|
-
afterSeq?: number;
|
|
13
|
-
limit?: number;
|
|
14
|
-
includeTerminal?: boolean;
|
|
15
|
-
}
|
|
16
|
-
export interface WatchWorkerInboxInput extends ChannelAddressOptions {
|
|
17
|
-
workerId: string;
|
|
18
|
-
sinceSeq?: number;
|
|
19
|
-
fromStart?: boolean;
|
|
20
|
-
signal?: AbortSignal;
|
|
21
|
-
}
|
|
22
|
-
export interface WorkerInboxMessage {
|
|
23
|
-
workerId: string;
|
|
24
|
-
event: MessageChannelEvent;
|
|
25
|
-
seq: number;
|
|
26
|
-
cursor: number;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Read durable inbox messages for a specific worker.
|
|
30
|
-
*
|
|
31
|
-
* Reduces the worker registry from the channel event log, finds the worker,
|
|
32
|
-
* and filters `message` events through `matchesInboxPolicy()` using the
|
|
33
|
-
* worker's latest `inboxPolicy`. Core only reasons from the durable event
|
|
34
|
-
* log; it does not claim the OS process is live.
|
|
35
|
-
*/
|
|
36
|
-
export declare function readWorkerInbox(input: ReadWorkerInboxInput): Promise<WorkerInboxMessage[]>;
|
|
37
|
-
/**
|
|
38
|
-
* Watch future inbox messages for a specific worker.
|
|
39
|
-
*
|
|
40
|
-
* Performs upfront worker validation and captures the current `lastSeq`,
|
|
41
|
-
* then returns a generator that yields future inbox-matching messages
|
|
42
|
-
* through the channel watch primitives. The generator ends when a terminal
|
|
43
|
-
* event for the watched worker arrives; it does not cross a terminal event
|
|
44
|
-
* into a later respawn with the same id.
|
|
45
|
-
*
|
|
46
|
-
* Eager validation means errors surface from the outer call, and the
|
|
47
|
-
* watch's `sinceSeq` snapshot is taken before the caller can append more
|
|
48
|
-
* events.
|
|
49
|
-
*/
|
|
50
|
-
export declare function watchWorkerInbox(input: WatchWorkerInboxInput): Promise<AsyncGenerator<WorkerInboxMessage, void, unknown>>;
|
|
51
|
-
//# sourceMappingURL=inbox.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../src/channel/api/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,oBAAoB,GAC5B,+BAA+B,GAC/B,8BAA8B,CAAC;AAEnC,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAGxB,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM;CAQnB;AAeD,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0C/B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAsC5D"}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { readChannelEvents as readEventsInternal, } from "../internal/store/events.js";
|
|
2
|
-
import { matchesInboxPolicy } from "../internal/store/inbox.js";
|
|
3
|
-
import { watchEvents } from "../internal/store/watch.js";
|
|
4
|
-
import { reduceWorkerRegistry } from "../internal/store/worker-state.js";
|
|
5
|
-
import { resolveChannelRef } from "./resolve.js";
|
|
6
|
-
export class WorkerInboxError extends Error {
|
|
7
|
-
code;
|
|
8
|
-
channel;
|
|
9
|
-
workerId;
|
|
10
|
-
constructor(code, channel, workerId, message) {
|
|
11
|
-
super(message ?? defaultMessage(code, channel, workerId));
|
|
12
|
-
this.name = "WorkerInboxError";
|
|
13
|
-
this.code = code;
|
|
14
|
-
this.channel = channel;
|
|
15
|
-
this.workerId = workerId;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
function defaultMessage(code, channel, workerId) {
|
|
19
|
-
switch (code) {
|
|
20
|
-
case "WORKER_INBOX_WORKER_NOT_FOUND":
|
|
21
|
-
return `Worker '${workerId}' not found in channel '${channel}'`;
|
|
22
|
-
case "WORKER_INBOX_WORKER_TERMINAL":
|
|
23
|
-
return `Worker '${workerId}' in channel '${channel}' is terminal`;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
function resolve(input) {
|
|
27
|
-
return resolveChannelRef({
|
|
28
|
-
channel: input.channel,
|
|
29
|
-
...(input.scope !== undefined ? { scope: input.scope } : {}),
|
|
30
|
-
...(input.projectKey !== undefined ? { projectKey: input.projectKey } : {}),
|
|
31
|
-
...(input.cwd !== undefined ? { cwd: input.cwd } : {}),
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Read durable inbox messages for a specific worker.
|
|
36
|
-
*
|
|
37
|
-
* Reduces the worker registry from the channel event log, finds the worker,
|
|
38
|
-
* and filters `message` events through `matchesInboxPolicy()` using the
|
|
39
|
-
* worker's latest `inboxPolicy`. Core only reasons from the durable event
|
|
40
|
-
* log; it does not claim the OS process is live.
|
|
41
|
-
*/
|
|
42
|
-
export async function readWorkerInbox(input) {
|
|
43
|
-
const ref = resolve(input);
|
|
44
|
-
const events = await readEventsInternal(input.channel, ref.project);
|
|
45
|
-
const registry = reduceWorkerRegistry(events, ref);
|
|
46
|
-
const worker = registry.workers.find((w) => w.workerId === input.workerId);
|
|
47
|
-
if (!worker) {
|
|
48
|
-
throw new WorkerInboxError("WORKER_INBOX_WORKER_NOT_FOUND", input.channel, input.workerId);
|
|
49
|
-
}
|
|
50
|
-
if (worker.terminal && !input.includeTerminal) {
|
|
51
|
-
throw new WorkerInboxError("WORKER_INBOX_WORKER_TERMINAL", input.channel, input.workerId);
|
|
52
|
-
}
|
|
53
|
-
if (input.limit !== undefined &&
|
|
54
|
-
(!Number.isInteger(input.limit) || input.limit < 0)) {
|
|
55
|
-
throw new Error("readWorkerInbox: limit must be a non-negative integer");
|
|
56
|
-
}
|
|
57
|
-
if (input.limit === 0)
|
|
58
|
-
return [];
|
|
59
|
-
const afterSeq = input.afterSeq ?? 0;
|
|
60
|
-
const out = [];
|
|
61
|
-
for (const ev of events) {
|
|
62
|
-
if (ev.seq <= afterSeq)
|
|
63
|
-
continue;
|
|
64
|
-
if (!matchesInboxPolicy(ev, input.workerId, worker.inboxPolicy))
|
|
65
|
-
continue;
|
|
66
|
-
out.push({
|
|
67
|
-
workerId: input.workerId,
|
|
68
|
-
event: ev,
|
|
69
|
-
seq: ev.seq,
|
|
70
|
-
cursor: ev.seq,
|
|
71
|
-
});
|
|
72
|
-
if (input.limit !== undefined && out.length >= input.limit)
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
return out;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Watch future inbox messages for a specific worker.
|
|
79
|
-
*
|
|
80
|
-
* Performs upfront worker validation and captures the current `lastSeq`,
|
|
81
|
-
* then returns a generator that yields future inbox-matching messages
|
|
82
|
-
* through the channel watch primitives. The generator ends when a terminal
|
|
83
|
-
* event for the watched worker arrives; it does not cross a terminal event
|
|
84
|
-
* into a later respawn with the same id.
|
|
85
|
-
*
|
|
86
|
-
* Eager validation means errors surface from the outer call, and the
|
|
87
|
-
* watch's `sinceSeq` snapshot is taken before the caller can append more
|
|
88
|
-
* events.
|
|
89
|
-
*/
|
|
90
|
-
export async function watchWorkerInbox(input) {
|
|
91
|
-
const ref = resolve(input);
|
|
92
|
-
const events = await readEventsInternal(input.channel, ref.project);
|
|
93
|
-
const registry = reduceWorkerRegistry(events, ref);
|
|
94
|
-
const worker = registry.workers.find((w) => w.workerId === input.workerId);
|
|
95
|
-
if (!worker) {
|
|
96
|
-
throw new WorkerInboxError("WORKER_INBOX_WORKER_NOT_FOUND", input.channel, input.workerId);
|
|
97
|
-
}
|
|
98
|
-
if (worker.terminal) {
|
|
99
|
-
throw new WorkerInboxError("WORKER_INBOX_WORKER_TERMINAL", input.channel, input.workerId);
|
|
100
|
-
}
|
|
101
|
-
const policy = worker.inboxPolicy;
|
|
102
|
-
const lastSeq = events.length > 0 ? events[events.length - 1].seq : 0;
|
|
103
|
-
const generationFloorSeq = findGenerationFloorSeq(events, input.workerId);
|
|
104
|
-
const watchOpts = { project: ref.project };
|
|
105
|
-
if (input.signal !== undefined)
|
|
106
|
-
watchOpts.signal = input.signal;
|
|
107
|
-
if (input.fromStart) {
|
|
108
|
-
watchOpts.sinceSeq = generationFloorSeq;
|
|
109
|
-
}
|
|
110
|
-
else if (input.sinceSeq !== undefined) {
|
|
111
|
-
watchOpts.sinceSeq = Math.max(input.sinceSeq, generationFloorSeq);
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
watchOpts.sinceSeq = lastSeq;
|
|
115
|
-
}
|
|
116
|
-
return inboxWatchGenerator(input.channel, input.workerId, policy, watchOpts);
|
|
117
|
-
}
|
|
118
|
-
async function* inboxWatchGenerator(channel, workerId, policy, watchOpts) {
|
|
119
|
-
for await (const ev of watchEvents(channel, { includeNonMeaningful: true, includeProgress: false }, watchOpts)) {
|
|
120
|
-
if (isTerminalForWorker(ev, workerId))
|
|
121
|
-
return;
|
|
122
|
-
if (matchesInboxPolicy(ev, workerId, policy)) {
|
|
123
|
-
yield {
|
|
124
|
-
workerId,
|
|
125
|
-
event: ev,
|
|
126
|
-
seq: ev.seq,
|
|
127
|
-
cursor: ev.seq,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
function isTerminalForWorker(ev, workerId) {
|
|
133
|
-
if (ev.kind === "killed") {
|
|
134
|
-
return resolveWorkerId(ev) === workerId;
|
|
135
|
-
}
|
|
136
|
-
if (ev.kind === "done") {
|
|
137
|
-
if (ev.synthesized !== true)
|
|
138
|
-
return false;
|
|
139
|
-
return resolveWorkerId(ev) === workerId;
|
|
140
|
-
}
|
|
141
|
-
if (ev.kind === "error") {
|
|
142
|
-
const synthesized = ev.synthesized === true;
|
|
143
|
-
const fromSupervisor = ev.by.startsWith("supervisor:");
|
|
144
|
-
if (!synthesized && !fromSupervisor)
|
|
145
|
-
return false;
|
|
146
|
-
return resolveWorkerId(ev) === workerId;
|
|
147
|
-
}
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
|
-
function findGenerationFloorSeq(events, workerId) {
|
|
151
|
-
let lastTerminalSeq = 0;
|
|
152
|
-
let generationFloorSeq = 0;
|
|
153
|
-
for (const ev of events) {
|
|
154
|
-
if (isTerminalForWorker(ev, workerId)) {
|
|
155
|
-
lastTerminalSeq = ev.seq;
|
|
156
|
-
continue;
|
|
157
|
-
}
|
|
158
|
-
if (isSpawnedForWorker(ev, workerId)) {
|
|
159
|
-
generationFloorSeq = lastTerminalSeq;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return generationFloorSeq;
|
|
163
|
-
}
|
|
164
|
-
function isSpawnedForWorker(ev, workerId) {
|
|
165
|
-
return ev.kind === "spawned" && ev.as === workerId;
|
|
166
|
-
}
|
|
167
|
-
function resolveWorkerId(ev) {
|
|
168
|
-
const explicit = ev.worker ?? ev.as;
|
|
169
|
-
if (explicit)
|
|
170
|
-
return explicit;
|
|
171
|
-
return stripSupervisor(ev.by);
|
|
172
|
-
}
|
|
173
|
-
function stripSupervisor(by) {
|
|
174
|
-
return by.startsWith("supervisor:") ? by.slice("supervisor:".length) : by;
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=inbox.js.map
|