@tokenfactory/acc-runner 0.40.20 → 0.40.22
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/companion-identity.d.ts +45 -0
- package/dist/companion-identity.d.ts.map +1 -1
- package/dist/companion-identity.js +54 -0
- package/dist/companion-identity.js.map +1 -1
- package/dist/companion-run.d.ts.map +1 -1
- package/dist/companion-run.js +42 -2
- package/dist/companion-run.js.map +1 -1
- package/dist/watch-chat/fleet-chat-lane.d.ts +82 -0
- package/dist/watch-chat/fleet-chat-lane.d.ts.map +1 -0
- package/dist/watch-chat/fleet-chat-lane.js +101 -0
- package/dist/watch-chat/fleet-chat-lane.js.map +1 -0
- package/dist/watch-chat/grace-gate.d.ts +93 -0
- package/dist/watch-chat/grace-gate.d.ts.map +1 -0
- package/dist/watch-chat/grace-gate.js +107 -0
- package/dist/watch-chat/grace-gate.js.map +1 -0
- package/dist/watch-chat/grace-gated-transport.d.ts +58 -0
- package/dist/watch-chat/grace-gated-transport.d.ts.map +1 -0
- package/dist/watch-chat/grace-gated-transport.js +62 -0
- package/dist/watch-chat/grace-gated-transport.js.map +1 -0
- package/dist/watch-chat/index.d.ts +17 -0
- package/dist/watch-chat/index.d.ts.map +1 -0
- package/dist/watch-chat/index.js +17 -0
- package/dist/watch-chat/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -119,6 +119,51 @@ export interface ReportProbeDeps {
|
|
|
119
119
|
* CompanionRunner's registration-persist catch can log it (best-effort).
|
|
120
120
|
*/
|
|
121
121
|
export declare function reportIdentityProbe(deps: ReportProbeDeps, payload: ProbeReportPayload): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* AUTO-ENROLL: self-enroll the companion's identity on first
|
|
124
|
+
* start when discovery found NONE. Terminal login IS the setup — a valid ACC
|
|
125
|
+
* session + a working engine credential probe + zero matches ⇒ the companion
|
|
126
|
+
* POSTs to /api/identities/auto-enroll, which (subject to the org
|
|
127
|
+
* auto_enroll_on_login toggle) auto-creates the owner-bound companion identity and
|
|
128
|
+
* returns it. The caller then binds it exactly like a discovered match and reports
|
|
129
|
+
* the chat-auth probe. Pure + fetch-injected like the rest of this module.
|
|
130
|
+
*/
|
|
131
|
+
export interface AutoEnrollDeps {
|
|
132
|
+
publicUrl: string;
|
|
133
|
+
accessToken: string;
|
|
134
|
+
fetchImpl?: typeof fetch;
|
|
135
|
+
}
|
|
136
|
+
/** What the runner tells the server about the identity to auto-create. */
|
|
137
|
+
export interface AutoEnrollInput {
|
|
138
|
+
provider: string;
|
|
139
|
+
engine: string;
|
|
140
|
+
runnerId: string;
|
|
141
|
+
/** Probed credential tier (non-secret) — the companion only calls this when ok. */
|
|
142
|
+
tier?: string | null;
|
|
143
|
+
/** Auto-adopt-detected fueling account, for the enrollment notice. */
|
|
144
|
+
accountEmail?: string | null;
|
|
145
|
+
/** The machine (hostname) the companion runs on, for the notice text. */
|
|
146
|
+
machine?: string | null;
|
|
147
|
+
}
|
|
148
|
+
/** The outcome of an auto-enroll attempt. */
|
|
149
|
+
export type AutoEnrollResult = {
|
|
150
|
+
enrolled: true;
|
|
151
|
+
identityId: string;
|
|
152
|
+
identity: DiscoveredIdentity | null;
|
|
153
|
+
/** True when an existing pending/active identity was adopted vs freshly created. */
|
|
154
|
+
adopted: boolean;
|
|
155
|
+
} | {
|
|
156
|
+
enrolled: false;
|
|
157
|
+
/** disabled ⇒ org toggle OFF; unreachable/error ⇒ transient — stay UNBOUND. */
|
|
158
|
+
reason: "disabled" | "unreachable" | "error";
|
|
159
|
+
detail?: string;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* POST /api/identities/auto-enroll to self-enroll the companion's identity. Never
|
|
163
|
+
* throws — a network/HTTP error degrades to `{ enrolled: false, reason }` so the
|
|
164
|
+
* companion falls back to the honest UNBOUND banner rather than crashing on start.
|
|
165
|
+
*/
|
|
166
|
+
export declare function autoEnrollCompanionIdentity(deps: AutoEnrollDeps, input: AutoEnrollInput): Promise<AutoEnrollResult>;
|
|
122
167
|
/** The env var whose presence overrides self-discovery with an explicit id. */
|
|
123
168
|
export declare const COMPANION_IDENTITY_OVERRIDE_HINT = "ACC_RUNNER_COMPANION_IDENTITY";
|
|
124
169
|
export type BannerTone = "ok" | "warn";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-identity.d.ts","sourceRoot":"","sources":["../src/companion-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,+DAA+D;AAC/D,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,mFAAmF;AACnF,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,SAAS,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qCAAqC;AACrC,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC;CAClC,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,eAAe,GAAG,UAAU,GAAG,aAAa,CAAC;IACrD,sEAAsE;IACtE,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B,CAAC;AAEN;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWtE;AAED,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAUD;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyC/F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAClC,eAAe,CAiBjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,+EAA+E;AAC/E,eAAO,MAAM,gCAAgC,kCAAkC,CAAC;AAEhF,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC;AAEvC,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAQD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACrB,eAAe,CAqCjB"}
|
|
1
|
+
{"version":3,"file":"companion-identity.d.ts","sourceRoot":"","sources":["../src/companion-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -145,6 +145,60 @@ export async function reportIdentityProbe(deps, payload) {
|
|
|
145
145
|
throw new Error(`probe report HTTP ${res.status}`);
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* POST /api/identities/auto-enroll to self-enroll the companion's identity. Never
|
|
150
|
+
* throws — a network/HTTP error degrades to `{ enrolled: false, reason }` so the
|
|
151
|
+
* companion falls back to the honest UNBOUND banner rather than crashing on start.
|
|
152
|
+
*/
|
|
153
|
+
export async function autoEnrollCompanionIdentity(deps, input) {
|
|
154
|
+
const url = `${(deps.publicUrl ?? "").replace(/\/+$/, "")}/api/identities/auto-enroll`;
|
|
155
|
+
const f = deps.fetchImpl ?? fetch;
|
|
156
|
+
let res;
|
|
157
|
+
try {
|
|
158
|
+
res = await f(url, {
|
|
159
|
+
method: "POST",
|
|
160
|
+
headers: {
|
|
161
|
+
"Content-Type": "application/json",
|
|
162
|
+
Authorization: `Bearer ${deps.accessToken}`,
|
|
163
|
+
},
|
|
164
|
+
body: JSON.stringify({
|
|
165
|
+
provider: input.provider,
|
|
166
|
+
engine: input.engine,
|
|
167
|
+
runner_id: input.runnerId,
|
|
168
|
+
tier: input.tier ?? undefined,
|
|
169
|
+
account_email: input.accountEmail ?? undefined,
|
|
170
|
+
machine: input.machine ?? undefined,
|
|
171
|
+
}),
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
return { enrolled: false, reason: "unreachable", detail: err.message };
|
|
176
|
+
}
|
|
177
|
+
if (!res.ok) {
|
|
178
|
+
return { enrolled: false, reason: "error", detail: `auto-enroll HTTP ${res.status}` };
|
|
179
|
+
}
|
|
180
|
+
const json = (await res.json().catch(() => null));
|
|
181
|
+
if (!json || json.ok !== true) {
|
|
182
|
+
return { enrolled: false, reason: "error", detail: "malformed auto-enroll response" };
|
|
183
|
+
}
|
|
184
|
+
if (json.enrolled !== true) {
|
|
185
|
+
const reason = json.reason === "disabled" ? "disabled" : "error";
|
|
186
|
+
return { enrolled: false, reason, detail: json.reason };
|
|
187
|
+
}
|
|
188
|
+
const row = json.identity && typeof json.identity === "object" ? json.identity : null;
|
|
189
|
+
const identityId = String(row?.id ?? "");
|
|
190
|
+
if (!identityId) {
|
|
191
|
+
return { enrolled: false, reason: "error", detail: "auto-enroll returned no identity id" };
|
|
192
|
+
}
|
|
193
|
+
const identity = {
|
|
194
|
+
id: identityId,
|
|
195
|
+
provider: String(row?.provider ?? input.provider),
|
|
196
|
+
engine: String(row?.engine ?? input.engine),
|
|
197
|
+
status: String(row?.status ?? "active"),
|
|
198
|
+
lastProbeAt: typeof row?.last_probe_at === "string" ? row.last_probe_at : null,
|
|
199
|
+
};
|
|
200
|
+
return { enrolled: true, identityId, identity, adopted: json.adopted === true };
|
|
201
|
+
}
|
|
148
202
|
/** The env var whose presence overrides self-discovery with an explicit id. */
|
|
149
203
|
export const COMPANION_IDENTITY_OVERRIDE_HINT = "ACC_RUNNER_COMPANION_IDENTITY";
|
|
150
204
|
function identityLabel(identity) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-identity.js","sourceRoot":"","sources":["../src/companion-identity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"companion-identity.js","sourceRoot":"","sources":["../src/companion-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-run.d.ts","sourceRoot":"","sources":["../src/companion-run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"companion-run.d.ts","sourceRoot":"","sources":["../src/companion-run.ts"],"names":[],"mappings":"AAuDA,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AAEtE;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC,CA2XjE;AAED,+DAA+D;AAC/D,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB5D;AAED,8DAA8D;AAC9D,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7D;AAED,wCAAwC;AACxC,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK/D"}
|
package/dist/companion-run.js
CHANGED
|
@@ -20,8 +20,9 @@ import { ChatCircuitBreaker, getChatCircuit } from "./runtime/chat-circuit-break
|
|
|
20
20
|
import { CompanionMirrorSocket } from "./companion-mirror-socket.js";
|
|
21
21
|
import { CompanionRunner, OwnerConversationSource, backfillActiveConversations, createConversationListener, createIdentityBroadcaster, deriveMirrorToken, resolveCompanionConfig, } from "./companion.js";
|
|
22
22
|
import { companionStatusLine, defaultAutostartHost, installAutostart, uninstallAutostart, } from "./companion-autostart.js";
|
|
23
|
-
import { companionBanner, discoverCompanionIdentities, providerForEngine, reportIdentityProbe, resolveBinding, } from "./companion-identity.js";
|
|
23
|
+
import { autoEnrollCompanionIdentity, companionBanner, discoverCompanionIdentities, providerForEngine, reportIdentityProbe, resolveBinding, } from "./companion-identity.js";
|
|
24
24
|
import { PACKAGE_VERSION } from "./pkg-version.js";
|
|
25
|
+
import { hostname } from "node:os";
|
|
25
26
|
/**
|
|
26
27
|
* Optional OVERRIDE naming the acc.ai_identities row this companion serves. The
|
|
27
28
|
* default is self-discovery (see companion-identity.ts) — this env var only
|
|
@@ -116,7 +117,46 @@ export async function companionCommand() {
|
|
|
116
117
|
"token (likely expired). Run `acc-runner login` again; refusing to come " +
|
|
117
118
|
"online on a dead session.");
|
|
118
119
|
}
|
|
119
|
-
|
|
120
|
+
let binding = resolveBinding(discovery, override);
|
|
121
|
+
// AUTO-ENROLL: terminal login IS the setup. When discovery
|
|
122
|
+
// found NO enrollment for this owner + engine, and the engine credential probe
|
|
123
|
+
// WORKS, self-enroll the owner-bound companion identity in this one startup —
|
|
124
|
+
// no UI step. Gated server-side by the org auto_enroll_on_login toggle (default
|
|
125
|
+
// ON); OFF ⇒ the server returns enrolled:false and we keep the honest UNBOUND
|
|
126
|
+
// banner (today's "enroll in Admin" behaviour). An override or a `multiple`/
|
|
127
|
+
// `unreachable` unbound state is left untouched — auto-enroll only fills the
|
|
128
|
+
// zero-match gap. Best-effort: any failure keeps the companion coming online
|
|
129
|
+
// UNBOUND rather than blocking start.
|
|
130
|
+
if (binding.kind === "unbound" && binding.reason === "no_enrollment") {
|
|
131
|
+
const probe = await engine.credentialProbe().catch(() => null);
|
|
132
|
+
if (probe?.ok) {
|
|
133
|
+
const account = await engine.accountIdentity?.().catch(() => null);
|
|
134
|
+
const outcome = await autoEnrollCompanionIdentity({ publicUrl: cfg.publicUrl, accessToken: session.access_token }, {
|
|
135
|
+
provider: providerForEngine(engine.id) ?? "",
|
|
136
|
+
engine: engine.id,
|
|
137
|
+
runnerId: session.runner_id,
|
|
138
|
+
tier: probe.tier,
|
|
139
|
+
accountEmail: account?.account_email ?? null,
|
|
140
|
+
machine: hostname(),
|
|
141
|
+
});
|
|
142
|
+
if (outcome.enrolled) {
|
|
143
|
+
binding = {
|
|
144
|
+
kind: "bound",
|
|
145
|
+
identityId: outcome.identityId,
|
|
146
|
+
identity: outcome.identity,
|
|
147
|
+
source: "discovery",
|
|
148
|
+
};
|
|
149
|
+
console.log(chalk.green(`[acc-runner] auto-enrolled companion identity ${outcome.identityId}` +
|
|
150
|
+
`${outcome.adopted ? " (adopted pending enrollment)" : ""} — terminal login is the setup`));
|
|
151
|
+
}
|
|
152
|
+
else if (outcome.reason === "disabled") {
|
|
153
|
+
console.log(chalk.gray("[acc-runner] auto-enroll is off for this org — staying UNBOUND (enroll in Admin ▸ AI providers)"));
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
console.log(chalk.yellow(`[acc-runner] auto-enroll did not complete (${outcome.reason}${outcome.detail ? `: ${outcome.detail}` : ""}) — staying UNBOUND`));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
120
160
|
const identityId = binding.kind === "bound" ? binding.identityId : undefined;
|
|
121
161
|
// CHAT-LANE-BRIDGE: when bound, start() persists the runner_ids binding + probe
|
|
122
162
|
// tier onto the row via POST /api/identities/probe, so provider-status can
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-run.js","sourceRoot":"","sources":["../src/companion-run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"companion-run.js","sourceRoot":"","sources":["../src/companion-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { ChatLaneTransport, ChatTurnDriveResult, ClaimedChatTurn } from "../chat-lane.js";
|
|
2
|
+
import { OwnerConversationSource } from "../companion.js";
|
|
3
|
+
import type { ChatCircuitBreaker } from "../runtime/chat-circuit-breaker.js";
|
|
4
|
+
import type { ConformantAgentEngine } from "../engines/types.js";
|
|
5
|
+
import type { ClaimableTurnProbe, FleetClaimDecision } from "./grace-gate.js";
|
|
6
|
+
export interface FleetChatLaneDeps {
|
|
7
|
+
/** This fleet runner's id (claimant of turns). */
|
|
8
|
+
runnerId: string;
|
|
9
|
+
/** The user this fleet runner is bound to — the ONLY user whose turns it serves. */
|
|
10
|
+
boundUserId: string;
|
|
11
|
+
/** The chat-conformant engine driving replies (same as the companion path). */
|
|
12
|
+
engine: ConformantAgentEngine;
|
|
13
|
+
/** The base chat-lane transport; wrapped with the grace gate internally. */
|
|
14
|
+
transport: ChatLaneTransport;
|
|
15
|
+
/** The chat-capability circuit breaker (shared with doctor / boot hydration). */
|
|
16
|
+
breaker: ChatCircuitBreaker;
|
|
17
|
+
/** Runner concurrency ceiling (shared with the code/review pump). */
|
|
18
|
+
concurrencyLimit: number;
|
|
19
|
+
/** Chat-lane max share of that ceiling (0..1); ≥1 still reserves ≥1 code slot. */
|
|
20
|
+
maxShare: number;
|
|
21
|
+
/** Requested per-turn lease (ms). */
|
|
22
|
+
leaseMs: number;
|
|
23
|
+
/**
|
|
24
|
+
* LIVE count of code/review tasks in flight on this runner (from watch.ts pump).
|
|
25
|
+
* This is the crucial difference from a dedicated companion: chat shares slots
|
|
26
|
+
* with the code lane, so the max-share budget keeps chat from starving code.
|
|
27
|
+
*/
|
|
28
|
+
activeCodeTasks: () => number;
|
|
29
|
+
/** Probe a conversation's oldest claimable turn (see supabaseFleetProbe). */
|
|
30
|
+
probe: (conversationId: string) => Promise<ClaimableTurnProbe>;
|
|
31
|
+
/** Companion-preference grace window (ms). */
|
|
32
|
+
graceMs: number;
|
|
33
|
+
/**
|
|
34
|
+
* Pre-seeded owner-affinity source; omit to start empty (the watch wiring feeds
|
|
35
|
+
* it from the identity topic + startup backfill, identical to the companion).
|
|
36
|
+
*/
|
|
37
|
+
conversations?: OwnerConversationSource;
|
|
38
|
+
/** Per-turn wall-clock runaway cap (ms); omit ⇒ ChatCompanion's default. */
|
|
39
|
+
wallClockMs?: number;
|
|
40
|
+
/** Working directory forwarded to the engine per turn. */
|
|
41
|
+
cwd?: string;
|
|
42
|
+
/** Mint a per-turn delegation token (narrowly-scoped identity) — optional. */
|
|
43
|
+
mintDelegation?: (turn: ClaimedChatTurn) => Promise<string | undefined>;
|
|
44
|
+
/** Observability: every grace-gate decision (claimed or skipped). */
|
|
45
|
+
onDecision?: (info: {
|
|
46
|
+
conversationId: string;
|
|
47
|
+
decision: FleetClaimDecision;
|
|
48
|
+
}) => void;
|
|
49
|
+
/** Best-effort observability sink for terminal turn results. */
|
|
50
|
+
onResult?: (result: ChatTurnDriveResult) => void;
|
|
51
|
+
/** Clock (test seam). */
|
|
52
|
+
now?: () => number;
|
|
53
|
+
/** Best-effort log sink. */
|
|
54
|
+
onLog?: (line: string) => void;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The fleet-fallback chat lane: an owner-scoped, grace-gated `ChatCompanion`. Its
|
|
58
|
+
* public surface mirrors `ChatCompanion` (pumpOnce/start/stop/cancel) so the watch
|
|
59
|
+
* wiring drives it exactly like the companion loop, plus a `conversations` handle
|
|
60
|
+
* the wiring feeds from discovery.
|
|
61
|
+
*/
|
|
62
|
+
export declare class FleetChatLane {
|
|
63
|
+
/** The machine-ownership isolation boundary — bound-user conversations only. */
|
|
64
|
+
readonly conversations: OwnerConversationSource;
|
|
65
|
+
private readonly companion;
|
|
66
|
+
constructor(deps: FleetChatLaneDeps);
|
|
67
|
+
/** Chat turns currently in flight on this fleet runner. */
|
|
68
|
+
activeChatTurns(): number;
|
|
69
|
+
/** Turn ids currently in flight (stable snapshot). */
|
|
70
|
+
inFlightTurnIds(): string[];
|
|
71
|
+
/** The chat-lane claim budget right now (concurrency, max-share, code load, breaker). */
|
|
72
|
+
budget(): number;
|
|
73
|
+
/** Claim + launch as many grace-cleared turns as the budget allows this pump. */
|
|
74
|
+
pumpOnce(): Promise<ClaimedChatTurn[]>;
|
|
75
|
+
/** Start the periodic pump (poll cadence between pumps). */
|
|
76
|
+
start(intervalMs?: number): void;
|
|
77
|
+
/** Abort one in-flight turn (operator cancel) — clean requeue, no dup completion. */
|
|
78
|
+
cancel(turnId: string): Promise<ChatTurnDriveResult | null>;
|
|
79
|
+
/** Stop the loop: cancel the timer and requeue every in-flight turn. */
|
|
80
|
+
stop(): Promise<ChatTurnDriveResult[]>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=fleet-chat-lane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-chat-lane.d.ts","sourceRoot":"","sources":["../../src/watch-chat/fleet-chat-lane.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAKjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,MAAM,EAAE,qBAAqB,CAAC;IAC9B,4EAA4E;IAC5E,SAAS,EAAE,iBAAiB,CAAC;IAC7B,iFAAiF;IACjF,OAAO,EAAE,kBAAkB,CAAC;IAC5B,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,6EAA6E;IAC7E,KAAK,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACxE,qEAAqE;IACrE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,kBAAkB,CAAA;KAAE,KAAK,IAAI,CAAC;IACtF,gEAAgE;IAChE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,gFAAgF;IAChF,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;gBAE9B,IAAI,EAAE,iBAAiB;IA+BnC,2DAA2D;IAC3D,eAAe,IAAI,MAAM;IAIzB,sDAAsD;IACtD,eAAe,IAAI,MAAM,EAAE;IAI3B,yFAAyF;IACzF,MAAM,IAAI,MAAM;IAIhB,iFAAiF;IACjF,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAItC,4DAA4D;IAC5D,KAAK,CAAC,UAAU,SAAQ,GAAG,IAAI;IAI/B,qFAAqF;IACrF,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAI3D,wEAAwE;IACxE,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAGvC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FLEET-SERVE: the fleet-fallback chat lane.
|
|
3
|
+
*
|
|
4
|
+
* A fleet `watch` runner already heartbeats itself online, drains the code/review
|
|
5
|
+
* lanes, and is bound to a user (`bound_user_id`). This module lets it ALSO serve
|
|
6
|
+
* that user's chat turns as the fallback behind their companion — without forking
|
|
7
|
+
* the companion's claim/drive machinery. It is a thin composition of three pieces
|
|
8
|
+
* that already exist:
|
|
9
|
+
*
|
|
10
|
+
* 1. MACHINE-OWNERSHIP ISOLATION — `OwnerConversationSource` (from companion.ts)
|
|
11
|
+
* admits ONLY conversations owned by the bound user, so a fleet runner never
|
|
12
|
+
* presents a fellow org member's conversation to the claim RPC. This is the
|
|
13
|
+
* task's headline guarantee: Deepak's turns are never fuelled by the engine
|
|
14
|
+
* login on Ajay's machine. The DB owner gate (acc.claim_chat_turn, 0271/0273)
|
|
15
|
+
* is the second, independent layer.
|
|
16
|
+
* 2. COMPANION PREFERENCE — a `graceGatedTransport` wrapper defers a fresh
|
|
17
|
+
* queued turn until the companion's window has elapsed (grace-gate.ts), so a
|
|
18
|
+
* live companion always wins; the fleet steps in only on absence/death.
|
|
19
|
+
* 3. SHARED DRIVE — a `ChatCompanion` (the same claim → drive → stream/complete
|
|
20
|
+
* loop the companion uses) drives each claimed turn, so delegation scoping +
|
|
21
|
+
* provenance are byte-for-byte identical to the companion path. Unlike a
|
|
22
|
+
* dedicated companion, the fleet lane passes the LIVE code-task count through
|
|
23
|
+
* `activeCodeTasks`, so the max-share budget keeps chat from ever starving
|
|
24
|
+
* the code/review lanes on a shared runner.
|
|
25
|
+
*
|
|
26
|
+
* The production wiring into `watch.ts` (feeding the owner source from the
|
|
27
|
+
* identity topic + startup backfill, the Supabase probe, and the pump alongside
|
|
28
|
+
* the task pump) is a follow-up — like the AS-3 resume primitives, this ships as
|
|
29
|
+
* an injectable, unit-exercised building block first.
|
|
30
|
+
*/
|
|
31
|
+
import { ChatCompanion } from "../chat-companion.js";
|
|
32
|
+
import { OwnerConversationSource } from "../companion.js";
|
|
33
|
+
import { graceGatedTransport, } from "./grace-gated-transport.js";
|
|
34
|
+
/**
|
|
35
|
+
* The fleet-fallback chat lane: an owner-scoped, grace-gated `ChatCompanion`. Its
|
|
36
|
+
* public surface mirrors `ChatCompanion` (pumpOnce/start/stop/cancel) so the watch
|
|
37
|
+
* wiring drives it exactly like the companion loop, plus a `conversations` handle
|
|
38
|
+
* the wiring feeds from discovery.
|
|
39
|
+
*/
|
|
40
|
+
export class FleetChatLane {
|
|
41
|
+
/** The machine-ownership isolation boundary — bound-user conversations only. */
|
|
42
|
+
conversations;
|
|
43
|
+
companion;
|
|
44
|
+
constructor(deps) {
|
|
45
|
+
this.conversations = deps.conversations ?? new OwnerConversationSource(deps.boundUserId);
|
|
46
|
+
const gateOpts = {
|
|
47
|
+
probe: deps.probe,
|
|
48
|
+
graceMs: deps.graceMs,
|
|
49
|
+
...(deps.onDecision ? { onDecision: deps.onDecision } : {}),
|
|
50
|
+
...(deps.onLog ? { onLog: deps.onLog } : {}),
|
|
51
|
+
};
|
|
52
|
+
const gated = graceGatedTransport(deps.transport, gateOpts);
|
|
53
|
+
const companionOpts = {
|
|
54
|
+
runnerId: deps.runnerId,
|
|
55
|
+
engine: deps.engine,
|
|
56
|
+
transport: gated,
|
|
57
|
+
breaker: deps.breaker,
|
|
58
|
+
concurrencyLimit: deps.concurrencyLimit,
|
|
59
|
+
maxShare: deps.maxShare,
|
|
60
|
+
leaseMs: deps.leaseMs,
|
|
61
|
+
conversations: () => this.conversations.snapshot(),
|
|
62
|
+
activeCodeTasks: deps.activeCodeTasks,
|
|
63
|
+
...(deps.wallClockMs !== undefined ? { wallClockMs: deps.wallClockMs } : {}),
|
|
64
|
+
...(deps.cwd !== undefined ? { cwd: deps.cwd } : {}),
|
|
65
|
+
...(deps.mintDelegation ? { mintDelegation: deps.mintDelegation } : {}),
|
|
66
|
+
...(deps.now ? { now: deps.now } : {}),
|
|
67
|
+
...(deps.onResult ? { onResult: deps.onResult } : {}),
|
|
68
|
+
...(deps.onLog ? { onLog: deps.onLog } : {}),
|
|
69
|
+
};
|
|
70
|
+
this.companion = new ChatCompanion(companionOpts);
|
|
71
|
+
}
|
|
72
|
+
/** Chat turns currently in flight on this fleet runner. */
|
|
73
|
+
activeChatTurns() {
|
|
74
|
+
return this.companion.activeChatTurns();
|
|
75
|
+
}
|
|
76
|
+
/** Turn ids currently in flight (stable snapshot). */
|
|
77
|
+
inFlightTurnIds() {
|
|
78
|
+
return this.companion.inFlightTurnIds();
|
|
79
|
+
}
|
|
80
|
+
/** The chat-lane claim budget right now (concurrency, max-share, code load, breaker). */
|
|
81
|
+
budget() {
|
|
82
|
+
return this.companion.budget();
|
|
83
|
+
}
|
|
84
|
+
/** Claim + launch as many grace-cleared turns as the budget allows this pump. */
|
|
85
|
+
pumpOnce() {
|
|
86
|
+
return this.companion.pumpOnce();
|
|
87
|
+
}
|
|
88
|
+
/** Start the periodic pump (poll cadence between pumps). */
|
|
89
|
+
start(intervalMs = 1_000) {
|
|
90
|
+
this.companion.start(intervalMs);
|
|
91
|
+
}
|
|
92
|
+
/** Abort one in-flight turn (operator cancel) — clean requeue, no dup completion. */
|
|
93
|
+
cancel(turnId) {
|
|
94
|
+
return this.companion.cancel(turnId);
|
|
95
|
+
}
|
|
96
|
+
/** Stop the loop: cancel the timer and requeue every in-flight turn. */
|
|
97
|
+
stop() {
|
|
98
|
+
return this.companion.stop();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=fleet-chat-lane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-chat-lane.js","sourceRoot":"","sources":["../../src/watch-chat/fleet-chat-lane.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FLEET-SERVE: the COMPANION-PREFERENCE grace gate.
|
|
3
|
+
*
|
|
4
|
+
* A user's chat turns may be served by ANY of their online chat-capable runners
|
|
5
|
+
* whose `bound_user_id` = the requesting user — their dedicated companion
|
|
6
|
+
* (PREFERRED) and, as a fallback, their own fleet `watch` runners. This module is
|
|
7
|
+
* the fallback-timing primitive: a fleet runner must give the companion the first
|
|
8
|
+
* ~10s on a freshly-queued turn before it claims, so a live companion always wins
|
|
9
|
+
* the turn and the fleet only steps in when the companion is absent or dead.
|
|
10
|
+
*
|
|
11
|
+
* The gate is a PURE DECISION over what a fleet runner sees when it probes a
|
|
12
|
+
* conversation's oldest claimable turn:
|
|
13
|
+
*
|
|
14
|
+
* - a fresh QUEUED turn → wait until it is `graceMs` old, then
|
|
15
|
+
* claim (the companion had its window).
|
|
16
|
+
* - a claimed/streaming turn whose lease → reclaim immediately (the companion
|
|
17
|
+
* has EXPIRED claimed it then died; the expired
|
|
18
|
+
* lease already served as the wait —
|
|
19
|
+
* acc.claim_chat_turn/0273 reclaims it).
|
|
20
|
+
* - nothing claimable (a live companion → do not claim (the companion is
|
|
21
|
+
* holds a valid lease, or empty queue) serving it right now).
|
|
22
|
+
*
|
|
23
|
+
* Machine-ownership isolation (a fleet runner serves ONLY its bound user's turns,
|
|
24
|
+
* never a fellow org member's) is enforced elsewhere — runner-side by the
|
|
25
|
+
* owner-affinity conversation source and DB-side by the acc.claim_chat_turn owner
|
|
26
|
+
* gate (0271/0273). This module is timing only; it never widens who may serve.
|
|
27
|
+
*
|
|
28
|
+
* No DB migration: the gate reads the same acc.chat_turns columns the claim RPC
|
|
29
|
+
* already exposes (status / created_at / lease_expires_at) and reduces them to a
|
|
30
|
+
* decision, so the fleet fallback ships without touching the frozen claim path.
|
|
31
|
+
*/
|
|
32
|
+
/** Default companion-preference window: a fleet runner waits this long on a fresh queued turn. */
|
|
33
|
+
export declare const DEFAULT_FLEET_CHAT_GRACE_MS = 10000;
|
|
34
|
+
/** Env var overriding the fleet companion-preference grace window (ms). */
|
|
35
|
+
export declare const FLEET_CHAT_GRACE_MS_ENV = "ACC_RUNNER_FLEET_CHAT_GRACE_MS";
|
|
36
|
+
/** A grace of 0 disables the wait (a fleet runner falls back immediately). */
|
|
37
|
+
export declare const MIN_FLEET_CHAT_GRACE_MS = 0;
|
|
38
|
+
/** Upper clamp so a fat-fingered env can never park turns for minutes. */
|
|
39
|
+
export declare const MAX_FLEET_CHAT_GRACE_MS = 120000;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve the fleet companion-preference grace window (ms) from a raw env value.
|
|
42
|
+
* Blank/absent/non-numeric ⇒ default; a negative value ⇒ 0 (immediate fallback);
|
|
43
|
+
* anything above the ceiling is clamped so a typo cannot strand turns for minutes.
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveFleetChatGraceMs(raw: string | undefined | null): number;
|
|
46
|
+
/**
|
|
47
|
+
* What a fleet runner sees when it probes a conversation for a claimable turn.
|
|
48
|
+
* A reduction of the conversation's in-flight acc.chat_turns rows onto exactly the
|
|
49
|
+
* signal the grace decision needs — nothing about WHO may serve (that is the
|
|
50
|
+
* owner gate's job), only the timing state of the oldest claimable turn.
|
|
51
|
+
*/
|
|
52
|
+
export type ClaimableTurnProbe = {
|
|
53
|
+
kind: "none";
|
|
54
|
+
} | {
|
|
55
|
+
kind: "queued";
|
|
56
|
+
ageMs: number;
|
|
57
|
+
} | {
|
|
58
|
+
kind: "expired_inflight";
|
|
59
|
+
};
|
|
60
|
+
/** The acc.chat_turns columns the probe reduces (a subset of the claim-path row). */
|
|
61
|
+
export interface FleetTurnProbeRow {
|
|
62
|
+
status: string;
|
|
63
|
+
created_at: string;
|
|
64
|
+
lease_expires_at: string | null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Reduce a conversation's in-flight turn rows to a `ClaimableTurnProbe`, mirroring
|
|
68
|
+
* acc.claim_chat_turn's candidate ordering (0273): a QUEUED turn is the primary
|
|
69
|
+
* candidate (and sorts first in the RPC), so a queued turn takes precedence and
|
|
70
|
+
* carries its age for the grace comparison; otherwise an expired-lease in-flight
|
|
71
|
+
* turn is a reclaim candidate; otherwise there is nothing a fleet runner may take.
|
|
72
|
+
* A negative age (clock skew) is floored at 0 so a skewed row never reads as "old
|
|
73
|
+
* enough to claim" purely from arithmetic.
|
|
74
|
+
*/
|
|
75
|
+
export declare function reduceClaimableProbe(rows: readonly FleetTurnProbeRow[], now: number): ClaimableTurnProbe;
|
|
76
|
+
/** Why a fleet runner did / did not claim on this probe (observability + tests). */
|
|
77
|
+
export type FleetClaimReason = "no_turn" | "within_grace" | "grace_elapsed" | "reclaim_expired";
|
|
78
|
+
/** The grace gate's verdict: whether a fleet runner should attempt the claim now. */
|
|
79
|
+
export interface FleetClaimDecision {
|
|
80
|
+
claim: boolean;
|
|
81
|
+
reason: FleetClaimReason;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Decide whether a fleet runner should claim now, given what it probed and the
|
|
85
|
+
* companion-preference window. A live companion (a valid-lease in-flight turn)
|
|
86
|
+
* reduces to `none` ⇒ the fleet never claims it; a fresh queued turn is deferred
|
|
87
|
+
* until it is `graceMs` old ⇒ the companion's 1s pump wins it first; an
|
|
88
|
+
* expired-lease reclaim is taken at once ⇒ the companion tried and died.
|
|
89
|
+
*/
|
|
90
|
+
export declare function decideFleetClaim(probe: ClaimableTurnProbe, opts: {
|
|
91
|
+
graceMs: number;
|
|
92
|
+
}): FleetClaimDecision;
|
|
93
|
+
//# sourceMappingURL=grace-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grace-gate.d.ts","sourceRoot":"","sources":["../../src/watch-chat/grace-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,kGAAkG;AAClG,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAClD,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AACxE,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAO9E;AAED;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAEjC,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAKD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,iBAAiB,EAAE,EAClC,GAAG,EAAE,MAAM,GACV,kBAAkB,CAmBpB;AAED,oFAAoF;AACpF,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAEhG,qFAAqF;AACrF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACxB,kBAAkB,CAOpB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FLEET-SERVE: the COMPANION-PREFERENCE grace gate.
|
|
3
|
+
*
|
|
4
|
+
* A user's chat turns may be served by ANY of their online chat-capable runners
|
|
5
|
+
* whose `bound_user_id` = the requesting user — their dedicated companion
|
|
6
|
+
* (PREFERRED) and, as a fallback, their own fleet `watch` runners. This module is
|
|
7
|
+
* the fallback-timing primitive: a fleet runner must give the companion the first
|
|
8
|
+
* ~10s on a freshly-queued turn before it claims, so a live companion always wins
|
|
9
|
+
* the turn and the fleet only steps in when the companion is absent or dead.
|
|
10
|
+
*
|
|
11
|
+
* The gate is a PURE DECISION over what a fleet runner sees when it probes a
|
|
12
|
+
* conversation's oldest claimable turn:
|
|
13
|
+
*
|
|
14
|
+
* - a fresh QUEUED turn → wait until it is `graceMs` old, then
|
|
15
|
+
* claim (the companion had its window).
|
|
16
|
+
* - a claimed/streaming turn whose lease → reclaim immediately (the companion
|
|
17
|
+
* has EXPIRED claimed it then died; the expired
|
|
18
|
+
* lease already served as the wait —
|
|
19
|
+
* acc.claim_chat_turn/0273 reclaims it).
|
|
20
|
+
* - nothing claimable (a live companion → do not claim (the companion is
|
|
21
|
+
* holds a valid lease, or empty queue) serving it right now).
|
|
22
|
+
*
|
|
23
|
+
* Machine-ownership isolation (a fleet runner serves ONLY its bound user's turns,
|
|
24
|
+
* never a fellow org member's) is enforced elsewhere — runner-side by the
|
|
25
|
+
* owner-affinity conversation source and DB-side by the acc.claim_chat_turn owner
|
|
26
|
+
* gate (0271/0273). This module is timing only; it never widens who may serve.
|
|
27
|
+
*
|
|
28
|
+
* No DB migration: the gate reads the same acc.chat_turns columns the claim RPC
|
|
29
|
+
* already exposes (status / created_at / lease_expires_at) and reduces them to a
|
|
30
|
+
* decision, so the fleet fallback ships without touching the frozen claim path.
|
|
31
|
+
*/
|
|
32
|
+
/** Default companion-preference window: a fleet runner waits this long on a fresh queued turn. */
|
|
33
|
+
export const DEFAULT_FLEET_CHAT_GRACE_MS = 10_000;
|
|
34
|
+
/** Env var overriding the fleet companion-preference grace window (ms). */
|
|
35
|
+
export const FLEET_CHAT_GRACE_MS_ENV = "ACC_RUNNER_FLEET_CHAT_GRACE_MS";
|
|
36
|
+
/** A grace of 0 disables the wait (a fleet runner falls back immediately). */
|
|
37
|
+
export const MIN_FLEET_CHAT_GRACE_MS = 0;
|
|
38
|
+
/** Upper clamp so a fat-fingered env can never park turns for minutes. */
|
|
39
|
+
export const MAX_FLEET_CHAT_GRACE_MS = 120_000;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve the fleet companion-preference grace window (ms) from a raw env value.
|
|
42
|
+
* Blank/absent/non-numeric ⇒ default; a negative value ⇒ 0 (immediate fallback);
|
|
43
|
+
* anything above the ceiling is clamped so a typo cannot strand turns for minutes.
|
|
44
|
+
*/
|
|
45
|
+
export function resolveFleetChatGraceMs(raw) {
|
|
46
|
+
const trimmed = (raw ?? "").trim();
|
|
47
|
+
if (!trimmed)
|
|
48
|
+
return DEFAULT_FLEET_CHAT_GRACE_MS;
|
|
49
|
+
const n = Number.parseInt(trimmed, 10);
|
|
50
|
+
if (!Number.isFinite(n))
|
|
51
|
+
return DEFAULT_FLEET_CHAT_GRACE_MS;
|
|
52
|
+
if (n <= MIN_FLEET_CHAT_GRACE_MS)
|
|
53
|
+
return MIN_FLEET_CHAT_GRACE_MS;
|
|
54
|
+
return Math.min(MAX_FLEET_CHAT_GRACE_MS, n);
|
|
55
|
+
}
|
|
56
|
+
/** In-flight statuses a lease-expiry reclaim can pick up (mirrors 0273's candidate set). */
|
|
57
|
+
const IN_FLIGHT_STATUSES = ["claimed", "streaming"];
|
|
58
|
+
/**
|
|
59
|
+
* Reduce a conversation's in-flight turn rows to a `ClaimableTurnProbe`, mirroring
|
|
60
|
+
* acc.claim_chat_turn's candidate ordering (0273): a QUEUED turn is the primary
|
|
61
|
+
* candidate (and sorts first in the RPC), so a queued turn takes precedence and
|
|
62
|
+
* carries its age for the grace comparison; otherwise an expired-lease in-flight
|
|
63
|
+
* turn is a reclaim candidate; otherwise there is nothing a fleet runner may take.
|
|
64
|
+
* A negative age (clock skew) is floored at 0 so a skewed row never reads as "old
|
|
65
|
+
* enough to claim" purely from arithmetic.
|
|
66
|
+
*/
|
|
67
|
+
export function reduceClaimableProbe(rows, now) {
|
|
68
|
+
let oldestQueuedMs = null;
|
|
69
|
+
let sawExpiredInFlight = false;
|
|
70
|
+
for (const row of rows) {
|
|
71
|
+
if (row.status === "queued") {
|
|
72
|
+
const created = Date.parse(row.created_at);
|
|
73
|
+
if (Number.isFinite(created)) {
|
|
74
|
+
oldestQueuedMs = oldestQueuedMs === null ? created : Math.min(oldestQueuedMs, created);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if (IN_FLIGHT_STATUSES.includes(row.status) && row.lease_expires_at) {
|
|
78
|
+
const expires = Date.parse(row.lease_expires_at);
|
|
79
|
+
if (Number.isFinite(expires) && expires < now)
|
|
80
|
+
sawExpiredInFlight = true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (oldestQueuedMs !== null) {
|
|
84
|
+
return { kind: "queued", ageMs: Math.max(0, now - oldestQueuedMs) };
|
|
85
|
+
}
|
|
86
|
+
if (sawExpiredInFlight)
|
|
87
|
+
return { kind: "expired_inflight" };
|
|
88
|
+
return { kind: "none" };
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Decide whether a fleet runner should claim now, given what it probed and the
|
|
92
|
+
* companion-preference window. A live companion (a valid-lease in-flight turn)
|
|
93
|
+
* reduces to `none` ⇒ the fleet never claims it; a fresh queued turn is deferred
|
|
94
|
+
* until it is `graceMs` old ⇒ the companion's 1s pump wins it first; an
|
|
95
|
+
* expired-lease reclaim is taken at once ⇒ the companion tried and died.
|
|
96
|
+
*/
|
|
97
|
+
export function decideFleetClaim(probe, opts) {
|
|
98
|
+
if (probe.kind === "none")
|
|
99
|
+
return { claim: false, reason: "no_turn" };
|
|
100
|
+
if (probe.kind === "expired_inflight")
|
|
101
|
+
return { claim: true, reason: "reclaim_expired" };
|
|
102
|
+
const graceMs = Math.max(0, opts.graceMs);
|
|
103
|
+
return probe.ageMs >= graceMs
|
|
104
|
+
? { claim: true, reason: "grace_elapsed" }
|
|
105
|
+
: { claim: false, reason: "within_grace" };
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=grace-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grace-gate.js","sourceRoot":"","sources":["../../src/watch-chat/grace-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FLEET-SERVE: the grace-gated claim decorator.
|
|
3
|
+
*
|
|
4
|
+
* Wraps any `ChatLaneTransport` so its `claim` first PROBES the conversation and
|
|
5
|
+
* only delegates to the underlying claim when the companion-preference grace gate
|
|
6
|
+
* (grace-gate.ts) says a fleet runner may take the turn now. Everything else —
|
|
7
|
+
* markStreaming / stream / complete / requeue — passes straight through
|
|
8
|
+
* untouched, so a fleet runner drives a claimed turn through the EXACT same
|
|
9
|
+
* transport, driver (driveChatTurn), and per-turn delegation as a companion. That
|
|
10
|
+
* shared path is what makes delegation scoping + provenance (serving runner_id,
|
|
11
|
+
* engine_id, delegation_jti) IDENTICAL across the companion and fleet paths: the
|
|
12
|
+
* only difference the fleet introduces is WHEN it is allowed to claim, never HOW
|
|
13
|
+
* the turn is served.
|
|
14
|
+
*
|
|
15
|
+
* Reusing the decorator seam means the fleet lane is just a `ChatCompanion` (the
|
|
16
|
+
* shared claim/drive loop) fed a grace-gated transport — no forked drive logic.
|
|
17
|
+
*/
|
|
18
|
+
import type { ChatLaneTransport } from "../chat-lane.js";
|
|
19
|
+
import { type ClaimableTurnProbe, type FleetClaimDecision } from "./grace-gate.js";
|
|
20
|
+
export interface GraceGateOptions {
|
|
21
|
+
/** Probe a conversation for its oldest claimable turn's timing state. */
|
|
22
|
+
probe: (conversationId: string) => Promise<ClaimableTurnProbe>;
|
|
23
|
+
/** Companion-preference window (ms) a fresh queued turn must age past. */
|
|
24
|
+
graceMs: number;
|
|
25
|
+
/** Observability: every claim decision (claimed or skipped), for logs/tests. */
|
|
26
|
+
onDecision?: (info: {
|
|
27
|
+
conversationId: string;
|
|
28
|
+
decision: FleetClaimDecision;
|
|
29
|
+
}) => void;
|
|
30
|
+
/** Best-effort log sink. */
|
|
31
|
+
onLog?: (line: string) => void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Decorate `inner` with the companion-preference grace gate on `claim`. On a
|
|
35
|
+
* probe FAILURE the decorator returns null (does NOT claim this pump): claiming
|
|
36
|
+
* blind would undercut companion preference, and the turn is never lost — the
|
|
37
|
+
* next pump re-probes and, worst case, the server lease-expiry reclaim (0273)
|
|
38
|
+
* still drains it. A `claim` the gate allows delegates verbatim, so the claimed
|
|
39
|
+
* turn's lease/runner assignment is exactly the companion's.
|
|
40
|
+
*/
|
|
41
|
+
export declare function graceGatedTransport(inner: ChatLaneTransport, opts: GraceGateOptions): ChatLaneTransport;
|
|
42
|
+
/** In-flight statuses the fleet probe reads (queued + reclaimable in-flight). */
|
|
43
|
+
export declare const FLEET_PROBE_STATUSES: readonly string[];
|
|
44
|
+
/**
|
|
45
|
+
* Build a Supabase-backed probe: read the conversation's in-flight acc.chat_turns
|
|
46
|
+
* rows (queued/claimed/streaming) and reduce them to a `ClaimableTurnProbe`. The
|
|
47
|
+
* read is org-scoped by the chat_turns SELECT policy (0254); ownership is already
|
|
48
|
+
* guaranteed upstream because the fleet lane only ever probes conversations its
|
|
49
|
+
* owner-affinity source admitted (bound-user-owned). A query error is surfaced as
|
|
50
|
+
* a throw so the decorator's fail-safe (defer, don't claim) engages.
|
|
51
|
+
*/
|
|
52
|
+
export declare function supabaseFleetProbe(client: {
|
|
53
|
+
from: (table: string) => any;
|
|
54
|
+
}, opts?: {
|
|
55
|
+
now?: () => number;
|
|
56
|
+
statuses?: readonly string[];
|
|
57
|
+
}): (conversationId: string) => Promise<ClaimableTurnProbe>;
|
|
58
|
+
//# sourceMappingURL=grace-gated-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grace-gated-transport.d.ts","sourceRoot":"","sources":["../../src/watch-chat/grace-gated-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAExB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,KAAK,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/D,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,kBAAkB,CAAA;KAAE,KAAK,IAAI,CAAC;IACtF,4BAA4B;IAC5B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,gBAAgB,GACrB,iBAAiB,CAuBnB;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAuC,CAAC;AAE1F;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAEhC,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAA;CAAE,EACxC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GAC9D,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAezD"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { decideFleetClaim, reduceClaimableProbe, } from "./grace-gate.js";
|
|
2
|
+
/**
|
|
3
|
+
* Decorate `inner` with the companion-preference grace gate on `claim`. On a
|
|
4
|
+
* probe FAILURE the decorator returns null (does NOT claim this pump): claiming
|
|
5
|
+
* blind would undercut companion preference, and the turn is never lost — the
|
|
6
|
+
* next pump re-probes and, worst case, the server lease-expiry reclaim (0273)
|
|
7
|
+
* still drains it. A `claim` the gate allows delegates verbatim, so the claimed
|
|
8
|
+
* turn's lease/runner assignment is exactly the companion's.
|
|
9
|
+
*/
|
|
10
|
+
export function graceGatedTransport(inner, opts) {
|
|
11
|
+
return {
|
|
12
|
+
async claim(args) {
|
|
13
|
+
let probe;
|
|
14
|
+
try {
|
|
15
|
+
probe = await opts.probe(args.conversationId);
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
opts.onLog?.(`[acc-runner] fleet chat grace-probe(${args.conversationId}) failed: ` +
|
|
19
|
+
`${err.message}; deferring claim`);
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const decision = decideFleetClaim(probe, { graceMs: opts.graceMs });
|
|
23
|
+
opts.onDecision?.({ conversationId: args.conversationId, decision });
|
|
24
|
+
if (!decision.claim)
|
|
25
|
+
return null;
|
|
26
|
+
return inner.claim(args);
|
|
27
|
+
},
|
|
28
|
+
...(inner.markStreaming ? { markStreaming: (turn) => inner.markStreaming(turn) } : {}),
|
|
29
|
+
stream: (turn, payload) => inner.stream(turn, payload),
|
|
30
|
+
complete: (turn, payload) => inner.complete(turn, payload),
|
|
31
|
+
requeue: (turn, payload) => inner.requeue(turn, payload),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/** In-flight statuses the fleet probe reads (queued + reclaimable in-flight). */
|
|
35
|
+
export const FLEET_PROBE_STATUSES = ["queued", "claimed", "streaming"];
|
|
36
|
+
/**
|
|
37
|
+
* Build a Supabase-backed probe: read the conversation's in-flight acc.chat_turns
|
|
38
|
+
* rows (queued/claimed/streaming) and reduce them to a `ClaimableTurnProbe`. The
|
|
39
|
+
* read is org-scoped by the chat_turns SELECT policy (0254); ownership is already
|
|
40
|
+
* guaranteed upstream because the fleet lane only ever probes conversations its
|
|
41
|
+
* owner-affinity source admitted (bound-user-owned). A query error is surfaced as
|
|
42
|
+
* a throw so the decorator's fail-safe (defer, don't claim) engages.
|
|
43
|
+
*/
|
|
44
|
+
export function supabaseFleetProbe(
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
+
client, opts = {}) {
|
|
47
|
+
const now = opts.now ?? Date.now;
|
|
48
|
+
const statuses = opts.statuses ?? FLEET_PROBE_STATUSES;
|
|
49
|
+
return async (conversationId) => {
|
|
50
|
+
const res = await client
|
|
51
|
+
.from("chat_turns")
|
|
52
|
+
.select("status, created_at, lease_expires_at")
|
|
53
|
+
.eq("conversation_id", conversationId)
|
|
54
|
+
.in("status", statuses);
|
|
55
|
+
if (res?.error) {
|
|
56
|
+
throw new Error(res.error.message ?? "chat_turns probe failed");
|
|
57
|
+
}
|
|
58
|
+
const rows = (Array.isArray(res?.data) ? res.data : []);
|
|
59
|
+
return reduceClaimableProbe(rows, now());
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=grace-gated-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grace-gated-transport.js","sourceRoot":"","sources":["../../src/watch-chat/grace-gated-transport.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GAIrB,MAAM,iBAAiB,CAAC;AAazB;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAwB,EACxB,IAAsB;IAEtB,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,IAAI;YACd,IAAI,KAAyB,CAAC;YAC9B,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,EAAE,CACV,uCAAuC,IAAI,CAAC,cAAc,YAAY;oBACpE,GAAI,GAAa,CAAC,OAAO,mBAAmB,CAC/C,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACjC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,aAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;QACtD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAC1D,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAsB,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAE1F;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;AAChC,8DAA8D;AAC9D,MAAwC,EACxC,OAA6D,EAAE;IAE/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,oBAAoB,CAAC;IACvD,OAAO,KAAK,EAAE,cAAsB,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,MAAM,MAAM;aACrB,IAAI,CAAC,YAAY,CAAC;aAClB,MAAM,CAAC,sCAAsC,CAAC;aAC9C,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC;aACrC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC1B,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,yBAAyB,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAwB,CAAC;QAC/E,OAAO,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FLEET-SERVE: the fleet-fallback chat-lane barrel.
|
|
3
|
+
*
|
|
4
|
+
* A fleet `watch` runner may serve its bound user's chat turns as the fallback
|
|
5
|
+
* behind their companion. The pieces:
|
|
6
|
+
* - grace-gate.ts — companion-preference timing decision (pure).
|
|
7
|
+
* - grace-gated-transport.ts — the claim decorator + Supabase probe builder.
|
|
8
|
+
* - fleet-chat-lane.ts — the owner-scoped, grace-gated ChatCompanion.
|
|
9
|
+
*
|
|
10
|
+
* Machine-ownership isolation (bound-user turns only) is enforced by the
|
|
11
|
+
* owner-affinity source (runner-side) + the acc.claim_chat_turn owner gate
|
|
12
|
+
* (DB-side); this module never widens who may serve, only WHEN the fleet claims.
|
|
13
|
+
*/
|
|
14
|
+
export { DEFAULT_FLEET_CHAT_GRACE_MS, FLEET_CHAT_GRACE_MS_ENV, MIN_FLEET_CHAT_GRACE_MS, MAX_FLEET_CHAT_GRACE_MS, resolveFleetChatGraceMs, reduceClaimableProbe, decideFleetClaim, type ClaimableTurnProbe, type FleetTurnProbeRow, type FleetClaimReason, type FleetClaimDecision, } from "./grace-gate.js";
|
|
15
|
+
export { graceGatedTransport, supabaseFleetProbe, FLEET_PROBE_STATUSES, type GraceGateOptions, } from "./grace-gated-transport.js";
|
|
16
|
+
export { FleetChatLane, type FleetChatLaneDeps } from "./fleet-chat-lane.js";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/watch-chat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,gBAAgB,GACtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FLEET-SERVE: the fleet-fallback chat-lane barrel.
|
|
3
|
+
*
|
|
4
|
+
* A fleet `watch` runner may serve its bound user's chat turns as the fallback
|
|
5
|
+
* behind their companion. The pieces:
|
|
6
|
+
* - grace-gate.ts — companion-preference timing decision (pure).
|
|
7
|
+
* - grace-gated-transport.ts — the claim decorator + Supabase probe builder.
|
|
8
|
+
* - fleet-chat-lane.ts — the owner-scoped, grace-gated ChatCompanion.
|
|
9
|
+
*
|
|
10
|
+
* Machine-ownership isolation (bound-user turns only) is enforced by the
|
|
11
|
+
* owner-affinity source (runner-side) + the acc.claim_chat_turn owner gate
|
|
12
|
+
* (DB-side); this module never widens who may serve, only WHEN the fleet claims.
|
|
13
|
+
*/
|
|
14
|
+
export { DEFAULT_FLEET_CHAT_GRACE_MS, FLEET_CHAT_GRACE_MS_ENV, MIN_FLEET_CHAT_GRACE_MS, MAX_FLEET_CHAT_GRACE_MS, resolveFleetChatGraceMs, reduceClaimableProbe, decideFleetClaim, } from "./grace-gate.js";
|
|
15
|
+
export { graceGatedTransport, supabaseFleetProbe, FLEET_PROBE_STATUSES, } from "./grace-gated-transport.js";
|
|
16
|
+
export { FleetChatLane } from "./fleet-chat-lane.js";
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/watch-chat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,GAKjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GAErB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,aAAa,EAA0B,MAAM,sBAAsB,CAAC"}
|