@cotal-ai/auth 0.90.0 → 0.91.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/authority-client.d.ts.map +1 -1
- package/dist/authority-client.js +4 -1
- package/dist/authority-client.js.map +1 -1
- package/dist/chat-parent-pin.d.ts +43 -0
- package/dist/chat-parent-pin.d.ts.map +1 -0
- package/dist/chat-parent-pin.js +115 -0
- package/dist/chat-parent-pin.js.map +1 -0
- package/dist/chat-session-authority.d.ts +120 -0
- package/dist/chat-session-authority.d.ts.map +1 -0
- package/dist/chat-session-authority.js +924 -0
- package/dist/chat-session-authority.js.map +1 -0
- package/dist/chat-session-row.d.ts +117 -0
- package/dist/chat-session-row.d.ts.map +1 -0
- package/dist/chat-session-row.js +358 -0
- package/dist/chat-session-row.js.map +1 -0
- package/dist/chat-session-store.d.ts +126 -0
- package/dist/chat-session-store.d.ts.map +1 -0
- package/dist/chat-session-store.js +392 -0
- package/dist/chat-session-store.js.map +1 -0
- package/dist/commands.d.ts +3 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +497 -122
- package/dist/commands.js.map +1 -1
- package/dist/continuity.js +1 -1
- package/dist/continuity.js.map +1 -1
- package/dist/daemon-flags.d.ts +42 -0
- package/dist/daemon-flags.d.ts.map +1 -0
- package/dist/daemon-flags.js +12 -0
- package/dist/daemon-flags.js.map +1 -0
- package/dist/handle-inspect.d.ts +101 -0
- package/dist/handle-inspect.d.ts.map +1 -0
- package/dist/handle-inspect.js +50 -0
- package/dist/handle-inspect.js.map +1 -0
- package/dist/handle-verification.d.ts +75 -0
- package/dist/handle-verification.d.ts.map +1 -0
- package/dist/handle-verification.js +135 -0
- package/dist/handle-verification.js.map +1 -0
- package/dist/idp.d.ts +23 -1
- package/dist/idp.d.ts.map +1 -1
- package/dist/idp.js +54 -8
- package/dist/idp.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +58 -5
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +126 -6
- package/dist/ledger.js.map +1 -1
- package/dist/lifecycle-registry.d.ts +1 -70
- package/dist/lifecycle-registry.d.ts.map +1 -1
- package/dist/lifecycle-registry.js +4 -35
- package/dist/lifecycle-registry.js.map +1 -1
- package/dist/login.d.ts +9 -0
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +53 -8
- package/dist/login.js.map +1 -1
- package/dist/permissions.js +4 -0
- package/dist/permissions.js.map +1 -1
- package/dist/provider.d.ts +23 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +244 -44
- package/dist/provider.js.map +1 -1
- package/dist/service-adapter.d.ts +6 -0
- package/dist/service-adapter.d.ts.map +1 -0
- package/dist/service-adapter.js +120 -0
- package/dist/service-adapter.js.map +1 -0
- package/dist/service.d.ts +61 -2
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +399 -84
- package/dist/service.js.map +1 -1
- package/dist/store.d.ts +10 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +25 -8
- package/dist/store.js.map +1 -1
- package/dist/token.d.ts +1 -1
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js +4 -1
- package/dist/token.js.map +1 -1
- package/package.json +11 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-session-authority.js","sourceRoot":"","sources":["../src/chat-session-authority.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
export declare const CHAT_SESSIONS_DIR = "chat-sessions";
|
|
2
|
+
/** Request bounds, enforced at admission and re-asserted by the reader. */
|
|
3
|
+
export declare const CHAT_LABEL_MAX = 128;
|
|
4
|
+
export declare const CHAT_LIST_MAX = 64;
|
|
5
|
+
/** The absolute session cap, never extended. */
|
|
6
|
+
export declare const CHAT_SESSION_MAX_TTL_MS: number;
|
|
7
|
+
/** The server-drawn chat actor alias: `chat_` + 26 lowercase base32 characters (130 bits). */
|
|
8
|
+
export declare const CHAT_ACTOR: RegExp;
|
|
9
|
+
export type ChatSessionState = "pending" | "active" | "retired";
|
|
10
|
+
/** Outcomes a RETIRED row can record. `failed` is never recorded: a failed retirement leaves the
|
|
11
|
+
* row non-retired and is reported as pending. */
|
|
12
|
+
export type ChatRetireOutcome = "retired" | "alreadyRetired" | "notStarted";
|
|
13
|
+
/** The parent pin: the parent `cli` row's UID, the leader-read revision of its head, and the
|
|
14
|
+
* RFC 8785 digest of the row's authority fields (`chat-parent-pin.ts`). */
|
|
15
|
+
export interface ChatParentPin {
|
|
16
|
+
actor: "cli";
|
|
17
|
+
lifecycleUid: string;
|
|
18
|
+
headRevision: number;
|
|
19
|
+
rowDigest: string;
|
|
20
|
+
}
|
|
21
|
+
/** The full (uncompacted) row. */
|
|
22
|
+
export interface ChatSessionRow {
|
|
23
|
+
owner: string;
|
|
24
|
+
actor: string;
|
|
25
|
+
lifecycleUid: string;
|
|
26
|
+
holderHash: string;
|
|
27
|
+
allowSubscribe: string[];
|
|
28
|
+
allowPublish: string[];
|
|
29
|
+
/** Always `[]`: no spawn, run, admin, view, role or capability rides a chat session. */
|
|
30
|
+
scope: [];
|
|
31
|
+
label?: string;
|
|
32
|
+
admittedAt: number;
|
|
33
|
+
expiresAt: number;
|
|
34
|
+
parentPin: ChatParentPin;
|
|
35
|
+
state: ChatSessionState;
|
|
36
|
+
retiredAt?: number;
|
|
37
|
+
retireOutcome?: ChatRetireOutcome;
|
|
38
|
+
}
|
|
39
|
+
/** The permanent tombstone left by compaction. Never deleted. */
|
|
40
|
+
export interface ChatSessionTombstone {
|
|
41
|
+
owner: string;
|
|
42
|
+
actor: string;
|
|
43
|
+
lifecycleUid: string;
|
|
44
|
+
holderHash: string;
|
|
45
|
+
state: "retired";
|
|
46
|
+
retiredAt: number;
|
|
47
|
+
expiresAt: number;
|
|
48
|
+
}
|
|
49
|
+
export type ChatSessionRecord = {
|
|
50
|
+
form: "row";
|
|
51
|
+
row: ChatSessionRow;
|
|
52
|
+
} | {
|
|
53
|
+
form: "tombstone";
|
|
54
|
+
row: ChatSessionTombstone;
|
|
55
|
+
};
|
|
56
|
+
export declare function assertChatActor(actor: unknown): string;
|
|
57
|
+
export declare function assertHolderHash(v: unknown): string;
|
|
58
|
+
/** Validate one ACL list against the request bounds and the channel grammar. */
|
|
59
|
+
export declare function assertChatList(list: unknown, what: string): string[];
|
|
60
|
+
/** Validate a closed parent pin (shared with the holder index digest). */
|
|
61
|
+
export declare function parseChatParentPin(v: unknown, what: string): ChatParentPin;
|
|
62
|
+
/** The row's filename is its principal dot-form; both tokens are grammar-asserted first. */
|
|
63
|
+
export declare function chatSessionRowFilename(owner: string, actor: string): string;
|
|
64
|
+
/** Validate parsed JSON against the closed contract. Exported for the reader smoke; never a
|
|
65
|
+
* substitute for {@link readChatSessionRow}, which also binds the file name. */
|
|
66
|
+
export declare function parseChatSessionRecord(raw: unknown, path: string): ChatSessionRecord;
|
|
67
|
+
/** The CLOSED reader. Fail-closed on every unreadable, unknown-version, unknown-
|
|
68
|
+
* field, symlinked or key-mismatched file. Undefined only for true absence. */
|
|
69
|
+
export declare function readChatSessionRow(dir: string, owner: string, actor: string): ChatSessionRecord | undefined;
|
|
70
|
+
/** Reader isolation: is ANY entry present at this principal in the chat row space? A
|
|
71
|
+
* present-but-unreadable entry counts as present, so a corrupt chat row can never let the alias
|
|
72
|
+
* be read as an interactive or managed grant. */
|
|
73
|
+
export declare function chatSessionAliasPresent(dir: string, owner: string, actor: string): boolean;
|
|
74
|
+
/** a5: create the `pending` row, create-only. An existing file is returned for the caller's own
|
|
75
|
+
* identity comparison (a resumed admission at the same UID); it is never overwritten. */
|
|
76
|
+
export declare function createPendingChatSessionRow(dir: string, row: ChatSessionRow): {
|
|
77
|
+
created: true;
|
|
78
|
+
} | {
|
|
79
|
+
created: false;
|
|
80
|
+
existing: ChatSessionRecord;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Move a full row forward: `pending → active`, `pending → retired` or `active → retired`. Never
|
|
84
|
+
* backwards. The caller names the UID it expects (so a write can never land on another
|
|
85
|
+
* incarnation's row) and the state it observed. An already-retired row is returned unchanged (the
|
|
86
|
+
* same-UID terminal is idempotent). Atomic whole-file replace, then read back.
|
|
87
|
+
*/
|
|
88
|
+
export declare function advanceChatSessionRow(dir: string, key: {
|
|
89
|
+
owner: string;
|
|
90
|
+
actor: string;
|
|
91
|
+
lifecycleUid: string;
|
|
92
|
+
}, to: {
|
|
93
|
+
state: "active";
|
|
94
|
+
} | {
|
|
95
|
+
state: "retired";
|
|
96
|
+
retiredAt: number;
|
|
97
|
+
retireOutcome: ChatRetireOutcome;
|
|
98
|
+
}): ChatSessionRecord;
|
|
99
|
+
/** Retention: replace a RETIRED row's body with its permanent tombstone. The caller
|
|
100
|
+
* has already re-run the UID-exact deprovision. Idempotent on an existing tombstone. */
|
|
101
|
+
export declare function compactChatSessionRow(dir: string, key: {
|
|
102
|
+
owner: string;
|
|
103
|
+
actor: string;
|
|
104
|
+
lifecycleUid: string;
|
|
105
|
+
}): ChatSessionTombstone;
|
|
106
|
+
/**
|
|
107
|
+
* Bounded, ordered discovery page for the sweep: file names strictly after `after`,
|
|
108
|
+
* at most `limit`. The names are sorted so the cursor's `rowName` is a stable position. Only names
|
|
109
|
+
* are returned; each row read is the caller's counted read.
|
|
110
|
+
*/
|
|
111
|
+
export declare function listChatSessionRowNames(dir: string, after: string, limit: number): string[];
|
|
112
|
+
/** Parse a row filename back to its principal; anything else in the space refuses. */
|
|
113
|
+
export declare function parseChatSessionRowFilename(name: string): {
|
|
114
|
+
owner: string;
|
|
115
|
+
actor: string;
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=chat-session-row.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-session-row.d.ts","sourceRoot":"","sources":["../src/chat-session-row.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CHAT-SESSION ROW space: the third ledger row space, `chat-sessions/<owner>.<actor>.json`,
|
|
3
|
+
* beside the interactive `actors/` and managed `managed-actors/` spaces. One file per user-mode chat
|
|
4
|
+
* session, written by chat admission and retirement only, read by the connect file arm, the chat
|
|
5
|
+
* exchange and the sweep.
|
|
6
|
+
*
|
|
7
|
+
* This is a NEW, CLOSED reader contract. The existing `readRow` (`ledger.ts`) validates its known
|
|
8
|
+
* fields and returns any extras; it is deliberately NOT reused or changed here. {@link readChatSessionRow}
|
|
9
|
+
* refuses every field outside the closed set, so a hand-added or partially written field never
|
|
10
|
+
* authorizes.
|
|
11
|
+
*
|
|
12
|
+
* The directory decides the kind. A row authorizes nothing by itself: exchange and connect also
|
|
13
|
+
* require the holder index `chatholder.<owner>.<holderHash>` to read `active` at the row's UID on a
|
|
14
|
+
* leader read (`chat-session-store.ts`). `pending` authorizes nothing.
|
|
15
|
+
*
|
|
16
|
+
* Writes are whole-file. The first version is create-only (a no-overwrite publish), every later
|
|
17
|
+
* version is an atomic tmp-and-rename, the `writeRow` shape. A file carries no store revision, so two
|
|
18
|
+
* writers can race a rename; the row is therefore never the fence. The holder index CAS is, and the
|
|
19
|
+
* sweep repairs a row whose state lags its retired index (named residual in HANDOFF).
|
|
20
|
+
*/
|
|
21
|
+
import { closeSync, constants, fstatSync, lstatSync, openSync, readdirSync, readFileSync, renameSync } from "node:fs";
|
|
22
|
+
import { join } from "node:path";
|
|
23
|
+
import { EpEnvelopeError, MAX_CHANNEL_LENGTH, assertDerivedOwnerToken, assertLifecycleToken, assertValidChannel, mkSecretDir, writeSecretFile, writeSecretFileCreateOnly, } from "@cotal-ai/core";
|
|
24
|
+
export const CHAT_SESSIONS_DIR = "chat-sessions";
|
|
25
|
+
const CHAT_ROW_VER = 1;
|
|
26
|
+
/** Request bounds, enforced at admission and re-asserted by the reader. */
|
|
27
|
+
export const CHAT_LABEL_MAX = 128;
|
|
28
|
+
export const CHAT_LIST_MAX = 64;
|
|
29
|
+
/** The absolute session cap, never extended. */
|
|
30
|
+
export const CHAT_SESSION_MAX_TTL_MS = 8 * 60 * 60 * 1000;
|
|
31
|
+
/** The server-drawn chat actor alias: `chat_` + 26 lowercase base32 characters (130 bits). */
|
|
32
|
+
export const CHAT_ACTOR = /^chat_[a-z2-7]{26}$/;
|
|
33
|
+
const HEX64 = /^[0-9a-f]{64}$/;
|
|
34
|
+
const RETIRE_OUTCOMES = new Set(["retired", "alreadyRetired", "notStarted"]);
|
|
35
|
+
const ROW_FIELDS = new Set([
|
|
36
|
+
"ver", "owner", "actor", "lifecycleUid", "holderHash", "allowSubscribe", "allowPublish", "scope", "label",
|
|
37
|
+
"admittedAt", "expiresAt", "parentPin", "state", "retiredAt", "retireOutcome",
|
|
38
|
+
]);
|
|
39
|
+
const ROW_REQUIRED = ["ver", "owner", "actor", "lifecycleUid", "holderHash", "allowSubscribe", "allowPublish", "scope", "admittedAt", "expiresAt", "parentPin", "state"];
|
|
40
|
+
const TOMBSTONE_FIELDS = ["ver", "owner", "actor", "lifecycleUid", "holderHash", "state", "retiredAt", "expiresAt"];
|
|
41
|
+
const PIN_FIELDS = ["actor", "lifecycleUid", "headRevision", "rowDigest"];
|
|
42
|
+
const isRec = (v) => v !== null && typeof v === "object" && !Array.isArray(v);
|
|
43
|
+
const epochMs = (v) => typeof v === "number" && Number.isSafeInteger(v) && v > 0;
|
|
44
|
+
function refuse(path, why) {
|
|
45
|
+
throw new EpEnvelopeError("failed-precondition", `${path}: chat-session row ${why} - a chat row outside the closed contract never authorizes`);
|
|
46
|
+
}
|
|
47
|
+
export function assertChatActor(actor) {
|
|
48
|
+
if (typeof actor !== "string" || !CHAT_ACTOR.test(actor))
|
|
49
|
+
throw new EpEnvelopeError("bad-request", `chat actor ${JSON.stringify(actor)} is not chat_<26 lowercase base32>`);
|
|
50
|
+
return actor;
|
|
51
|
+
}
|
|
52
|
+
export function assertHolderHash(v) {
|
|
53
|
+
if (typeof v !== "string" || !HEX64.test(v))
|
|
54
|
+
throw new EpEnvelopeError("bad-request", "holderHash must be a lowercase sha256 hex digest");
|
|
55
|
+
return v;
|
|
56
|
+
}
|
|
57
|
+
/** Validate one ACL list against the request bounds and the channel grammar. */
|
|
58
|
+
export function assertChatList(list, what) {
|
|
59
|
+
if (!Array.isArray(list))
|
|
60
|
+
throw new EpEnvelopeError("bad-request", `${what} must be an explicit list`);
|
|
61
|
+
if (list.length > CHAT_LIST_MAX)
|
|
62
|
+
throw new EpEnvelopeError("bad-request", `${what} has ${list.length} entries; at most ${CHAT_LIST_MAX}`);
|
|
63
|
+
const seen = new Set();
|
|
64
|
+
for (const ch of list) {
|
|
65
|
+
if (typeof ch !== "string" || ch.length === 0 || ch.length > MAX_CHANNEL_LENGTH)
|
|
66
|
+
throw new EpEnvelopeError("bad-request", `${what} carries a non-channel entry`);
|
|
67
|
+
try {
|
|
68
|
+
assertValidChannel(ch);
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
throw new EpEnvelopeError("bad-request", `${what}: ${e.message}`);
|
|
72
|
+
}
|
|
73
|
+
if (seen.has(ch))
|
|
74
|
+
throw new EpEnvelopeError("bad-request", `${what} repeats ${ch}`);
|
|
75
|
+
seen.add(ch);
|
|
76
|
+
}
|
|
77
|
+
return list;
|
|
78
|
+
}
|
|
79
|
+
/** Validate a closed parent pin (shared with the holder index digest). */
|
|
80
|
+
export function parseChatParentPin(v, what) {
|
|
81
|
+
if (!isRec(v) || Object.keys(v).length !== PIN_FIELDS.length || !PIN_FIELDS.every((k) => k in v))
|
|
82
|
+
throw new EpEnvelopeError("failed-precondition", `${what} is not the closed {actor, lifecycleUid, headRevision, rowDigest} pin`);
|
|
83
|
+
if (v.actor !== "cli" || typeof v.lifecycleUid !== "string" || typeof v.rowDigest !== "string" || !HEX64.test(v.rowDigest) ||
|
|
84
|
+
typeof v.headRevision !== "number" || !Number.isSafeInteger(v.headRevision) || v.headRevision < 1)
|
|
85
|
+
throw new EpEnvelopeError("failed-precondition", `${what} does not validate`);
|
|
86
|
+
try {
|
|
87
|
+
assertLifecycleToken(v.lifecycleUid);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
throw new EpEnvelopeError("failed-precondition", `${what} carries a malformed lifecycleUid`);
|
|
91
|
+
}
|
|
92
|
+
return { actor: "cli", lifecycleUid: v.lifecycleUid, headRevision: v.headRevision, rowDigest: v.rowDigest };
|
|
93
|
+
}
|
|
94
|
+
function sessionsDir(dir) {
|
|
95
|
+
return join(dir, CHAT_SESSIONS_DIR);
|
|
96
|
+
}
|
|
97
|
+
/** The row's filename is its principal dot-form; both tokens are grammar-asserted first. */
|
|
98
|
+
export function chatSessionRowFilename(owner, actor) {
|
|
99
|
+
assertDerivedOwnerToken(owner);
|
|
100
|
+
assertChatActor(actor);
|
|
101
|
+
return `${owner}.${actor}.json`;
|
|
102
|
+
}
|
|
103
|
+
function chatRowPath(dir, owner, actor) {
|
|
104
|
+
return join(sessionsDir(dir), chatSessionRowFilename(owner, actor));
|
|
105
|
+
}
|
|
106
|
+
/** The row-space directory, or undefined ONLY when nothing at all exists at its path. `lstat`
|
|
107
|
+
* (never `existsSync`, which follows links and reads a dangling symlink as absent) decides: ENOENT
|
|
108
|
+
* alone is absence; a symlink (dangling or not), a non-directory, or any other stat failure
|
|
109
|
+
* refuses, so a planted link can never make a present row read as missing. */
|
|
110
|
+
function assertSessionsDirectory(dir) {
|
|
111
|
+
const path = sessionsDir(dir);
|
|
112
|
+
let stat;
|
|
113
|
+
try {
|
|
114
|
+
stat = lstatSync(path);
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
if (e.code === "ENOENT")
|
|
118
|
+
return undefined;
|
|
119
|
+
throw new EpEnvelopeError("failed-precondition", `${path}: the chat-session row space cannot be inspected (${e.message}); an unreadable authority directory never reads as empty`);
|
|
120
|
+
}
|
|
121
|
+
if (stat.isSymbolicLink() || !stat.isDirectory())
|
|
122
|
+
throw new EpEnvelopeError("failed-precondition", `${path}: the chat-session row space must be a real directory, not a symlink or non-directory`);
|
|
123
|
+
return path;
|
|
124
|
+
}
|
|
125
|
+
/** Validate parsed JSON against the closed contract. Exported for the reader smoke; never a
|
|
126
|
+
* substitute for {@link readChatSessionRow}, which also binds the file name. */
|
|
127
|
+
export function parseChatSessionRecord(raw, path) {
|
|
128
|
+
if (!isRec(raw))
|
|
129
|
+
refuse(path, "is not an object");
|
|
130
|
+
if (raw.ver !== CHAT_ROW_VER)
|
|
131
|
+
refuse(path, `has unknown version ${String(raw.ver)}`);
|
|
132
|
+
const keys = Object.keys(raw);
|
|
133
|
+
try {
|
|
134
|
+
assertDerivedOwnerToken(raw.owner);
|
|
135
|
+
assertChatActor(raw.actor);
|
|
136
|
+
assertLifecycleToken(raw.lifecycleUid);
|
|
137
|
+
assertHolderHash(raw.holderHash);
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
refuse(path, `has a malformed identity (${e.message})`);
|
|
141
|
+
}
|
|
142
|
+
if (!epochMs(raw.expiresAt))
|
|
143
|
+
refuse(path, "has a malformed expiresAt");
|
|
144
|
+
// Tombstone form: exactly its closed set, nothing else.
|
|
145
|
+
if (!("parentPin" in raw) && !("allowSubscribe" in raw)) {
|
|
146
|
+
if (keys.length !== TOMBSTONE_FIELDS.length || !TOMBSTONE_FIELDS.every((k) => keys.includes(k)))
|
|
147
|
+
refuse(path, `tombstone fields ${JSON.stringify(keys.sort())} are not the closed tombstone set`);
|
|
148
|
+
if (raw.state !== "retired" || !epochMs(raw.retiredAt))
|
|
149
|
+
refuse(path, "tombstone is not a retired record");
|
|
150
|
+
return { form: "tombstone", row: raw };
|
|
151
|
+
}
|
|
152
|
+
for (const k of keys)
|
|
153
|
+
if (!ROW_FIELDS.has(k))
|
|
154
|
+
refuse(path, `carries the unknown field "${k}"`);
|
|
155
|
+
for (const k of ROW_REQUIRED)
|
|
156
|
+
if (!(k in raw))
|
|
157
|
+
refuse(path, `is missing "${k}"`);
|
|
158
|
+
if (!Array.isArray(raw.scope) || raw.scope.length !== 0)
|
|
159
|
+
refuse(path, "scope must be []");
|
|
160
|
+
try {
|
|
161
|
+
assertChatList(raw.allowSubscribe, "allowSubscribe");
|
|
162
|
+
assertChatList(raw.allowPublish, "allowPublish");
|
|
163
|
+
}
|
|
164
|
+
catch (e) {
|
|
165
|
+
refuse(path, e.message);
|
|
166
|
+
}
|
|
167
|
+
if (raw.label !== undefined && (typeof raw.label !== "string" || raw.label.length > CHAT_LABEL_MAX))
|
|
168
|
+
refuse(path, "label is malformed");
|
|
169
|
+
if (!epochMs(raw.admittedAt) || raw.expiresAt <= raw.admittedAt || raw.expiresAt - raw.admittedAt > CHAT_SESSION_MAX_TTL_MS)
|
|
170
|
+
refuse(path, "admittedAt/expiresAt do not form a bounded session (<= 8 h)");
|
|
171
|
+
try {
|
|
172
|
+
parseChatParentPin(raw.parentPin, "parentPin");
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
refuse(path, e.message);
|
|
176
|
+
}
|
|
177
|
+
if (raw.state !== "pending" && raw.state !== "active" && raw.state !== "retired")
|
|
178
|
+
refuse(path, `has unknown state ${String(raw.state)}`);
|
|
179
|
+
if (raw.state === "retired") {
|
|
180
|
+
if (!epochMs(raw.retiredAt) || typeof raw.retireOutcome !== "string" || !RETIRE_OUTCOMES.has(raw.retireOutcome))
|
|
181
|
+
refuse(path, "is retired without retiredAt and a recorded outcome");
|
|
182
|
+
}
|
|
183
|
+
else if (raw.retiredAt !== undefined || raw.retireOutcome !== undefined) {
|
|
184
|
+
refuse(path, `is ${raw.state} but carries retirement fields`);
|
|
185
|
+
}
|
|
186
|
+
const { ver: _ver, ...row } = raw;
|
|
187
|
+
return { form: "row", row: row };
|
|
188
|
+
}
|
|
189
|
+
/** The CLOSED reader. Fail-closed on every unreadable, unknown-version, unknown-
|
|
190
|
+
* field, symlinked or key-mismatched file. Undefined only for true absence. */
|
|
191
|
+
export function readChatSessionRow(dir, owner, actor) {
|
|
192
|
+
const path = chatRowPath(dir, owner, actor);
|
|
193
|
+
if (!assertSessionsDirectory(dir))
|
|
194
|
+
return undefined;
|
|
195
|
+
let present;
|
|
196
|
+
try {
|
|
197
|
+
lstatSync(path);
|
|
198
|
+
present = true;
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
if (e.code !== "ENOENT")
|
|
202
|
+
throw e;
|
|
203
|
+
present = false;
|
|
204
|
+
}
|
|
205
|
+
if (!present)
|
|
206
|
+
return undefined;
|
|
207
|
+
let raw;
|
|
208
|
+
let fd;
|
|
209
|
+
try {
|
|
210
|
+
if (lstatSync(path).isSymbolicLink())
|
|
211
|
+
throw new Error("must be a regular non-symlink file");
|
|
212
|
+
fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
213
|
+
if (!fstatSync(fd).isFile())
|
|
214
|
+
throw new Error("must be a regular non-symlink file");
|
|
215
|
+
raw = JSON.parse(readFileSync(fd, "utf8"));
|
|
216
|
+
}
|
|
217
|
+
catch (e) {
|
|
218
|
+
refuse(path, `is unreadable (${e instanceof Error ? e.message : String(e)})`);
|
|
219
|
+
}
|
|
220
|
+
finally {
|
|
221
|
+
if (fd !== undefined)
|
|
222
|
+
closeSync(fd);
|
|
223
|
+
}
|
|
224
|
+
const rec = parseChatSessionRecord(raw, path);
|
|
225
|
+
if (rec.row.owner !== owner || rec.row.actor !== actor)
|
|
226
|
+
refuse(path, `names "${rec.row.owner}.${rec.row.actor}", not "${owner}.${actor}"`);
|
|
227
|
+
return rec;
|
|
228
|
+
}
|
|
229
|
+
/** Reader isolation: is ANY entry present at this principal in the chat row space? A
|
|
230
|
+
* present-but-unreadable entry counts as present, so a corrupt chat row can never let the alias
|
|
231
|
+
* be read as an interactive or managed grant. */
|
|
232
|
+
export function chatSessionAliasPresent(dir, owner, actor) {
|
|
233
|
+
if (!CHAT_ACTOR.test(actor)) {
|
|
234
|
+
// Non-chat aliases can never name a chat row file (the filename grammar requires the prefix).
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
if (!assertSessionsDirectory(dir))
|
|
238
|
+
return false;
|
|
239
|
+
try {
|
|
240
|
+
lstatSync(chatRowPath(dir, owner, actor));
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
catch (e) {
|
|
244
|
+
if (e.code === "ENOENT")
|
|
245
|
+
return false;
|
|
246
|
+
throw e;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
function serialize(rec) {
|
|
250
|
+
return JSON.stringify({ ver: CHAT_ROW_VER, ...rec }, null, 2);
|
|
251
|
+
}
|
|
252
|
+
/** a5: create the `pending` row, create-only. An existing file is returned for the caller's own
|
|
253
|
+
* identity comparison (a resumed admission at the same UID); it is never overwritten. */
|
|
254
|
+
export function createPendingChatSessionRow(dir, row) {
|
|
255
|
+
if (row.state !== "pending")
|
|
256
|
+
throw new EpEnvelopeError("internal", "a chat-session row is born pending");
|
|
257
|
+
const path = chatRowPath(dir, row.owner, row.actor);
|
|
258
|
+
parseChatSessionRecord({ ver: CHAT_ROW_VER, ...row }, path);
|
|
259
|
+
mkSecretDir(dir);
|
|
260
|
+
mkSecretDir(sessionsDir(dir));
|
|
261
|
+
try {
|
|
262
|
+
writeSecretFileCreateOnly(path, serialize(row));
|
|
263
|
+
return { created: true };
|
|
264
|
+
}
|
|
265
|
+
catch (e) {
|
|
266
|
+
if (e.code !== "EEXIST")
|
|
267
|
+
throw e;
|
|
268
|
+
}
|
|
269
|
+
const existing = readChatSessionRow(dir, row.owner, row.actor);
|
|
270
|
+
if (!existing)
|
|
271
|
+
throw new EpEnvelopeError("internal", `${path}: create reported an existing row that a read cannot find`);
|
|
272
|
+
return { created: false, existing };
|
|
273
|
+
}
|
|
274
|
+
const NEXT = {
|
|
275
|
+
pending: new Set(["active", "retired"]),
|
|
276
|
+
active: new Set(["retired"]),
|
|
277
|
+
retired: new Set(),
|
|
278
|
+
};
|
|
279
|
+
/**
|
|
280
|
+
* Move a full row forward: `pending → active`, `pending → retired` or `active → retired`. Never
|
|
281
|
+
* backwards. The caller names the UID it expects (so a write can never land on another
|
|
282
|
+
* incarnation's row) and the state it observed. An already-retired row is returned unchanged (the
|
|
283
|
+
* same-UID terminal is idempotent). Atomic whole-file replace, then read back.
|
|
284
|
+
*/
|
|
285
|
+
export function advanceChatSessionRow(dir, key, to) {
|
|
286
|
+
const path = chatRowPath(dir, key.owner, key.actor);
|
|
287
|
+
const current = readChatSessionRow(dir, key.owner, key.actor);
|
|
288
|
+
if (!current)
|
|
289
|
+
throw new EpEnvelopeError("failed-precondition", `${path}: no chat-session row to advance`);
|
|
290
|
+
if (current.row.lifecycleUid !== key.lifecycleUid)
|
|
291
|
+
throw new EpEnvelopeError("failed-precondition", `${path}: the row is at lifecycle ${current.row.lifecycleUid}, not ${key.lifecycleUid}`);
|
|
292
|
+
if (current.row.state === "retired") {
|
|
293
|
+
if (to.state === "retired")
|
|
294
|
+
return current;
|
|
295
|
+
throw new EpEnvelopeError("failed-precondition", `${path}: a retired chat session never becomes ${to.state}`);
|
|
296
|
+
}
|
|
297
|
+
if (current.form !== "row")
|
|
298
|
+
throw new EpEnvelopeError("internal", `${path}: a non-retired tombstone is impossible`);
|
|
299
|
+
if (!NEXT[current.row.state].has(to.state))
|
|
300
|
+
throw new EpEnvelopeError("failed-precondition", `${path}: ${current.row.state} -> ${to.state} is not a chat-session transition`);
|
|
301
|
+
const next = to.state === "active"
|
|
302
|
+
? { ...current.row, state: "active" }
|
|
303
|
+
: { ...current.row, state: "retired", retiredAt: to.retiredAt, retireOutcome: to.retireOutcome };
|
|
304
|
+
replaceWhole(path, next);
|
|
305
|
+
const back = readChatSessionRow(dir, key.owner, key.actor);
|
|
306
|
+
if (!back || back.row.state !== to.state || back.row.lifecycleUid !== key.lifecycleUid)
|
|
307
|
+
throw new EpEnvelopeError("unavailable", `${path}: the ${to.state} write did not read back (a concurrent writer moved the row); re-read and re-decide`);
|
|
308
|
+
return back;
|
|
309
|
+
}
|
|
310
|
+
/** Retention: replace a RETIRED row's body with its permanent tombstone. The caller
|
|
311
|
+
* has already re-run the UID-exact deprovision. Idempotent on an existing tombstone. */
|
|
312
|
+
export function compactChatSessionRow(dir, key) {
|
|
313
|
+
const path = chatRowPath(dir, key.owner, key.actor);
|
|
314
|
+
const current = readChatSessionRow(dir, key.owner, key.actor);
|
|
315
|
+
if (!current)
|
|
316
|
+
throw new EpEnvelopeError("failed-precondition", `${path}: no chat-session row to compact`);
|
|
317
|
+
if (current.row.lifecycleUid !== key.lifecycleUid)
|
|
318
|
+
throw new EpEnvelopeError("failed-precondition", `${path}: the row is at lifecycle ${current.row.lifecycleUid}, not ${key.lifecycleUid}`);
|
|
319
|
+
if (current.form === "tombstone")
|
|
320
|
+
return current.row;
|
|
321
|
+
if (current.row.state !== "retired" || current.row.retiredAt === undefined)
|
|
322
|
+
throw new EpEnvelopeError("failed-precondition", `${path}: only a retired chat session is compacted`);
|
|
323
|
+
const tomb = {
|
|
324
|
+
owner: current.row.owner, actor: current.row.actor, lifecycleUid: current.row.lifecycleUid,
|
|
325
|
+
holderHash: current.row.holderHash, state: "retired", retiredAt: current.row.retiredAt, expiresAt: current.row.expiresAt,
|
|
326
|
+
};
|
|
327
|
+
replaceWhole(path, tomb);
|
|
328
|
+
return tomb;
|
|
329
|
+
}
|
|
330
|
+
function replaceWhole(path, rec) {
|
|
331
|
+
const tmp = `${path}.${process.pid}.tmp`;
|
|
332
|
+
writeSecretFile(tmp, serialize(rec));
|
|
333
|
+
renameSync(tmp, path);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Bounded, ordered discovery page for the sweep: file names strictly after `after`,
|
|
337
|
+
* at most `limit`. The names are sorted so the cursor's `rowName` is a stable position. Only names
|
|
338
|
+
* are returned; each row read is the caller's counted read.
|
|
339
|
+
*/
|
|
340
|
+
export function listChatSessionRowNames(dir, after, limit) {
|
|
341
|
+
if (!Number.isSafeInteger(limit) || limit < 1)
|
|
342
|
+
throw new EpEnvelopeError("bad-request", "limit must be a positive integer");
|
|
343
|
+
const d = assertSessionsDirectory(dir);
|
|
344
|
+
if (!d)
|
|
345
|
+
return [];
|
|
346
|
+
return readdirSync(d)
|
|
347
|
+
.filter((f) => f.endsWith(".json") && f > after)
|
|
348
|
+
.sort()
|
|
349
|
+
.slice(0, limit);
|
|
350
|
+
}
|
|
351
|
+
/** Parse a row filename back to its principal; anything else in the space refuses. */
|
|
352
|
+
export function parseChatSessionRowFilename(name) {
|
|
353
|
+
const m = /^(u_[a-z2-7]{26})\.(chat_[a-z2-7]{26})\.json$/.exec(name);
|
|
354
|
+
if (!m)
|
|
355
|
+
throw new EpEnvelopeError("failed-precondition", `${CHAT_SESSIONS_DIR}/${name} is not a chat-session row name`);
|
|
356
|
+
return { owner: m[1], actor: m[2] };
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=chat-session-row.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-session-row.js","sourceRoot":"","sources":["../src/chat-session-row.ts"],"names":[],"mappings":"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"}
|