@spinabot/brigade 1.13.0 → 1.15.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/convex/logs.d.ts +9 -9
- package/convex/memory.d.ts +21 -21
- package/convex/schema.d.ts +11 -11
- package/convex/skills.d.ts +3 -3
- package/dist/buildstamp.json +1 -1
- package/dist/cli/commands/config-cmd.d.ts +12 -19
- package/dist/cli/commands/config-cmd.d.ts.map +1 -1
- package/dist/cli/commands/config-cmd.js +14 -197
- package/dist/cli/commands/config-cmd.js.map +1 -1
- package/dist/cli/commands/connect-transcript.d.ts +39 -0
- package/dist/cli/commands/connect-transcript.d.ts.map +1 -0
- package/dist/cli/commands/connect-transcript.js +60 -0
- package/dist/cli/commands/connect-transcript.js.map +1 -0
- package/dist/cli/commands/connect.d.ts.map +1 -1
- package/dist/cli/commands/connect.js +297 -169
- package/dist/cli/commands/connect.js.map +1 -1
- package/dist/core/agents-crud-ops.d.ts +15 -0
- package/dist/core/agents-crud-ops.d.ts.map +1 -0
- package/dist/core/agents-crud-ops.js +27 -0
- package/dist/core/agents-crud-ops.js.map +1 -0
- package/dist/core/agents-ops.d.ts +43 -0
- package/dist/core/agents-ops.d.ts.map +1 -0
- package/dist/core/agents-ops.js +117 -0
- package/dist/core/agents-ops.js.map +1 -0
- package/dist/core/channels-ops.d.ts +30 -0
- package/dist/core/channels-ops.d.ts.map +1 -0
- package/dist/core/channels-ops.js +52 -0
- package/dist/core/channels-ops.js.map +1 -0
- package/dist/core/config-ops.d.ts +77 -0
- package/dist/core/config-ops.d.ts.map +1 -0
- package/dist/core/config-ops.js +241 -0
- package/dist/core/config-ops.js.map +1 -0
- package/dist/core/exec-ops.d.ts +48 -0
- package/dist/core/exec-ops.d.ts.map +1 -0
- package/dist/core/exec-ops.js +101 -0
- package/dist/core/exec-ops.js.map +1 -0
- package/dist/core/integrations-ops.d.ts +25 -0
- package/dist/core/integrations-ops.d.ts.map +1 -0
- package/dist/core/integrations-ops.js +40 -0
- package/dist/core/integrations-ops.js.map +1 -0
- package/dist/core/memory-ops.d.ts +20 -0
- package/dist/core/memory-ops.d.ts.map +1 -0
- package/dist/core/memory-ops.js +40 -0
- package/dist/core/memory-ops.js.map +1 -0
- package/dist/core/pairing-ops.d.ts +33 -0
- package/dist/core/pairing-ops.d.ts.map +1 -0
- package/dist/core/pairing-ops.js +78 -0
- package/dist/core/pairing-ops.js.map +1 -0
- package/dist/core/provider-ops.d.ts +17 -0
- package/dist/core/provider-ops.d.ts.map +1 -0
- package/dist/core/provider-ops.js +29 -0
- package/dist/core/provider-ops.js.map +1 -0
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +261 -14
- package/dist/core/server.js.map +1 -1
- package/dist/core/sessions-ops.d.ts +25 -0
- package/dist/core/sessions-ops.d.ts.map +1 -0
- package/dist/core/sessions-ops.js +77 -0
- package/dist/core/sessions-ops.js.map +1 -0
- package/dist/core/skills-ops.d.ts +14 -0
- package/dist/core/skills-ops.d.ts.map +1 -0
- package/dist/core/skills-ops.js +28 -0
- package/dist/core/skills-ops.js.map +1 -0
- package/dist/protocol/errors.d.ts +14 -0
- package/dist/protocol/errors.d.ts.map +1 -1
- package/dist/protocol/errors.js +14 -0
- package/dist/protocol/errors.js.map +1 -1
- package/dist/protocol/handshake.d.ts +10 -0
- package/dist/protocol/handshake.d.ts.map +1 -1
- package/dist/protocol/methods.d.ts +478 -0
- package/dist/protocol/methods.d.ts.map +1 -1
- package/dist/protocol/stream-seq.d.ts +30 -0
- package/dist/protocol/stream-seq.d.ts.map +1 -0
- package/dist/protocol/stream-seq.js +38 -0
- package/dist/protocol/stream-seq.js.map +1 -0
- package/dist/protocol.d.ts +265 -6
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +95 -5
- package/dist/protocol.js.map +1 -1
- package/dist/tui/client.d.ts +67 -2
- package/dist/tui/client.d.ts.map +1 -1
- package/dist/tui/client.js +106 -2
- package/dist/tui/client.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-transcript hygiene behind the `sessions.cleanup` gateway RPC — the
|
|
3
|
+
* `brigade sessions cleanup --older-than <duration>` surface, reachable from a
|
|
4
|
+
* remote client.
|
|
5
|
+
*
|
|
6
|
+
* OPERATOR-SCOPED maintenance: deletes an agent's OWN idle transcript files
|
|
7
|
+
* (`~/.brigade/agents/<id>/sessions/<sid>.jsonl`). It does NOT read or disclose
|
|
8
|
+
* another agent's session CONTENT (unlike sessions.list/history/send, which are
|
|
9
|
+
* guarded) — it only removes stale files the gateway regenerates on next
|
|
10
|
+
* access. So no per-session access guard (allowlisted by name in the
|
|
11
|
+
* guard-sweep).
|
|
12
|
+
*/
|
|
13
|
+
/** Parse a duration like "30d" / "12h" / "2w" into milliseconds. */
|
|
14
|
+
export declare function parseDuration(s: string): number | null;
|
|
15
|
+
export interface SessionsCleanupResult {
|
|
16
|
+
ok: boolean;
|
|
17
|
+
agentId: string;
|
|
18
|
+
candidates: number;
|
|
19
|
+
deleted: number;
|
|
20
|
+
dryRun: boolean;
|
|
21
|
+
wouldDelete?: string[];
|
|
22
|
+
reason?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function handleSessionsCleanup(params: unknown): SessionsCleanupResult;
|
|
25
|
+
//# sourceMappingURL=sessions-ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions-ops.d.ts","sourceRoot":"","sources":["../../src/core/sessions-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA6BH,oEAAoE;AACpE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOtD;AAED,MAAM,WAAW,qBAAqB;IACrC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,qBAAqB,CA+B5E"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-transcript hygiene behind the `sessions.cleanup` gateway RPC — the
|
|
3
|
+
* `brigade sessions cleanup --older-than <duration>` surface, reachable from a
|
|
4
|
+
* remote client.
|
|
5
|
+
*
|
|
6
|
+
* OPERATOR-SCOPED maintenance: deletes an agent's OWN idle transcript files
|
|
7
|
+
* (`~/.brigade/agents/<id>/sessions/<sid>.jsonl`). It does NOT read or disclose
|
|
8
|
+
* another agent's session CONTENT (unlike sessions.list/history/send, which are
|
|
9
|
+
* guarded) — it only removes stale files the gateway regenerates on next
|
|
10
|
+
* access. So no per-session access guard (allowlisted by name in the
|
|
11
|
+
* guard-sweep).
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, readdirSync, rmSync, statSync } from "node:fs";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
import { DEFAULT_AGENT_ID, resolveSessionsDir } from "../config/paths.js";
|
|
16
|
+
function listSessionFiles(agentId) {
|
|
17
|
+
const dir = resolveSessionsDir(agentId);
|
|
18
|
+
if (!existsSync(dir))
|
|
19
|
+
return [];
|
|
20
|
+
const rows = [];
|
|
21
|
+
for (const name of readdirSync(dir)) {
|
|
22
|
+
if (!name.endsWith(".jsonl"))
|
|
23
|
+
continue;
|
|
24
|
+
try {
|
|
25
|
+
const st = statSync(path.join(dir, name));
|
|
26
|
+
rows.push({ sessionId: name.replace(/\.jsonl$/, ""), bytes: st.size, mtimeMs: st.mtimeMs });
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
/* ignore unreadable entries */
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return rows;
|
|
33
|
+
}
|
|
34
|
+
/** Parse a duration like "30d" / "12h" / "2w" into milliseconds. */
|
|
35
|
+
export function parseDuration(s) {
|
|
36
|
+
const m = s.match(/^(\d+)\s*(s|m|h|d|w)$/i);
|
|
37
|
+
if (!m)
|
|
38
|
+
return null;
|
|
39
|
+
const n = Number(m[1]);
|
|
40
|
+
const u = m[2]?.toLowerCase() ?? "d";
|
|
41
|
+
const mul = { s: 1_000, m: 60_000, h: 3_600_000, d: 86_400_000, w: 604_800_000 }[u] ?? 0;
|
|
42
|
+
return n * mul;
|
|
43
|
+
}
|
|
44
|
+
export function handleSessionsCleanup(params) {
|
|
45
|
+
const p = (params ?? {});
|
|
46
|
+
const agentId = (p.agentId ?? "").trim() || DEFAULT_AGENT_ID;
|
|
47
|
+
const dryRun = !!p.dryRun;
|
|
48
|
+
const ms = parseDuration((p.olderThan ?? "").trim());
|
|
49
|
+
if (ms == null) {
|
|
50
|
+
return {
|
|
51
|
+
ok: false,
|
|
52
|
+
agentId,
|
|
53
|
+
candidates: 0,
|
|
54
|
+
deleted: 0,
|
|
55
|
+
dryRun,
|
|
56
|
+
reason: `'olderThan' must look like "30d" / "12h" / "2w"`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const cutoff = Date.now() - ms;
|
|
60
|
+
const stale = listSessionFiles(agentId).filter((r) => r.mtimeMs < cutoff);
|
|
61
|
+
if (dryRun) {
|
|
62
|
+
return { ok: true, agentId, candidates: stale.length, deleted: 0, dryRun: true, wouldDelete: stale.map((r) => r.sessionId) };
|
|
63
|
+
}
|
|
64
|
+
const dir = resolveSessionsDir(agentId);
|
|
65
|
+
let deleted = 0;
|
|
66
|
+
for (const r of stale) {
|
|
67
|
+
try {
|
|
68
|
+
rmSync(path.join(dir, `${r.sessionId}.jsonl`), { force: true });
|
|
69
|
+
deleted++;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
/* best-effort — skip individual delete failures */
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return { ok: true, agentId, candidates: stale.length, deleted, dryRun: false };
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=sessions-ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions-ops.js","sourceRoot":"","sources":["../../src/core/sessions-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill authoring behind the `skills.create` / `skills.delete` /
|
|
3
|
+
* `skills.write-file` gateway RPCs — reachable from a remote client.
|
|
4
|
+
*
|
|
5
|
+
* Skills are SKILL.md files on disk (NOT config), so `config.set` can't author
|
|
6
|
+
* them; `skills.status`/`skills.install`/`skills.update` already cover read /
|
|
7
|
+
* install / enable. These close create/delete/support-file. Reuses the
|
|
8
|
+
* `manage_skill` tool (ctx-free execute, owner-gated via wrapper). Operator-
|
|
9
|
+
* scoped (no per-session guard — allowlisted in the guard-sweep).
|
|
10
|
+
*/
|
|
11
|
+
export declare function handleSkillsCreate(params: unknown): Promise<unknown>;
|
|
12
|
+
export declare function handleSkillsDelete(params: unknown): Promise<unknown>;
|
|
13
|
+
export declare function handleSkillsWriteFile(params: unknown): Promise<unknown>;
|
|
14
|
+
//# sourceMappingURL=skills-ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-ops.d.ts","sourceRoot":"","sources":["../../src/core/skills-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1E;AACD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1E;AACD,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAE7E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill authoring behind the `skills.create` / `skills.delete` /
|
|
3
|
+
* `skills.write-file` gateway RPCs — reachable from a remote client.
|
|
4
|
+
*
|
|
5
|
+
* Skills are SKILL.md files on disk (NOT config), so `config.set` can't author
|
|
6
|
+
* them; `skills.status`/`skills.install`/`skills.update` already cover read /
|
|
7
|
+
* install / enable. These close create/delete/support-file. Reuses the
|
|
8
|
+
* `manage_skill` tool (ctx-free execute, owner-gated via wrapper). Operator-
|
|
9
|
+
* scoped (no per-session guard — allowlisted in the guard-sweep).
|
|
10
|
+
*/
|
|
11
|
+
import { DEFAULT_AGENT_ID } from "../agents/routing/session-key.js";
|
|
12
|
+
import { makeManageSkillTool } from "../agents/tools/manage-skill-tool.js";
|
|
13
|
+
async function runManageSkill(args) {
|
|
14
|
+
const requesterAgentId = typeof args.agentId === "string" && args.agentId.trim().length > 0 ? args.agentId : DEFAULT_AGENT_ID;
|
|
15
|
+
const tool = makeManageSkillTool({ requesterAgentId });
|
|
16
|
+
const res = await tool.execute("gateway", args);
|
|
17
|
+
return res.details;
|
|
18
|
+
}
|
|
19
|
+
export async function handleSkillsCreate(params) {
|
|
20
|
+
return runManageSkill({ ...(params ?? {}), action: "create" });
|
|
21
|
+
}
|
|
22
|
+
export async function handleSkillsDelete(params) {
|
|
23
|
+
return runManageSkill({ ...(params ?? {}), action: "delete" });
|
|
24
|
+
}
|
|
25
|
+
export async function handleSkillsWriteFile(params) {
|
|
26
|
+
return runManageSkill({ ...(params ?? {}), action: "write_file" });
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=skills-ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-ops.js","sourceRoot":"","sources":["../../src/core/skills-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,KAAK,UAAU,cAAc,CAAC,IAA6B;IAC1D,MAAM,gBAAgB,GACrB,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACtG,MAAM,IAAI,GAAG,mBAAmB,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAa,CAAC,CAAC;IACzD,OAAO,GAAG,CAAC,OAAO,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAe;IACvD,OAAO,cAAc,CAAC,EAAE,GAAI,CAAC,MAAM,IAAI,EAAE,CAA6B,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7F,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAe;IACvD,OAAO,cAAc,CAAC,EAAE,GAAI,CAAC,MAAM,IAAI,EAAE,CAA6B,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7F,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAe;IAC1D,OAAO,cAAc,CAAC,EAAE,GAAI,CAAC,MAAM,IAAI,EAAE,CAA6B,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;AACjG,CAAC"}
|
|
@@ -23,6 +23,20 @@ export declare const ErrorCodes: {
|
|
|
23
23
|
readonly APPROVAL_NOT_FOUND: "APPROVAL_NOT_FOUND";
|
|
24
24
|
/** Subsystem is loading / draining; caller may retry shortly. */
|
|
25
25
|
readonly UNAVAILABLE: "UNAVAILABLE";
|
|
26
|
+
/**
|
|
27
|
+
* The remaining codes the gateway actually emits today (previously
|
|
28
|
+
* undocumented string literals — catalogued here so a web/mobile client has
|
|
29
|
+
* the COMPLETE, stable set to branch on). Values match the on-the-wire
|
|
30
|
+
* strings the server already sends.
|
|
31
|
+
*/
|
|
32
|
+
/** Per-connection rate limiter tripped; honour `retryAfterMs`. */
|
|
33
|
+
readonly RATE_LIMITED: "rate-limited";
|
|
34
|
+
/** Unexpected server-side failure handling the request. */
|
|
35
|
+
readonly INTERNAL: "internal";
|
|
36
|
+
/** Caller lacks permission for the target (owner/session gate). */
|
|
37
|
+
readonly FORBIDDEN: "forbidden";
|
|
38
|
+
/** Caller's operator scope is insufficient for this method. */
|
|
39
|
+
readonly SCOPE_INSUFFICIENT: "scope-insufficient";
|
|
26
40
|
};
|
|
27
41
|
export type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes];
|
|
28
42
|
export interface ErrorShapeOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/protocol/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,eAAO,MAAM,UAAU;IACtB,oEAAoE;;IAEpE,kDAAkD;;IAElD,sEAAsE;;IAEtE,uCAAuC;;IAEvC,2EAA2E;;IAE3E,iEAAiE;;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/protocol/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,eAAO,MAAM,UAAU;IACtB,oEAAoE;;IAEpE,kDAAkD;;IAElD,sEAAsE;;IAEtE,uCAAuC;;IAEvC,2EAA2E;;IAE3E,iEAAiE;;IAEjE;;;;;OAKG;IACH,kEAAkE;;IAElE,2DAA2D;;IAE3D,mEAAmE;;IAEnE,+DAA+D;;CAEtD,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAErE,MAAM,WAAW,iBAAiB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CACzB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,iBAAsB,GAC1B,kBAAkB,CAQpB"}
|
package/dist/protocol/errors.js
CHANGED
|
@@ -22,6 +22,20 @@ export const ErrorCodes = {
|
|
|
22
22
|
APPROVAL_NOT_FOUND: "APPROVAL_NOT_FOUND",
|
|
23
23
|
/** Subsystem is loading / draining; caller may retry shortly. */
|
|
24
24
|
UNAVAILABLE: "UNAVAILABLE",
|
|
25
|
+
/**
|
|
26
|
+
* The remaining codes the gateway actually emits today (previously
|
|
27
|
+
* undocumented string literals — catalogued here so a web/mobile client has
|
|
28
|
+
* the COMPLETE, stable set to branch on). Values match the on-the-wire
|
|
29
|
+
* strings the server already sends.
|
|
30
|
+
*/
|
|
31
|
+
/** Per-connection rate limiter tripped; honour `retryAfterMs`. */
|
|
32
|
+
RATE_LIMITED: "rate-limited",
|
|
33
|
+
/** Unexpected server-side failure handling the request. */
|
|
34
|
+
INTERNAL: "internal",
|
|
35
|
+
/** Caller lacks permission for the target (owner/session gate). */
|
|
36
|
+
FORBIDDEN: "forbidden",
|
|
37
|
+
/** Caller's operator scope is insufficient for this method. */
|
|
38
|
+
SCOPE_INSUFFICIENT: "scope-insufficient",
|
|
25
39
|
};
|
|
26
40
|
/** Helper to construct a typed `ProtocolErrorShape` from one of the known codes. */
|
|
27
41
|
export function errorShape(code, message, opts = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/protocol/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,oEAAoE;IACpE,UAAU,EAAE,YAAY;IACxB,kDAAkD;IAClD,UAAU,EAAE,YAAY;IACxB,sEAAsE;IACtE,aAAa,EAAE,eAAe;IAC9B,uCAAuC;IACvC,eAAe,EAAE,iBAAiB;IAClC,2EAA2E;IAC3E,kBAAkB,EAAE,oBAAoB;IACxC,iEAAiE;IACjE,WAAW,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/protocol/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,oEAAoE;IACpE,UAAU,EAAE,YAAY;IACxB,kDAAkD;IAClD,UAAU,EAAE,YAAY;IACxB,sEAAsE;IACtE,aAAa,EAAE,eAAe;IAC9B,uCAAuC;IACvC,eAAe,EAAE,iBAAiB;IAClC,2EAA2E;IAC3E,kBAAkB,EAAE,oBAAoB;IACxC,iEAAiE;IACjE,WAAW,EAAE,aAAa;IAC1B;;;;;OAKG;IACH,kEAAkE;IAClE,YAAY,EAAE,cAAc;IAC5B,2DAA2D;IAC3D,QAAQ,EAAE,UAAU;IACpB,mEAAmE;IACnE,SAAS,EAAE,WAAW;IACtB,+DAA+D;IAC/D,kBAAkB,EAAE,oBAAoB;CAC/B,CAAC;AAUX,oFAAoF;AACpF,MAAM,UAAU,UAAU,CACzB,IAAe,EACf,OAAe,EACf,OAA0B,EAAE;IAE5B,OAAO;QACN,IAAI;QACJ,OAAO;QACP,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC;AACH,CAAC"}
|
|
@@ -81,6 +81,16 @@ export interface HelloOk {
|
|
|
81
81
|
server: {
|
|
82
82
|
version: string;
|
|
83
83
|
connId: string;
|
|
84
|
+
/**
|
|
85
|
+
* Per-process boot id (session generation / "epoch"). Changes whenever
|
|
86
|
+
* the gateway process restarts. A client compares the epoch across
|
|
87
|
+
* (re)connections: if it changed, the server's per-session seq counters
|
|
88
|
+
* reset, so the client must invalidate its seq cursors and re-`resume`
|
|
89
|
+
* rather than infer a restart from a backwards seq. This makes cursor
|
|
90
|
+
* invalidation explicit + correct, rather than inferred from a
|
|
91
|
+
* backwards-jumping seq.
|
|
92
|
+
*/
|
|
93
|
+
epoch: string;
|
|
84
94
|
};
|
|
85
95
|
features: {
|
|
86
96
|
methods: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/protocol/handshake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAI3C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;CAYnB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAEvF,eAAO,MAAM,kBAAkB;;;;;;;;CAQrB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE7F,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,eAAe,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAIjF,MAAM,WAAW,aAAa;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/protocol/handshake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAI3C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;CAYnB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAEvF,eAAO,MAAM,kBAAkB;;;;;;;;CAQrB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE7F,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,eAAe,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAIjF,MAAM,WAAW,aAAa;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf;;;;;;;;WAQG;QACH,KAAK,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE;QACT,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,MAAM,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,IAAI,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACF"}
|