@pennixrv/trellis-core 0.7.0-beta.8 → 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.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/mem/adapters/claude.d.ts +1 -1
- package/dist/mem/adapters/claude.js +1 -1
- package/dist/mem/adapters/codex.d.ts +1 -1
- package/dist/mem/adapters/codex.js +1 -1
- package/dist/mem/adapters/devin.d.ts +1 -1
- package/dist/mem/adapters/devin.js +1 -1
- package/dist/mem/adapters/grok.d.ts +1 -1
- package/dist/mem/adapters/grok.js +1 -1
- package/dist/mem/adapters/zcode.d.ts +1 -1
- package/dist/mem/adapters/zcode.js +1 -1
- package/dist/mem/index.d.ts +3 -3
- package/dist/mem/index.js +3 -3
- package/dist/mem/phase.d.ts +4 -4
- package/dist/mem/phase.d.ts.map +1 -1
- package/dist/mem/phase.js +23 -26
- package/dist/mem/phase.js.map +1 -1
- package/dist/mem/sessions.js +2 -2
- package/dist/mem/sessions.js.map +1 -1
- package/dist/mem/types.d.ts +6 -6
- package/dist/mem/types.d.ts.map +1 -1
- package/dist/mem/types.js +3 -3
- package/dist/task/index.d.ts +2 -2
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +2 -2
- package/dist/task/index.js.map +1 -1
- package/dist/task/phase.d.ts +61 -26
- package/dist/task/phase.d.ts.map +1 -1
- package/dist/task/phase.js +152 -21
- package/dist/task/phase.js.map +1 -1
- package/dist/teamwork/api/assert.d.ts +3 -0
- package/dist/teamwork/api/assert.d.ts.map +1 -0
- package/dist/teamwork/api/assert.js +11 -0
- package/dist/teamwork/api/assert.js.map +1 -0
- package/dist/{channel → teamwork}/api/context.d.ts +8 -8
- package/dist/teamwork/api/context.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/context.js +32 -32
- package/dist/teamwork/api/context.js.map +1 -0
- package/dist/teamwork/api/coordination.d.ts +40 -0
- package/dist/teamwork/api/coordination.d.ts.map +1 -0
- package/dist/teamwork/api/coordination.js +50 -0
- package/dist/teamwork/api/coordination.js.map +1 -0
- package/dist/teamwork/api/create.d.ts +9 -0
- package/dist/teamwork/api/create.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/create.js +17 -20
- package/dist/teamwork/api/create.js.map +1 -0
- package/dist/{channel → teamwork}/api/inbox.d.ts +9 -9
- package/dist/teamwork/api/inbox.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/inbox.js +22 -22
- package/dist/teamwork/api/inbox.js.map +1 -0
- package/dist/{channel → teamwork}/api/interrupt.d.ts +5 -5
- package/dist/teamwork/api/interrupt.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/interrupt.js +10 -10
- package/dist/teamwork/api/interrupt.js.map +1 -0
- package/dist/{channel → teamwork}/api/post-thread.d.ts +4 -4
- package/dist/teamwork/api/post-thread.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/post-thread.js +13 -13
- package/dist/teamwork/api/post-thread.js.map +1 -0
- package/dist/teamwork/api/read.d.ts +17 -0
- package/dist/teamwork/api/read.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/read.js +17 -17
- package/dist/teamwork/api/read.js.map +1 -0
- package/dist/teamwork/api/resolve.d.ts +21 -0
- package/dist/teamwork/api/resolve.d.ts.map +1 -0
- package/dist/teamwork/api/resolve.js +28 -0
- package/dist/teamwork/api/resolve.js.map +1 -0
- package/dist/{channel → teamwork}/api/runtime.d.ts +4 -4
- package/dist/teamwork/api/runtime.d.ts.map +1 -0
- package/dist/teamwork/api/runtime.js.map +1 -0
- package/dist/teamwork/api/send.d.ts +4 -0
- package/dist/teamwork/api/send.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/send.js +7 -7
- package/dist/teamwork/api/send.js.map +1 -0
- package/dist/{channel → teamwork}/api/spawn.d.ts +1 -1
- package/dist/teamwork/api/spawn.d.ts.map +1 -0
- package/dist/teamwork/api/spawn.js +54 -0
- package/dist/teamwork/api/spawn.js.map +1 -0
- package/dist/teamwork/api/title.d.ts +5 -0
- package/dist/teamwork/api/title.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/title.js +12 -12
- package/dist/teamwork/api/title.js.map +1 -0
- package/dist/{channel → teamwork}/api/types.d.ts +11 -13
- package/dist/teamwork/api/types.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/types.js.map +1 -1
- package/dist/teamwork/api/watch-sessions.d.ts +40 -0
- package/dist/teamwork/api/watch-sessions.d.ts.map +1 -0
- package/dist/{channel/api/watch-channels.js → teamwork/api/watch-sessions.js} +16 -16
- package/dist/teamwork/api/watch-sessions.js.map +1 -0
- package/dist/teamwork/api/watch.d.ts +11 -0
- package/dist/teamwork/api/watch.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/watch.js +5 -5
- package/dist/teamwork/api/watch.js.map +1 -0
- package/dist/{channel → teamwork}/api/workers.d.ts +10 -10
- package/dist/teamwork/api/workers.d.ts.map +1 -0
- package/dist/{channel → teamwork}/api/workers.js +14 -14
- package/dist/teamwork/api/workers.js.map +1 -0
- package/dist/teamwork/index.d.ts +42 -0
- package/dist/teamwork/index.d.ts.map +1 -0
- package/dist/teamwork/index.js +25 -0
- package/dist/teamwork/index.js.map +1 -0
- package/dist/teamwork/internal/store/coordination.d.ts +64 -0
- package/dist/teamwork/internal/store/coordination.d.ts.map +1 -0
- package/dist/teamwork/internal/store/coordination.js +311 -0
- package/dist/teamwork/internal/store/coordination.js.map +1 -0
- package/dist/teamwork/internal/store/delivery.d.ts.map +1 -0
- package/dist/teamwork/internal/store/delivery.js.map +1 -0
- package/dist/teamwork/internal/store/events.d.ts +232 -0
- package/dist/teamwork/internal/store/events.d.ts.map +1 -0
- package/dist/{channel → teamwork}/internal/store/events.js +24 -21
- package/dist/teamwork/internal/store/events.js.map +1 -0
- package/dist/{channel → teamwork}/internal/store/filter.d.ts +5 -5
- package/dist/teamwork/internal/store/filter.d.ts.map +1 -0
- package/dist/{channel → teamwork}/internal/store/filter.js +1 -1
- package/dist/teamwork/internal/store/filter.js.map +1 -0
- package/dist/{channel → teamwork}/internal/store/inbox.d.ts +3 -3
- package/dist/teamwork/internal/store/inbox.d.ts.map +1 -0
- package/dist/{channel → teamwork}/internal/store/inbox.js +1 -1
- package/dist/teamwork/internal/store/inbox.js.map +1 -0
- package/dist/teamwork/internal/store/lock.d.ts.map +1 -0
- package/dist/{channel → teamwork}/internal/store/lock.js +1 -1
- package/dist/teamwork/internal/store/lock.js.map +1 -0
- package/dist/{channel → teamwork}/internal/store/paths.d.ts +17 -23
- package/dist/teamwork/internal/store/paths.d.ts.map +1 -0
- package/dist/{channel → teamwork}/internal/store/paths.js +44 -98
- package/dist/teamwork/internal/store/paths.js.map +1 -0
- package/dist/{channel → teamwork}/internal/store/schema.d.ts +12 -19
- package/dist/teamwork/internal/store/schema.d.ts.map +1 -0
- package/dist/{channel → teamwork}/internal/store/schema.js +4 -7
- package/dist/teamwork/internal/store/schema.js.map +1 -0
- package/dist/{channel → teamwork}/internal/store/seq.d.ts +2 -2
- package/dist/teamwork/internal/store/seq.d.ts.map +1 -0
- package/dist/{channel → teamwork}/internal/store/seq.js +3 -3
- package/dist/teamwork/internal/store/seq.js.map +1 -0
- package/dist/teamwork/internal/store/teamwork-session-metadata.d.ts +15 -0
- package/dist/teamwork/internal/store/teamwork-session-metadata.d.ts.map +1 -0
- package/dist/{channel/internal/store/channel-metadata.js → teamwork/internal/store/teamwork-session-metadata.js} +13 -27
- package/dist/teamwork/internal/store/teamwork-session-metadata.js.map +1 -0
- package/dist/{channel → teamwork}/internal/store/thread-state.d.ts +4 -4
- package/dist/teamwork/internal/store/thread-state.d.ts.map +1 -0
- package/dist/{channel → teamwork}/internal/store/thread-state.js +1 -1
- package/dist/teamwork/internal/store/thread-state.js.map +1 -0
- package/dist/teamwork/internal/store/watch.d.ts +10 -0
- package/dist/teamwork/internal/store/watch.d.ts.map +1 -0
- package/dist/{channel → teamwork}/internal/store/watch.js +6 -6
- package/dist/teamwork/internal/store/watch.js.map +1 -0
- package/dist/{channel → teamwork}/internal/store/worker-state.d.ts +7 -9
- package/dist/teamwork/internal/store/worker-state.d.ts.map +1 -0
- package/dist/{channel → teamwork}/internal/store/worker-state.js +6 -29
- package/dist/teamwork/internal/store/worker-state.js.map +1 -0
- package/package.json +7 -7
- 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.map +0 -1
- 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.map +0 -1
- package/dist/channel/api/inbox.d.ts.map +0 -1
- package/dist/channel/api/inbox.js.map +0 -1
- package/dist/channel/api/interrupt.d.ts.map +0 -1
- package/dist/channel/api/interrupt.js.map +0 -1
- package/dist/channel/api/post-thread.d.ts.map +0 -1
- 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.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.map +0 -1
- 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.map +0 -1
- package/dist/channel/api/spawn.d.ts.map +0 -1
- package/dist/channel/api/spawn.js +0 -74
- 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.map +0 -1
- package/dist/channel/api/types.d.ts.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.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.map +0 -1
- package/dist/channel/api/workers.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/channel/internal/store/delivery.d.ts.map +0 -1
- package/dist/channel/internal/store/delivery.js.map +0 -1
- package/dist/channel/internal/store/events.d.ts +0 -221
- package/dist/channel/internal/store/events.d.ts.map +0 -1
- package/dist/channel/internal/store/events.js.map +0 -1
- package/dist/channel/internal/store/filter.d.ts.map +0 -1
- package/dist/channel/internal/store/filter.js.map +0 -1
- package/dist/channel/internal/store/inbox.d.ts.map +0 -1
- package/dist/channel/internal/store/inbox.js.map +0 -1
- package/dist/channel/internal/store/lock.d.ts.map +0 -1
- package/dist/channel/internal/store/lock.js.map +0 -1
- package/dist/channel/internal/store/paths.d.ts.map +0 -1
- package/dist/channel/internal/store/paths.js.map +0 -1
- package/dist/channel/internal/store/schema.d.ts.map +0 -1
- package/dist/channel/internal/store/schema.js.map +0 -1
- package/dist/channel/internal/store/seq.d.ts.map +0 -1
- package/dist/channel/internal/store/seq.js.map +0 -1
- package/dist/channel/internal/store/thread-state.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/channel/internal/store/worker-state.d.ts.map +0 -1
- package/dist/channel/internal/store/worker-state.js.map +0 -1
- /package/dist/{channel → teamwork}/api/runtime.js +0 -0
- /package/dist/{channel → teamwork}/api/types.js +0 -0
- /package/dist/{channel → teamwork}/internal/store/delivery.d.ts +0 -0
- /package/dist/{channel → teamwork}/internal/store/delivery.js +0 -0
- /package/dist/{channel → teamwork}/internal/store/lock.d.ts +0 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import type { TeamworkSessionType, ContextEntry, ContextMutationAction, ContextTarget, EventOrigin, InboxPolicy, ThreadAction } from "./schema.js";
|
|
2
|
+
export type TeamworkEventKind = "create" | "join" | "leave" | "message" | "thread" | "context" | "teamwork" | "spawned" | "killed" | "respawned" | "progress" | "done" | "error" | "waiting" | "awake" | "undeliverable" | "interrupt_requested" | "turn_started" | "turn_finished" | "interrupted" | "supervisor_warning" | "coordination";
|
|
3
|
+
export declare const TEAMWORK_EVENT_KINDS: ReadonlySet<TeamworkEventKind>;
|
|
4
|
+
export declare function parseTeamworkEventKind(v: string | undefined): TeamworkEventKind | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* Parse a CSV of event kinds into a typed list. Each member is validated
|
|
7
|
+
* through {@link parseTeamworkEventKind} so the single-value error message and
|
|
8
|
+
* whitelist remain the SOT. Returns `undefined` when input is undefined
|
|
9
|
+
* or contains no non-empty members.
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseTeamworkEventKinds(v: string | undefined): TeamworkEventKind[] | undefined;
|
|
12
|
+
export interface BaseTeamworkEvent<K extends TeamworkEventKind = TeamworkEventKind> {
|
|
13
|
+
seq: number;
|
|
14
|
+
ts: string;
|
|
15
|
+
kind: K;
|
|
16
|
+
by: string;
|
|
17
|
+
idempotencyKey?: string;
|
|
18
|
+
to?: string | string[];
|
|
19
|
+
origin?: EventOrigin;
|
|
20
|
+
meta?: Record<string, unknown>;
|
|
21
|
+
[extra: string]: unknown;
|
|
22
|
+
}
|
|
23
|
+
export interface CreateTeamworkEvent extends BaseTeamworkEvent<"create"> {
|
|
24
|
+
cwd?: string;
|
|
25
|
+
task?: string;
|
|
26
|
+
type?: TeamworkSessionType;
|
|
27
|
+
description?: string;
|
|
28
|
+
context?: ContextEntry[];
|
|
29
|
+
labels?: string[];
|
|
30
|
+
ephemeral?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface MessageTeamworkEvent extends BaseTeamworkEvent<"message"> {
|
|
33
|
+
text?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ThreadTeamworkEvent extends BaseTeamworkEvent<"thread"> {
|
|
36
|
+
action?: ThreadAction;
|
|
37
|
+
thread: string;
|
|
38
|
+
title?: string;
|
|
39
|
+
text?: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
status?: string;
|
|
42
|
+
labels?: string[];
|
|
43
|
+
assignees?: string[];
|
|
44
|
+
summary?: string;
|
|
45
|
+
context?: ContextEntry[];
|
|
46
|
+
/** Rename target (action === "rename"). */
|
|
47
|
+
newThread?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface ContextTeamworkEvent extends BaseTeamworkEvent<"context"> {
|
|
50
|
+
target: ContextTarget;
|
|
51
|
+
action: ContextMutationAction;
|
|
52
|
+
context: ContextEntry[];
|
|
53
|
+
thread?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface TeamworkMetadataEvent extends BaseTeamworkEvent<"teamwork"> {
|
|
56
|
+
action: "title";
|
|
57
|
+
title?: string | null;
|
|
58
|
+
}
|
|
59
|
+
export interface SpawnedTeamworkEvent extends BaseTeamworkEvent<"spawned"> {
|
|
60
|
+
as?: string;
|
|
61
|
+
provider?: string;
|
|
62
|
+
pid?: number;
|
|
63
|
+
agent?: string;
|
|
64
|
+
files?: string[];
|
|
65
|
+
manifests?: string[];
|
|
66
|
+
/**
|
|
67
|
+
* Inbox delivery policy selected at spawn. Durable worker state — the
|
|
68
|
+
* worker registry projects `spawned` events without this field as
|
|
69
|
+
* `explicitOnly`.
|
|
70
|
+
*/
|
|
71
|
+
inboxPolicy?: InboxPolicy;
|
|
72
|
+
}
|
|
73
|
+
export interface KilledTeamworkEvent extends BaseTeamworkEvent<"killed"> {
|
|
74
|
+
/**
|
|
75
|
+
* Why the worker was killed. Well-known supervisor / CLI reasons:
|
|
76
|
+
* `"explicit-kill"` (CLI `teamwork kill` or signal),
|
|
77
|
+
* `"timeout"` (explicit `--timeout`), `"crash"` (post-spawn worker
|
|
78
|
+
* error — projected to the `crashed` lifecycle), and
|
|
79
|
+
* `"idle-timeout"` (OOM-guard idle TTL). Additional string values may
|
|
80
|
+
* appear from custom runtimes; consumers should treat unknown reasons
|
|
81
|
+
* as opaque.
|
|
82
|
+
*/
|
|
83
|
+
reason?: string;
|
|
84
|
+
signal?: string;
|
|
85
|
+
/** Worker the kill targeted (when written by the CLI kill path). */
|
|
86
|
+
worker?: string;
|
|
87
|
+
timeout_ms?: number;
|
|
88
|
+
/** Idle TTL in ms that the worker exceeded, when `reason="idle-timeout"`. */
|
|
89
|
+
idle_timeout_ms?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface DoneTeamworkEvent extends BaseTeamworkEvent<"done"> {
|
|
92
|
+
duration_ms?: number;
|
|
93
|
+
exit_code?: number;
|
|
94
|
+
synthesized?: boolean;
|
|
95
|
+
}
|
|
96
|
+
export interface ErrorTeamworkEvent extends BaseTeamworkEvent<"error"> {
|
|
97
|
+
message?: string;
|
|
98
|
+
provider?: string;
|
|
99
|
+
synthesized?: boolean;
|
|
100
|
+
exit_code?: number;
|
|
101
|
+
exit_signal?: string;
|
|
102
|
+
}
|
|
103
|
+
export interface ProgressTeamworkEvent extends BaseTeamworkEvent<"progress"> {
|
|
104
|
+
detail?: Record<string, unknown>;
|
|
105
|
+
}
|
|
106
|
+
/** Why a worker interrupt was requested. */
|
|
107
|
+
export type InterruptReason = "user" | "system" | "timeout" | "superseded";
|
|
108
|
+
/** How an interrupt was attempted by the worker runtime. */
|
|
109
|
+
export type InterruptMethod = "provider" | "stdin" | "signal" | "none";
|
|
110
|
+
/** Result of an interrupt attempt as reported by the worker runtime. */
|
|
111
|
+
export type InterruptOutcome = "interrupted" | "queued" | "unsupported" | "no-active-turn" | "failed";
|
|
112
|
+
/** Why a message could not be delivered to a targeted worker. */
|
|
113
|
+
export type UndeliverableReason = "worker-terminal" | "worker-unknown";
|
|
114
|
+
export interface UndeliverableTeamworkEvent extends BaseTeamworkEvent<"undeliverable"> {
|
|
115
|
+
targetWorker: string;
|
|
116
|
+
messageSeq: number;
|
|
117
|
+
reason: UndeliverableReason;
|
|
118
|
+
}
|
|
119
|
+
export interface InterruptRequestedTeamworkEvent extends BaseTeamworkEvent<"interrupt_requested"> {
|
|
120
|
+
worker: string;
|
|
121
|
+
turnId?: string;
|
|
122
|
+
reason?: InterruptReason;
|
|
123
|
+
message?: string;
|
|
124
|
+
}
|
|
125
|
+
export interface TurnStartedTeamworkEvent extends BaseTeamworkEvent<"turn_started"> {
|
|
126
|
+
worker: string;
|
|
127
|
+
/**
|
|
128
|
+
* Durable link to the Teamwork Session `message` event seq that initiated this
|
|
129
|
+
* turn. The worker registry uses this as the "consumed" marker for
|
|
130
|
+
* pending-message projection.
|
|
131
|
+
*/
|
|
132
|
+
inputSeq: number;
|
|
133
|
+
turnId?: string;
|
|
134
|
+
}
|
|
135
|
+
export interface TurnFinishedTeamworkEvent extends BaseTeamworkEvent<"turn_finished"> {
|
|
136
|
+
worker: string;
|
|
137
|
+
inputSeq?: number;
|
|
138
|
+
turnId?: string;
|
|
139
|
+
outcome?: "done" | "error" | "aborted";
|
|
140
|
+
}
|
|
141
|
+
export interface InterruptedTeamworkEvent extends BaseTeamworkEvent<"interrupted"> {
|
|
142
|
+
worker: string;
|
|
143
|
+
turnId?: string;
|
|
144
|
+
reason?: InterruptReason;
|
|
145
|
+
method: InterruptMethod;
|
|
146
|
+
outcome: InterruptOutcome;
|
|
147
|
+
message?: string;
|
|
148
|
+
}
|
|
149
|
+
/** Reason for a supervisor pre-terminal warning event. */
|
|
150
|
+
export type SupervisorWarningReason = "approaching_timeout";
|
|
151
|
+
/**
|
|
152
|
+
* Pre-timeout observability event. Emitted at most once per worker run.
|
|
153
|
+
* Not part of {@link MEANINGFUL_EVENT_KINDS} so plain `wait` does not
|
|
154
|
+
* wake on it; explicit `--kind supervisor_warning` does match.
|
|
155
|
+
*/
|
|
156
|
+
export interface SupervisorWarningTeamworkEvent extends BaseTeamworkEvent<"supervisor_warning"> {
|
|
157
|
+
worker: string;
|
|
158
|
+
reason: SupervisorWarningReason;
|
|
159
|
+
timeout_ms: number;
|
|
160
|
+
remaining_ms: number;
|
|
161
|
+
}
|
|
162
|
+
export type CoordinationEntity = "batch" | "assignment" | "attempt" | "teammate";
|
|
163
|
+
export type CoordinationBatchState = "PREPARED" | "VALIDATING_PLAN" | "RUNNING" | "SETTLING" | "ALL_ACCEPTED" | "SETTLED_WITH_FAILURE" | "SUSPENDED" | "CANCEL_PENDING" | "RECONCILIATION_REQUIRED";
|
|
164
|
+
export type CoordinationAssignmentState = "QUEUED" | "ASSIGNED" | "EXECUTING" | "REPORT_PENDING" | "VALIDATING" | "ACCEPTED" | "FINAL_FAILED" | "WAITING_FOR_MAIN_COMMAND";
|
|
165
|
+
export type CoordinationAttemptState = "ASSIGNED" | "RUNNING" | "REPORT_SUBMITTED" | "FAILED" | "TIMEOUT_YIELDED" | "WAITING_FOR_MAIN_COMMAND" | "FINAL_FAILED";
|
|
166
|
+
export type CoordinationTeammateState = "ASSIGNED" | "RUNNING" | "REPORT_SUBMITTED" | "FAILED" | "TIMEOUT_YIELDED" | "WAITING_FOR_MAIN_COMMAND";
|
|
167
|
+
export type CoordinationState = CoordinationBatchState | CoordinationAssignmentState | CoordinationAttemptState | CoordinationTeammateState;
|
|
168
|
+
export type CoordinationAction = "state_transition" | "terminal_observed" | "claim_created" | "command_issued" | "receipt_recorded" | "lease_acquired" | "lease_released" | "reconciliation_required";
|
|
169
|
+
export interface CoordinationTeamworkEvent extends BaseTeamworkEvent<"coordination"> {
|
|
170
|
+
action: CoordinationAction;
|
|
171
|
+
entity: CoordinationEntity;
|
|
172
|
+
batchId: string;
|
|
173
|
+
assignmentId?: string;
|
|
174
|
+
attemptId?: string;
|
|
175
|
+
teammateId?: string;
|
|
176
|
+
slot?: number;
|
|
177
|
+
retryCount?: number;
|
|
178
|
+
state?: CoordinationState;
|
|
179
|
+
planHash?: string;
|
|
180
|
+
commandId?: string;
|
|
181
|
+
claimId?: string;
|
|
182
|
+
receiptId?: string;
|
|
183
|
+
leaseId?: string;
|
|
184
|
+
protected?: boolean;
|
|
185
|
+
/** Provider session associated with this attempt, when the host exposes one. */
|
|
186
|
+
providerSessionId?: string;
|
|
187
|
+
/** True only when the external process has reported a terminal fact. */
|
|
188
|
+
terminal?: boolean;
|
|
189
|
+
reason?: string;
|
|
190
|
+
outcome?: string;
|
|
191
|
+
payload?: Record<string, unknown>;
|
|
192
|
+
}
|
|
193
|
+
export type GenericTeamworkEvent = BaseTeamworkEvent<Exclude<TeamworkEventKind, "create" | "message" | "thread" | "context" | "teamwork" | "spawned" | "killed" | "done" | "error" | "progress" | "undeliverable" | "interrupt_requested" | "turn_started" | "turn_finished" | "interrupted" | "supervisor_warning" | "coordination">>;
|
|
194
|
+
export type TeamworkEvent = CreateTeamworkEvent | MessageTeamworkEvent | ThreadTeamworkEvent | ContextTeamworkEvent | TeamworkMetadataEvent | SpawnedTeamworkEvent | KilledTeamworkEvent | DoneTeamworkEvent | ErrorTeamworkEvent | ProgressTeamworkEvent | UndeliverableTeamworkEvent | InterruptRequestedTeamworkEvent | TurnStartedTeamworkEvent | TurnFinishedTeamworkEvent | InterruptedTeamworkEvent | SupervisorWarningTeamworkEvent | CoordinationTeamworkEvent | GenericTeamworkEvent;
|
|
195
|
+
export declare function isCoordinationEvent(ev: TeamworkEvent): ev is CoordinationTeamworkEvent;
|
|
196
|
+
export declare function isCreateEvent(ev: TeamworkEvent): ev is CreateTeamworkEvent;
|
|
197
|
+
export declare function isThreadEvent(ev: TeamworkEvent): ev is ThreadTeamworkEvent;
|
|
198
|
+
export declare function isContextEvent(ev: TeamworkEvent): ev is ContextTeamworkEvent;
|
|
199
|
+
export declare function isTeamworkMetadataEvent(ev: TeamworkEvent): ev is TeamworkMetadataEvent;
|
|
200
|
+
export declare function ensureSessionDir(name: string, project?: string): Promise<string>;
|
|
201
|
+
/**
|
|
202
|
+
* Read the last committed seq for a Teamwork Session. Uses the same reconcile
|
|
203
|
+
* path as `appendEvent` so callers that need a snapshot do not see a
|
|
204
|
+
* stale sidecar.
|
|
205
|
+
*/
|
|
206
|
+
export declare function readLastSeq(name: string, project?: string): Promise<number>;
|
|
207
|
+
export interface AppendablePartial {
|
|
208
|
+
kind: TeamworkEventKind;
|
|
209
|
+
by: string;
|
|
210
|
+
ts?: string;
|
|
211
|
+
idempotencyKey?: string;
|
|
212
|
+
[extra: string]: unknown;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Cursor pagination options for {@link readTeamworkEvents}. When no field
|
|
216
|
+
* is set the reader returns every event (compatibility default).
|
|
217
|
+
*/
|
|
218
|
+
export interface ReadTeamworkEventsPagination {
|
|
219
|
+
/** Return events with `seq > afterSeq`, ascending. */
|
|
220
|
+
afterSeq?: number;
|
|
221
|
+
/** Return events with `seq < beforeSeq`, ascending. */
|
|
222
|
+
beforeSeq?: number;
|
|
223
|
+
/**
|
|
224
|
+
* Cap the page size. With a cursor, caps the page. Without a cursor,
|
|
225
|
+
* returns the latest N events in ascending seq order.
|
|
226
|
+
*/
|
|
227
|
+
limit?: number;
|
|
228
|
+
}
|
|
229
|
+
/** Default page size applied when a cursor is present but `limit` is not. */
|
|
230
|
+
export declare const DEFAULT_CURSOR_PAGE_SIZE = 200;
|
|
231
|
+
export declare function readTeamworkEvents(name: string, project?: string, pagination?: ReadTeamworkEventsPagination): Promise<TeamworkEvent[]>;
|
|
232
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import fsp from "node:fs/promises";
|
|
3
3
|
import { withLock } from "./lock.js";
|
|
4
|
-
import {
|
|
4
|
+
import { sessionDir, eventsPath, lockPath, seqSidecarPath, } from "./paths.js";
|
|
5
5
|
import { reconcileSeq, truncateIncompleteTail, writeSidecar } from "./seq.js";
|
|
6
6
|
import { parseEventOrigin } from "./schema.js";
|
|
7
|
-
export const
|
|
7
|
+
export const TEAMWORK_EVENT_KINDS = new Set([
|
|
8
8
|
"create",
|
|
9
9
|
"join",
|
|
10
10
|
"leave",
|
|
11
11
|
"message",
|
|
12
12
|
"thread",
|
|
13
13
|
"context",
|
|
14
|
-
"
|
|
14
|
+
"teamwork",
|
|
15
15
|
"spawned",
|
|
16
|
-
"session_bound",
|
|
17
16
|
"killed",
|
|
18
17
|
"respawned",
|
|
19
18
|
"progress",
|
|
@@ -27,22 +26,23 @@ export const CHANNEL_EVENT_KINDS = new Set([
|
|
|
27
26
|
"turn_finished",
|
|
28
27
|
"interrupted",
|
|
29
28
|
"supervisor_warning",
|
|
29
|
+
"coordination",
|
|
30
30
|
]);
|
|
31
|
-
export function
|
|
31
|
+
export function parseTeamworkEventKind(v) {
|
|
32
32
|
if (v === undefined)
|
|
33
33
|
return undefined;
|
|
34
|
-
if (!
|
|
35
|
-
throw new Error(`Invalid --kind '${v}'. Must be one of: ${[...
|
|
34
|
+
if (!TEAMWORK_EVENT_KINDS.has(v)) {
|
|
35
|
+
throw new Error(`Invalid --kind '${v}'. Must be one of: ${[...TEAMWORK_EVENT_KINDS].join(", ")}`);
|
|
36
36
|
}
|
|
37
37
|
return v;
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Parse a CSV of event kinds into a typed list. Each member is validated
|
|
41
|
-
* through {@link
|
|
41
|
+
* through {@link parseTeamworkEventKind} so the single-value error message and
|
|
42
42
|
* whitelist remain the SOT. Returns `undefined` when input is undefined
|
|
43
43
|
* or contains no non-empty members.
|
|
44
44
|
*/
|
|
45
|
-
export function
|
|
45
|
+
export function parseTeamworkEventKinds(v) {
|
|
46
46
|
if (v === undefined)
|
|
47
47
|
return undefined;
|
|
48
48
|
const parts = v
|
|
@@ -54,7 +54,7 @@ export function parseChannelKinds(v) {
|
|
|
54
54
|
const out = [];
|
|
55
55
|
const seen = new Set();
|
|
56
56
|
for (const part of parts) {
|
|
57
|
-
const parsed =
|
|
57
|
+
const parsed = parseTeamworkEventKind(part);
|
|
58
58
|
if (parsed === undefined)
|
|
59
59
|
continue;
|
|
60
60
|
if (seen.has(parsed))
|
|
@@ -64,6 +64,9 @@ export function parseChannelKinds(v) {
|
|
|
64
64
|
}
|
|
65
65
|
return out;
|
|
66
66
|
}
|
|
67
|
+
export function isCoordinationEvent(ev) {
|
|
68
|
+
return ev.kind === "coordination" && typeof ev.batchId === "string";
|
|
69
|
+
}
|
|
67
70
|
export function isCreateEvent(ev) {
|
|
68
71
|
return ev.kind === "create";
|
|
69
72
|
}
|
|
@@ -73,16 +76,16 @@ export function isThreadEvent(ev) {
|
|
|
73
76
|
export function isContextEvent(ev) {
|
|
74
77
|
return ev.kind === "context";
|
|
75
78
|
}
|
|
76
|
-
export function
|
|
77
|
-
return ev.kind === "
|
|
79
|
+
export function isTeamworkMetadataEvent(ev) {
|
|
80
|
+
return ev.kind === "teamwork";
|
|
78
81
|
}
|
|
79
|
-
export async function
|
|
80
|
-
const dir =
|
|
82
|
+
export async function ensureSessionDir(name, project) {
|
|
83
|
+
const dir = sessionDir(name, project);
|
|
81
84
|
await fsp.mkdir(dir, { recursive: true, mode: 0o700 });
|
|
82
85
|
return dir;
|
|
83
86
|
}
|
|
84
87
|
/**
|
|
85
|
-
* Read the last committed seq for a
|
|
88
|
+
* Read the last committed seq for a Teamwork Session. Uses the same reconcile
|
|
86
89
|
* path as `appendEvent` so callers that need a snapshot do not see a
|
|
87
90
|
* stale sidecar.
|
|
88
91
|
*/
|
|
@@ -93,7 +96,7 @@ export async function readLastSeq(name, project) {
|
|
|
93
96
|
return reconcileSeq(file, seqSidecarPath(name, project));
|
|
94
97
|
}
|
|
95
98
|
/**
|
|
96
|
-
* Append a
|
|
99
|
+
* Append a Teamwork Session event atomically under its lock.
|
|
97
100
|
*
|
|
98
101
|
* Internally truncates a torn JSONL tail (missing final newline), then
|
|
99
102
|
* reconciles the `.seq` sidecar with the JSONL tail. Sidecar repair
|
|
@@ -102,12 +105,12 @@ export async function readLastSeq(name, project) {
|
|
|
102
105
|
* the next record onto the incomplete line.
|
|
103
106
|
*
|
|
104
107
|
* @internal Trellis CLI-internal write primitive — downstream consumers
|
|
105
|
-
* must go through the typed mutation APIs (`
|
|
108
|
+
* must go through the typed mutation APIs (`createTeamworkSession`,
|
|
106
109
|
* `sendMessage`, etc.).
|
|
107
110
|
*/
|
|
108
111
|
export async function appendEvent(name, partial, project) {
|
|
109
112
|
validateEventBase(partial);
|
|
110
|
-
await
|
|
113
|
+
await ensureSessionDir(name, project);
|
|
111
114
|
const jsonl = eventsPath(name, project);
|
|
112
115
|
const sidecar = seqSidecarPath(name, project);
|
|
113
116
|
return withLock(lockPath(name, project), async () => {
|
|
@@ -174,7 +177,7 @@ function readAllEvents(file) {
|
|
|
174
177
|
}
|
|
175
178
|
return events;
|
|
176
179
|
}
|
|
177
|
-
export async function
|
|
180
|
+
export async function readTeamworkEvents(name, project, pagination) {
|
|
178
181
|
const file = eventsPath(name, project);
|
|
179
182
|
const all = readAllEvents(file);
|
|
180
183
|
if (!pagination ||
|
|
@@ -185,10 +188,10 @@ export async function readChannelEvents(name, project, pagination) {
|
|
|
185
188
|
}
|
|
186
189
|
const { afterSeq, beforeSeq, limit } = pagination;
|
|
187
190
|
if (afterSeq !== undefined && beforeSeq !== undefined) {
|
|
188
|
-
throw new Error("
|
|
191
|
+
throw new Error("readTeamworkEvents: pass only one of afterSeq / beforeSeq");
|
|
189
192
|
}
|
|
190
193
|
if (limit !== undefined && (!Number.isInteger(limit) || limit < 0)) {
|
|
191
|
-
throw new Error("
|
|
194
|
+
throw new Error("readTeamworkEvents: limit must be a non-negative integer");
|
|
192
195
|
}
|
|
193
196
|
// Events are appended in monotonic seq order; keep that as the contract.
|
|
194
197
|
if (afterSeq !== undefined) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type TeamworkEvent, type TeamworkEventKind } from "./events.js";
|
|
2
2
|
import type { ThreadAction } from "./schema.js";
|
|
3
|
-
export declare const MEANINGFUL_EVENT_KINDS: ReadonlySet<
|
|
4
|
-
export interface
|
|
3
|
+
export declare const MEANINGFUL_EVENT_KINDS: ReadonlySet<TeamworkEventKind>;
|
|
4
|
+
export interface TeamworkEventFilter {
|
|
5
5
|
from?: string[];
|
|
6
6
|
/**
|
|
7
7
|
* Restrict to one kind (legacy single value) or any of a list (OR
|
|
@@ -9,7 +9,7 @@ export interface ChannelEventFilter {
|
|
|
9
9
|
* meaningful-kinds filter so non-meaningful kinds can still match
|
|
10
10
|
* when requested directly (e.g. `supervisor_warning`).
|
|
11
11
|
*/
|
|
12
|
-
kind?:
|
|
12
|
+
kind?: TeamworkEventKind | readonly TeamworkEventKind[];
|
|
13
13
|
to?: string;
|
|
14
14
|
self?: string;
|
|
15
15
|
includeProgress?: boolean;
|
|
@@ -17,5 +17,5 @@ export interface ChannelEventFilter {
|
|
|
17
17
|
thread?: string;
|
|
18
18
|
action?: ThreadAction;
|
|
19
19
|
}
|
|
20
|
-
export declare function matchesEventFilter(ev:
|
|
20
|
+
export declare function matchesEventFilter(ev: TeamworkEvent, filter: TeamworkEventFilter): boolean;
|
|
21
21
|
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,iBAAiB,CAazC,CAAC;AAE1B,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,CAAC;IACxD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAaD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,aAAa,EACjB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAgDT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TeamworkEvent, MessageTeamworkEvent } from "./events.js";
|
|
2
2
|
import type { InboxPolicy } from "./schema.js";
|
|
3
3
|
/** Default inbox policy applied to workers / spawned events without one. */
|
|
4
4
|
export declare const DEFAULT_INBOX_POLICY: InboxPolicy;
|
|
5
5
|
/**
|
|
6
|
-
* Decide whether a
|
|
6
|
+
* Decide whether a Teamwork Session `message` event should be delivered to a
|
|
7
7
|
* worker's inbox under the given policy. Single source of truth shared
|
|
8
8
|
* by the worker registry reducer, the delivery helper, and the CLI
|
|
9
9
|
* supervisor inbox watcher.
|
|
@@ -13,5 +13,5 @@ export declare const DEFAULT_INBOX_POLICY: InboxPolicy;
|
|
|
13
13
|
*
|
|
14
14
|
* A worker never consumes its own message events.
|
|
15
15
|
*/
|
|
16
|
-
export declare function matchesInboxPolicy(ev:
|
|
16
|
+
export declare function matchesInboxPolicy(ev: TeamworkEvent, workerId: string, policy: InboxPolicy): ev is MessageTeamworkEvent;
|
|
17
17
|
//# sourceMappingURL=inbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,EAAE,WAA4B,CAAC;AAOhE;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,aAAa,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAClB,EAAE,IAAI,oBAAoB,CAO5B"}
|
|
@@ -6,7 +6,7 @@ function toList(to) {
|
|
|
6
6
|
return Array.isArray(to) ? to : [to];
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
* Decide whether a
|
|
9
|
+
* Decide whether a Teamwork Session `message` event should be delivered to a
|
|
10
10
|
* worker's inbox under the given policy. Single source of truth shared
|
|
11
11
|
* by the worker registry reducer, the delivery helper, and the CLI
|
|
12
12
|
* supervisor inbox watcher.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/inbox.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAgB,cAAc,CAAC;AAEhE,SAAS,MAAM,CAAC,EAAiC;IAC/C,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAiB,EACjB,QAAgB,EAChB,MAAmB;IAEnB,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,EAAE,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1D,uBAAuB;IACvB,OAAO,MAAM,KAAK,sBAAsB,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/lock.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,UAAU,cAAc;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CASlD;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EACxB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,CAAC,CAAC,CAOZ"}
|
|
@@ -64,7 +64,7 @@ async function checkAndStealStale(lockFile) {
|
|
|
64
64
|
if (!holderPid || !pidAlive(holderPid)) {
|
|
65
65
|
try {
|
|
66
66
|
fs.unlinkSync(lockFile);
|
|
67
|
-
process.stderr.write(`[
|
|
67
|
+
process.stderr.write(`[Teamwork Session lock] stale lock from dead pid ${holderPid} stolen at ${lockFile}\n`);
|
|
68
68
|
return true;
|
|
69
69
|
}
|
|
70
70
|
catch {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
/** Top-level Trellis
|
|
3
|
-
export declare function
|
|
1
|
+
import { type TeamworkSessionRef, type TeamworkSessionScope } from "./schema.js";
|
|
2
|
+
/** Top-level Trellis Teamwork directory. */
|
|
3
|
+
export declare function teamworkRoot(): string;
|
|
4
4
|
/**
|
|
5
5
|
* Derive a per-project bucket name from an absolute cwd, mirroring
|
|
6
6
|
* Claude Code's `~/.claude/projects/<sanitized-cwd>/` convention.
|
|
@@ -8,50 +8,44 @@ export declare function channelRoot(): string;
|
|
|
8
8
|
export declare function projectKey(cwd: string): string;
|
|
9
9
|
/**
|
|
10
10
|
* Project key for the current CLI invocation. Reads
|
|
11
|
-
* `
|
|
11
|
+
* `TRELLIS_TEAMWORK_PROJECT` env first, then falls back to deriving from
|
|
12
12
|
* `process.cwd()`.
|
|
13
13
|
*/
|
|
14
14
|
export declare function currentProjectKey(): string;
|
|
15
15
|
export declare function projectDir(project?: string): string;
|
|
16
16
|
/**
|
|
17
|
-
* Whether a
|
|
17
|
+
* Whether a Teamwork Session or teammate name is usable as a filesystem segment.
|
|
18
18
|
* Discovery scans use this to skip directories created before name
|
|
19
19
|
* validation existed (spaces, CJK, ...) — they can never be valid
|
|
20
|
-
*
|
|
20
|
+
* valid Teamwork Sessions, and `assertSafeName` throwing mid-scan would kill the scan.
|
|
21
21
|
*/
|
|
22
22
|
export declare function isSafeName(name: string): boolean;
|
|
23
23
|
/**
|
|
24
24
|
* Reject names that would escape their bucket when joined into a path.
|
|
25
|
-
* A
|
|
25
|
+
* A Teamwork Session or teammate name becomes a filesystem segment; without this guard
|
|
26
26
|
* a name like `../../x` lets `path.join` resolve outside the store and a
|
|
27
27
|
* later `fs.rmSync(recursive)` deletes arbitrary directories.
|
|
28
28
|
*/
|
|
29
29
|
export declare function assertSafeName(name: string, kind?: string): void;
|
|
30
|
-
export declare function
|
|
30
|
+
export declare function sessionDir(name: string, project?: string): string;
|
|
31
31
|
export declare function eventsPath(name: string, project?: string): string;
|
|
32
32
|
export declare function seqSidecarPath(name: string, project?: string): string;
|
|
33
33
|
export declare function lockPath(name: string, project?: string): string;
|
|
34
34
|
export declare function workerFile(name: string, worker: string, suffix: string, project?: string): string;
|
|
35
35
|
export declare function workerLockPath(name: string, worker: string, project?: string): string;
|
|
36
|
-
/**
|
|
37
|
-
* One-shot migration: move legacy flat channels at `<root>/<name>/` into
|
|
38
|
-
* a `_legacy/` bucket so the new project-scoped layout can use the top
|
|
39
|
-
* level. Idempotent.
|
|
40
|
-
*/
|
|
41
|
-
export declare function migrateLegacyChannels(): void;
|
|
42
36
|
export declare function ensureBucketMarker(project: string): void;
|
|
43
37
|
export declare function listProjects(): string[];
|
|
44
38
|
/**
|
|
45
|
-
* List
|
|
46
|
-
* contain an `events.jsonl` file. Used by the cross-
|
|
47
|
-
* dynamic
|
|
39
|
+
* List Teamwork Session names inside a project bucket — subdirectories that
|
|
40
|
+
* contain an `events.jsonl` file. Used by the cross-session watcher for
|
|
41
|
+
* dynamic Teamwork Session discovery.
|
|
48
42
|
*/
|
|
49
|
-
export declare function
|
|
50
|
-
export interface
|
|
51
|
-
scope?:
|
|
43
|
+
export declare function listSessionIdsInProject(project: string): string[];
|
|
44
|
+
export interface ResolveTeamworkSessionOptions {
|
|
45
|
+
scope?: TeamworkSessionScope;
|
|
52
46
|
cwd?: string;
|
|
53
47
|
}
|
|
54
|
-
export declare function
|
|
55
|
-
export declare function
|
|
56
|
-
export declare function
|
|
48
|
+
export declare function resolveTeamworkSessionProjectForCreate(name: string, opts?: ResolveTeamworkSessionOptions): TeamworkSessionRef;
|
|
49
|
+
export declare function resolveExistingTeamworkSession(name: string, opts?: ResolveTeamworkSessionOptions): TeamworkSessionRef;
|
|
50
|
+
export declare function selectExistingTeamworkSessionProject(name: string): string;
|
|
57
51
|
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../../src/teamwork/internal/store/paths.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAErB,4CAA4C;AAC5C,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,MAA4B,GAAG,MAAM,CAExE;AAOD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAqB,GAAG,IAAI,CAO5E;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAA4B,GACpC,MAAM,CAGR;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAA4B,GACpC,MAAM,CAER;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAA4B,GACpC,MAAM,CAER;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAA4B,GACpC,MAAM,CAER;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAA4B,GACpC,MAAM,CAGR;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAA4B,GACpC,MAAM,CAGR;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAOxD;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAmBvC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBjE;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,6BAAkC,GACvC,kBAAkB,CAcpB;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,6BAAkC,GACvC,kBAAkB,CAoEpB;AAED,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzE"}
|