@cello-protocol/daemon 0.0.44 → 0.0.46
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/agent-id-migration.d.ts +61 -0
- package/dist/agent-id-migration.d.ts.map +1 -0
- package/dist/agent-id-migration.js +331 -0
- package/dist/agent-id-migration.js.map +1 -0
- package/dist/agent-settings-keys.d.ts +52 -0
- package/dist/agent-settings-keys.d.ts.map +1 -0
- package/dist/agent-settings-keys.js +96 -0
- package/dist/agent-settings-keys.js.map +1 -0
- package/dist/contacts-tier-migration.d.ts +90 -0
- package/dist/contacts-tier-migration.d.ts.map +1 -0
- package/dist/contacts-tier-migration.js +149 -0
- package/dist/contacts-tier-migration.js.map +1 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +209 -31
- package/dist/daemon.js.map +1 -1
- package/dist/retry-queue.d.ts +9 -7
- package/dist/retry-queue.d.ts.map +1 -1
- package/dist/retry-queue.js +81 -48
- package/dist/retry-queue.js.map +1 -1
- package/dist/session-node-manager.d.ts +130 -14
- package/dist/session-node-manager.d.ts.map +1 -1
- package/dist/session-node-manager.js +539 -120
- package/dist/session-node-manager.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CELLO Daemon — contacts tier metadata (DOD-TIER-1, address-book Step 1).
|
|
3
|
+
*
|
|
4
|
+
* `contacts` was re-keyed to the stable `agent_id` in daemon@0.0.45 (DOD-AGENT-ID-JOINKEY-1). This
|
|
5
|
+
* module lands the address-book's per-contact metadata ON that key: a reachability `tier`, the
|
|
6
|
+
* `provenance` of the relationship, the last self-declared name a peer offered (for Option-C rename
|
|
7
|
+
* detection, Step 3), and a per-contact `away_message` (Step 4). All four are pure ADD COLUMN — no
|
|
8
|
+
* table rebuild, no PK change — so, unlike the join-key migration, this one is simple and idempotent
|
|
9
|
+
* and never has to appear in that migration's pinned DDL. It runs AFTER `migrateSessionTablesToAgentId`.
|
|
10
|
+
*
|
|
11
|
+
* Design source: docs/planning/user-stories/m8c/2026-07-10_contact-address-book-design.md (§1).
|
|
12
|
+
*/
|
|
13
|
+
import type { DaemonDatabase } from "./sqlcipher-db.js";
|
|
14
|
+
import type { Logger } from "./types.js";
|
|
15
|
+
/**
|
|
16
|
+
* The five reachability tiers, ordered so `>=` is meaningful (blocked < unknown < known < whitelisted
|
|
17
|
+
* < vip). Stored as the INTEGER `contacts.tier`. This const map is the SINGLE source of the numbers;
|
|
18
|
+
* no bare tier integer may appear at a call site (DOD-TIER-1 AC2).
|
|
19
|
+
*
|
|
20
|
+
* BLOCKED is a real, meaningful ZERO — see `normalizeTier` for why that matters.
|
|
21
|
+
*/
|
|
22
|
+
export declare const TIER: Readonly<{
|
|
23
|
+
readonly BLOCKED: 0;
|
|
24
|
+
readonly UNKNOWN: 1;
|
|
25
|
+
readonly KNOWN: 2;
|
|
26
|
+
readonly WHITELISTED: 3;
|
|
27
|
+
readonly VIP: 4;
|
|
28
|
+
}>;
|
|
29
|
+
export type TierName = keyof typeof TIER;
|
|
30
|
+
export type TierValue = (typeof TIER)[TierName];
|
|
31
|
+
/** True iff `n` is exactly one of the five defined tier integers (0..4). The validation gate for
|
|
32
|
+
* `cello_contact_set_tier` (Step 3) — an unknown value is refused, never coerced. */
|
|
33
|
+
export declare function isKnownTierValue(n: number): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* The read-side default, and the single most safety-critical function in this unit.
|
|
36
|
+
*
|
|
37
|
+
* A contact's effective tier is UNKNOWN when there is NO row (undefined) OR when the row's `tier`
|
|
38
|
+
* column is NULL (a row that predates a tier being set, or a stray never-stamped row). Both collapse
|
|
39
|
+
* to UNKNOWN — the tighter default: a caller must never accidentally treat an unresolved contact as
|
|
40
|
+
* reachable.
|
|
41
|
+
*
|
|
42
|
+
* It is written with EXPLICIT null/undefined checks, never `tier || UNKNOWN`, for two reasons that
|
|
43
|
+
* are both live bugs otherwise:
|
|
44
|
+
* - `0 || 1 === 1`: a `|| UNKNOWN` would swallow BLOCKED(0) and silently un-block a blocked contact.
|
|
45
|
+
* - `null >= 0 === true`: a NULL reaching a `>=` bound check reads as "not blocked", and a NULL
|
|
46
|
+
* reaching a `grid[tier]` lookup is `grid[null]` → undefined → crash. Normalizing NULL→UNKNOWN
|
|
47
|
+
* here keeps every downstream comparison and lookup total.
|
|
48
|
+
*/
|
|
49
|
+
export declare function normalizeTier(tier: number | null | undefined): number;
|
|
50
|
+
/** DOD-TIER-2: the abuse bounds for one tier. INV-TIER-BOUND — every field is FINITE (no tier is
|
|
51
|
+
* unbounded; `vip` is a large but real number, never Infinity). Step 4 lets settings OVERRIDE these
|
|
52
|
+
* defaults, but a setting may only raise/lower within finite bounds, never remove one. */
|
|
53
|
+
export interface TierBound {
|
|
54
|
+
/** Max concurrent (active|interrupted) sessions this agent will hold from ONE sender at this tier. */
|
|
55
|
+
readonly maxSessionsPerSender: number;
|
|
56
|
+
/** Max cumulative RECEIVED bytes for a single session at this tier (anti-drip-feed). */
|
|
57
|
+
readonly maxBytesPerSession: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The hardcoded default bounds grid (DOD-TIER-2). One named map — the SINGLE source; call sites
|
|
61
|
+
* reference it via `tierBoundsFor`, never inline a number. Step 4 (DOD-TIER-BOUNDS-SETTINGS) makes
|
|
62
|
+
* these overridable per agent; until then they are the policy.
|
|
63
|
+
*
|
|
64
|
+
* INV-TIER-BOUND: a HIGHER tier only RAISES a bound — no tier removes one. `vip` is 50 sessions / 2 GiB,
|
|
65
|
+
* deliberately finite. `blocked` is 0/0, which is what makes DOD-TIER-3 fall out for free: a 0 session
|
|
66
|
+
* cap refuses a blocked sender through the SAME per-sender-cap path an over-cap unknown takes, with no
|
|
67
|
+
* separate branch and therefore no distinguishing oracle.
|
|
68
|
+
*/
|
|
69
|
+
export declare const DEFAULT_TIER_BOUNDS: Readonly<Record<number, TierBound>>;
|
|
70
|
+
/** The bounds for a tier, TOTAL: any input is normalized to a defined tier first, so the return is
|
|
71
|
+
* always a real `TierBound` — a corrupt/out-of-range tier gets UNKNOWN's bounds, never `undefined`
|
|
72
|
+
* (the `grid[99]` crash the whole tier design guards against). */
|
|
73
|
+
export declare function tierBoundsFor(tier: number | null | undefined): TierBound;
|
|
74
|
+
/**
|
|
75
|
+
* Idempotently add the tier-metadata columns to `contacts` and grandfather existing contacts.
|
|
76
|
+
*
|
|
77
|
+
* SQLite has no `ADD COLUMN IF NOT EXISTS`, so each ALTER is PRAGMA-guarded. Crucially the columns
|
|
78
|
+
* are added with NO DEFAULT: a `DEFAULT` would give every existing row a value the instant the column
|
|
79
|
+
* is created, so the grandfather backfill (`UPDATE … WHERE tier IS NULL`) would then match NOTHING —
|
|
80
|
+
* every auto-accepting contact would silently drop to UNKNOWN. No default → existing rows read NULL →
|
|
81
|
+
* the explicit backfill promotes them to WHITELISTED, preserving today's binary-whitelist behaviour
|
|
82
|
+
* (design §1). Silently revoking access people already rely on is a worse failure than grandfathering
|
|
83
|
+
* a permissive default for a handful of contacts they can list and demote at leisure.
|
|
84
|
+
*
|
|
85
|
+
* The grandfather is ONE-TIME: it runs only in the invocation that first adds the `tier` column. A
|
|
86
|
+
* NULL that appears later (a stray un-stamped row) is NOT promoted — it is read as UNKNOWN by
|
|
87
|
+
* `normalizeTier`, the tighter default. The promotion is tied to the column's birth, not to NULL-ness.
|
|
88
|
+
*/
|
|
89
|
+
export declare function migrateContactsAddTierMetadata(db: DaemonDatabase, logger: Logger): void;
|
|
90
|
+
//# sourceMappingURL=contacts-tier-migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contacts-tier-migration.d.ts","sourceRoot":"","sources":["../src/contacts-tier-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,IAAI;;;;;;EAMN,CAAC;AAEZ,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,IAAI,CAAC;AACzC,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AAIhD;sFACsF;AACtF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAQrE;AAED;;2FAE2F;AAC3F,MAAM,WAAW,SAAS;IACxB,sGAAsG;IACtG,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,wFAAwF;IACxF,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAMlE,CAAC;AAEH;;mEAEmE;AACnE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,CAExE;AAeD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA8CvF"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CELLO Daemon — contacts tier metadata (DOD-TIER-1, address-book Step 1).
|
|
3
|
+
*
|
|
4
|
+
* `contacts` was re-keyed to the stable `agent_id` in daemon@0.0.45 (DOD-AGENT-ID-JOINKEY-1). This
|
|
5
|
+
* module lands the address-book's per-contact metadata ON that key: a reachability `tier`, the
|
|
6
|
+
* `provenance` of the relationship, the last self-declared name a peer offered (for Option-C rename
|
|
7
|
+
* detection, Step 3), and a per-contact `away_message` (Step 4). All four are pure ADD COLUMN — no
|
|
8
|
+
* table rebuild, no PK change — so, unlike the join-key migration, this one is simple and idempotent
|
|
9
|
+
* and never has to appear in that migration's pinned DDL. It runs AFTER `migrateSessionTablesToAgentId`.
|
|
10
|
+
*
|
|
11
|
+
* Design source: docs/planning/user-stories/m8c/2026-07-10_contact-address-book-design.md (§1).
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* The five reachability tiers, ordered so `>=` is meaningful (blocked < unknown < known < whitelisted
|
|
15
|
+
* < vip). Stored as the INTEGER `contacts.tier`. This const map is the SINGLE source of the numbers;
|
|
16
|
+
* no bare tier integer may appear at a call site (DOD-TIER-1 AC2).
|
|
17
|
+
*
|
|
18
|
+
* BLOCKED is a real, meaningful ZERO — see `normalizeTier` for why that matters.
|
|
19
|
+
*/
|
|
20
|
+
export const TIER = Object.freeze({
|
|
21
|
+
BLOCKED: 0,
|
|
22
|
+
UNKNOWN: 1,
|
|
23
|
+
KNOWN: 2,
|
|
24
|
+
WHITELISTED: 3,
|
|
25
|
+
VIP: 4,
|
|
26
|
+
});
|
|
27
|
+
const TIER_VALUES = Object.freeze(Object.values(TIER));
|
|
28
|
+
/** True iff `n` is exactly one of the five defined tier integers (0..4). The validation gate for
|
|
29
|
+
* `cello_contact_set_tier` (Step 3) — an unknown value is refused, never coerced. */
|
|
30
|
+
export function isKnownTierValue(n) {
|
|
31
|
+
return Number.isInteger(n) && TIER_VALUES.includes(n);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The read-side default, and the single most safety-critical function in this unit.
|
|
35
|
+
*
|
|
36
|
+
* A contact's effective tier is UNKNOWN when there is NO row (undefined) OR when the row's `tier`
|
|
37
|
+
* column is NULL (a row that predates a tier being set, or a stray never-stamped row). Both collapse
|
|
38
|
+
* to UNKNOWN — the tighter default: a caller must never accidentally treat an unresolved contact as
|
|
39
|
+
* reachable.
|
|
40
|
+
*
|
|
41
|
+
* It is written with EXPLICIT null/undefined checks, never `tier || UNKNOWN`, for two reasons that
|
|
42
|
+
* are both live bugs otherwise:
|
|
43
|
+
* - `0 || 1 === 1`: a `|| UNKNOWN` would swallow BLOCKED(0) and silently un-block a blocked contact.
|
|
44
|
+
* - `null >= 0 === true`: a NULL reaching a `>=` bound check reads as "not blocked", and a NULL
|
|
45
|
+
* reaching a `grid[tier]` lookup is `grid[null]` → undefined → crash. Normalizing NULL→UNKNOWN
|
|
46
|
+
* here keeps every downstream comparison and lookup total.
|
|
47
|
+
*/
|
|
48
|
+
export function normalizeTier(tier) {
|
|
49
|
+
if (tier === null || tier === undefined)
|
|
50
|
+
return TIER.UNKNOWN;
|
|
51
|
+
// TOTAL over ALL inputs: a stored value that is not one of the five defined tiers (a corrupt or
|
|
52
|
+
// future-version row) also collapses to UNKNOWN, so `getTier` is guaranteed to return a value in
|
|
53
|
+
// 0..4 and every downstream `grid[tier]` lookup / `>=` comparison is total. Without this, a corrupt
|
|
54
|
+
// `tier = 99` would sail through and become the `grid[99] → undefined` crash the bound grid fears.
|
|
55
|
+
if (!isKnownTierValue(tier))
|
|
56
|
+
return TIER.UNKNOWN;
|
|
57
|
+
return tier;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The hardcoded default bounds grid (DOD-TIER-2). One named map — the SINGLE source; call sites
|
|
61
|
+
* reference it via `tierBoundsFor`, never inline a number. Step 4 (DOD-TIER-BOUNDS-SETTINGS) makes
|
|
62
|
+
* these overridable per agent; until then they are the policy.
|
|
63
|
+
*
|
|
64
|
+
* INV-TIER-BOUND: a HIGHER tier only RAISES a bound — no tier removes one. `vip` is 50 sessions / 2 GiB,
|
|
65
|
+
* deliberately finite. `blocked` is 0/0, which is what makes DOD-TIER-3 fall out for free: a 0 session
|
|
66
|
+
* cap refuses a blocked sender through the SAME per-sender-cap path an over-cap unknown takes, with no
|
|
67
|
+
* separate branch and therefore no distinguishing oracle.
|
|
68
|
+
*/
|
|
69
|
+
export const DEFAULT_TIER_BOUNDS = Object.freeze({
|
|
70
|
+
[TIER.BLOCKED]: { maxSessionsPerSender: 0, maxBytesPerSession: 0 },
|
|
71
|
+
[TIER.UNKNOWN]: { maxSessionsPerSender: 3, maxBytesPerSession: 25 * 1024 * 1024 },
|
|
72
|
+
[TIER.KNOWN]: { maxSessionsPerSender: 5, maxBytesPerSession: 100 * 1024 * 1024 },
|
|
73
|
+
[TIER.WHITELISTED]: { maxSessionsPerSender: 20, maxBytesPerSession: 500 * 1024 * 1024 },
|
|
74
|
+
[TIER.VIP]: { maxSessionsPerSender: 50, maxBytesPerSession: 2 * 1024 * 1024 * 1024 },
|
|
75
|
+
});
|
|
76
|
+
/** The bounds for a tier, TOTAL: any input is normalized to a defined tier first, so the return is
|
|
77
|
+
* always a real `TierBound` — a corrupt/out-of-range tier gets UNKNOWN's bounds, never `undefined`
|
|
78
|
+
* (the `grid[99]` crash the whole tier design guards against). */
|
|
79
|
+
export function tierBoundsFor(tier) {
|
|
80
|
+
return DEFAULT_TIER_BOUNDS[normalizeTier(tier)];
|
|
81
|
+
}
|
|
82
|
+
const TIER_METADATA_COLUMNS = [
|
|
83
|
+
{ name: "tier", ddl: "tier INTEGER" },
|
|
84
|
+
{ name: "provenance", ddl: "provenance TEXT" },
|
|
85
|
+
{ name: "last_offered_moniker", ddl: "last_offered_moniker TEXT" },
|
|
86
|
+
{ name: "away_message", ddl: "away_message TEXT" },
|
|
87
|
+
];
|
|
88
|
+
/**
|
|
89
|
+
* Idempotently add the tier-metadata columns to `contacts` and grandfather existing contacts.
|
|
90
|
+
*
|
|
91
|
+
* SQLite has no `ADD COLUMN IF NOT EXISTS`, so each ALTER is PRAGMA-guarded. Crucially the columns
|
|
92
|
+
* are added with NO DEFAULT: a `DEFAULT` would give every existing row a value the instant the column
|
|
93
|
+
* is created, so the grandfather backfill (`UPDATE … WHERE tier IS NULL`) would then match NOTHING —
|
|
94
|
+
* every auto-accepting contact would silently drop to UNKNOWN. No default → existing rows read NULL →
|
|
95
|
+
* the explicit backfill promotes them to WHITELISTED, preserving today's binary-whitelist behaviour
|
|
96
|
+
* (design §1). Silently revoking access people already rely on is a worse failure than grandfathering
|
|
97
|
+
* a permissive default for a handful of contacts they can list and demote at leisure.
|
|
98
|
+
*
|
|
99
|
+
* The grandfather is ONE-TIME: it runs only in the invocation that first adds the `tier` column. A
|
|
100
|
+
* NULL that appears later (a stray un-stamped row) is NOT promoted — it is read as UNKNOWN by
|
|
101
|
+
* `normalizeTier`, the tighter default. The promotion is tied to the column's birth, not to NULL-ness.
|
|
102
|
+
*/
|
|
103
|
+
export function migrateContactsAddTierMetadata(db, logger) {
|
|
104
|
+
const existing = new Set(db.prepare("PRAGMA table_info(contacts)").all().map((c) => c.name));
|
|
105
|
+
const toAdd = TIER_METADATA_COLUMNS.filter((c) => !existing.has(c.name));
|
|
106
|
+
if (toAdd.length === 0)
|
|
107
|
+
return; // idempotent: every column already present → nothing to do
|
|
108
|
+
// The ADD COLUMNs and the grandfather backfill MUST commit atomically, in ONE transaction (SQLite
|
|
109
|
+
// DDL is transactional — the same reason the join-key migration uses one BEGIN…COMMIT). If a crash
|
|
110
|
+
// landed between the `tier` ALTER committing and the backfill, the next init would see the column
|
|
111
|
+
// exists, skip the one-time grandfather FOREVER, and silently demote every legacy contact to
|
|
112
|
+
// UNKNOWN — the exact "silently revoking access people already rely on" failure this file exists to
|
|
113
|
+
// avoid, with no log and no error. Wrapping both makes "column added" and "existing rows
|
|
114
|
+
// grandfathered" inseparable: a crash rolls back BOTH, and the clean re-run does the whole thing —
|
|
115
|
+
// which is what makes column-existence a VALID durability marker for the one-time gate.
|
|
116
|
+
const addsTier = toAdd.some((c) => c.name === "tier");
|
|
117
|
+
let grandfathered = 0;
|
|
118
|
+
db.exec("BEGIN");
|
|
119
|
+
try {
|
|
120
|
+
for (const col of toAdd)
|
|
121
|
+
db.exec(`ALTER TABLE contacts ADD COLUMN ${col.ddl}`);
|
|
122
|
+
// Grandfather EXISTING contacts to WHITELISTED — but ONLY on the migration that first adds `tier`
|
|
123
|
+
// (a one-time, column-birth event). A NULL written AFTER the column exists is never promoted here;
|
|
124
|
+
// it is a read-time UNKNOWN via normalizeTier, the tighter default.
|
|
125
|
+
if (addsTier) {
|
|
126
|
+
grandfathered = Number(db.prepare("UPDATE contacts SET tier = ? WHERE tier IS NULL").run(TIER.WHITELISTED).changes);
|
|
127
|
+
}
|
|
128
|
+
db.exec("COMMIT");
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
// SQLite may have already aborted the transaction; a failing ROLLBACK must not mask the real error.
|
|
132
|
+
try {
|
|
133
|
+
db.exec("ROLLBACK");
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
/* the failing statement may have already aborted the txn */
|
|
137
|
+
}
|
|
138
|
+
logger.error("contacts.tier.migration.failed", {
|
|
139
|
+
columns: toAdd.map((c) => c.name),
|
|
140
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
141
|
+
});
|
|
142
|
+
throw err;
|
|
143
|
+
}
|
|
144
|
+
logger.info("contacts.tier.columns.added", { columns: toAdd.map((c) => c.name) });
|
|
145
|
+
if (grandfathered > 0) {
|
|
146
|
+
logger.info("contacts.tier.grandfathered", { count: grandfathered, tier: TIER.WHITELISTED });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=contacts-tier-migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contacts-tier-migration.js","sourceRoot":"","sources":["../src/contacts-tier-migration.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EAQrB,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EAQrB,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAU/D,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAsB7G,OAAO,KAAK,EAAE,kBAAkB,EAA+C,MAAM,yBAAyB,CAAC;AAQ/G,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AA0InF,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,IAAI,oBAAoB,CAAC;IAClC;;;;OAIG;IACH,qBAAqB,IAAI,kBAAkB,CAAC;IAC5C;;;;;;;;OAQG;IACH,gBAAgB,IAAI,SAAS,GAAG,IAAI,CAAC;IACrC;;;;OAIG;IACH,oBAAoB,IAAI,kBAAkB,CAAC;IAC3C;;;OAGG;IACH,iBAAiB,IAAI,eAAe,CAAC;CACtC;AA2CD,eAAO,MAAM,sBAAsB,QAAsB,CAAC;AAE1D,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA64L7E"}
|