@cello-protocol/daemon 0.0.182 → 0.0.184
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-settings-keys.d.ts.map +1 -1
- package/dist/agent-settings-keys.js +18 -0
- package/dist/agent-settings-keys.js.map +1 -1
- package/dist/close-session-handler.d.ts.map +1 -1
- package/dist/close-session-handler.js +90 -16
- package/dist/close-session-handler.js.map +1 -1
- package/dist/consortium-bootstrap.d.ts.map +1 -1
- package/dist/consortium-bootstrap.js +117 -2
- package/dist/consortium-bootstrap.js.map +1 -1
- package/dist/content-encryption-status.d.ts +97 -0
- package/dist/content-encryption-status.d.ts.map +1 -0
- package/dist/content-encryption-status.js +122 -0
- package/dist/content-encryption-status.js.map +1 -0
- package/dist/content-park-client.d.ts +10 -0
- package/dist/content-park-client.d.ts.map +1 -1
- package/dist/content-park-client.js +84 -3
- package/dist/content-park-client.js.map +1 -1
- package/dist/content-park.d.ts.map +1 -1
- package/dist/content-park.js +184 -13
- package/dist/content-park.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +671 -67
- package/dist/daemon.js.map +1 -1
- package/dist/document-handlers.d.ts.map +1 -1
- package/dist/document-handlers.js +119 -0
- package/dist/document-handlers.js.map +1 -1
- package/dist/document-layer.d.ts +0 -2
- package/dist/document-layer.d.ts.map +1 -1
- package/dist/document-layer.js.map +1 -1
- package/dist/frame-values.d.ts.map +1 -1
- package/dist/frame-values.js +14 -0
- package/dist/frame-values.js.map +1 -1
- package/dist/inclusion-proof-handlers.d.ts +43 -0
- package/dist/inclusion-proof-handlers.d.ts.map +1 -0
- package/dist/inclusion-proof-handlers.js +565 -0
- package/dist/inclusion-proof-handlers.js.map +1 -0
- package/dist/inclusion-proof.d.ts +151 -0
- package/dist/inclusion-proof.d.ts.map +1 -0
- package/dist/inclusion-proof.js +228 -0
- package/dist/inclusion-proof.js.map +1 -0
- package/dist/initiate-session-handler.d.ts.map +1 -1
- package/dist/initiate-session-handler.js +34 -3
- package/dist/initiate-session-handler.js.map +1 -1
- package/dist/manifest-deps.d.ts +0 -11
- package/dist/manifest-deps.d.ts.map +1 -1
- package/dist/manifest-deps.js +28 -2
- package/dist/manifest-deps.js.map +1 -1
- package/dist/manifest-validity.d.ts +2 -0
- package/dist/manifest-validity.d.ts.map +1 -1
- package/dist/manifest-validity.js +1 -1
- package/dist/manifest-validity.js.map +1 -1
- package/dist/network-directory-node.d.ts +16 -0
- package/dist/network-directory-node.d.ts.map +1 -1
- package/dist/network-directory-node.js +40 -0
- package/dist/network-directory-node.js.map +1 -1
- package/dist/notification-handlers.d.ts.map +1 -1
- package/dist/notification-handlers.js +71 -2
- package/dist/notification-handlers.js.map +1 -1
- package/dist/outbound-sessions.d.ts +6 -0
- package/dist/outbound-sessions.d.ts.map +1 -1
- package/dist/outbound-sessions.js +50 -7
- package/dist/outbound-sessions.js.map +1 -1
- package/dist/park-envelope.d.ts +23 -0
- package/dist/park-envelope.d.ts.map +1 -1
- package/dist/park-envelope.js +76 -0
- package/dist/park-envelope.js.map +1 -1
- package/dist/register-handler.d.ts.map +1 -1
- package/dist/register-handler.js +76 -0
- package/dist/register-handler.js.map +1 -1
- package/dist/relay-only.d.ts +133 -0
- package/dist/relay-only.d.ts.map +1 -0
- package/dist/relay-only.js +183 -0
- package/dist/relay-only.js.map +1 -0
- package/dist/retry-queue.d.ts +26 -1
- package/dist/retry-queue.d.ts.map +1 -1
- package/dist/retry-queue.js +18 -1
- package/dist/retry-queue.js.map +1 -1
- package/dist/seal-coordinator.d.ts +51 -1
- package/dist/seal-coordinator.d.ts.map +1 -1
- package/dist/seal-coordinator.js +248 -1
- package/dist/seal-coordinator.js.map +1 -1
- package/dist/seal-escalation.d.ts.map +1 -1
- package/dist/seal-escalation.js +28 -0
- package/dist/seal-escalation.js.map +1 -1
- package/dist/seal-failure-store.d.ts.map +1 -1
- package/dist/seal-failure-store.js +5 -1
- package/dist/seal-failure-store.js.map +1 -1
- package/dist/sealed-leaf-set.d.ts +92 -0
- package/dist/sealed-leaf-set.d.ts.map +1 -0
- package/dist/sealed-leaf-set.js +129 -0
- package/dist/sealed-leaf-set.js.map +1 -0
- package/dist/session-ceremony.d.ts +27 -1
- package/dist/session-ceremony.d.ts.map +1 -1
- package/dist/session-ceremony.js +109 -7
- package/dist/session-ceremony.js.map +1 -1
- package/dist/session-content-handlers.d.ts +12 -0
- package/dist/session-content-handlers.d.ts.map +1 -1
- package/dist/session-content-handlers.js +39 -4
- package/dist/session-content-handlers.js.map +1 -1
- package/dist/session-node-manager.d.ts +387 -4
- package/dist/session-node-manager.d.ts.map +1 -1
- package/dist/session-node-manager.js +3529 -279
- package/dist/session-node-manager.js.map +1 -1
- package/dist/session-read-handlers.d.ts.map +1 -1
- package/dist/session-read-handlers.js +16 -1
- package/dist/session-read-handlers.js.map +1 -1
- package/dist/session-relay-client.d.ts +163 -1
- package/dist/session-relay-client.d.ts.map +1 -1
- package/dist/session-relay-client.js +540 -6
- package/dist/session-relay-client.js.map +1 -1
- package/dist/session-salt-agreement.d.ts +58 -4
- package/dist/session-salt-agreement.d.ts.map +1 -1
- package/dist/session-salt-agreement.js +110 -3
- package/dist/session-salt-agreement.js.map +1 -1
- package/dist/signal-submission.d.ts +11 -1
- package/dist/signal-submission.d.ts.map +1 -1
- package/dist/signal-submission.js.map +1 -1
- package/dist/signaling-connect.d.ts +18 -1
- package/dist/signaling-connect.d.ts.map +1 -1
- package/dist/signaling-connect.js +164 -1
- package/dist/signaling-connect.js.map +1 -1
- package/dist/submission-retry.d.ts +208 -0
- package/dist/submission-retry.d.ts.map +1 -0
- package/dist/submission-retry.js +505 -0
- package/dist/submission-retry.js.map +1 -0
- package/dist/types.d.ts +33 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vocabulary.d.ts +13 -3
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +14 -3
- package/dist/vocabulary.js.map +1 -1
- package/dist/wire-content-hash.d.ts +15 -3
- package/dist/wire-content-hash.d.ts.map +1 -1
- package/dist/wire-content-hash.js +15 -3
- package/dist/wire-content-hash.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Send failures worth retrying — the ones that are NOT a verdict on the submission.
|
|
3
|
+
*
|
|
4
|
+
* directory_unreachable / signaling_reconnecting / signaling_lost
|
|
5
|
+
* Nothing reached anybody. This is the case the unit exists for.
|
|
6
|
+
* submission_unsupported_by_node
|
|
7
|
+
* The node never decoded the frame. Nodes deploy independently per region, so the reconnect
|
|
8
|
+
* this rides may land on one that has the frame kind — which IS the failover case. It is not
|
|
9
|
+
* a decision about the submission; the node did not get far enough to make one.
|
|
10
|
+
* submission_write_timeout
|
|
11
|
+
* The transport handed the frame over and no ack came back. Storage is UNKNOWN, which is
|
|
12
|
+
* different from refused: re-sending is safe by the content-derived id, so the honest move is
|
|
13
|
+
* to try again rather than to report a failure the operator cannot resolve either.
|
|
14
|
+
*
|
|
15
|
+
* submission_refused_by_node
|
|
16
|
+
* The node decoded it, evaluated it and said no. A retry cannot change that answer, and a
|
|
17
|
+
* machine asking again is badgering a node that has already decided.
|
|
18
|
+
* submission_agent_unloaded
|
|
19
|
+
* Retry-path only, and terminal: nobody on this daemon can sign as the submitting agent any
|
|
20
|
+
* more, so no amount of waiting produces a sender.
|
|
21
|
+
*
|
|
22
|
+
* A `Record`, NOT a hand-written list, and that is the whole point (review §4). A list is a loop
|
|
23
|
+
* over what the author typed; adding a seventh member to `SubmissionSendFailure` left the old test
|
|
24
|
+
* green while the new member defaulted into "not retried" in silence. A total record fails to
|
|
25
|
+
* COMPILE until someone decides — and it lives here rather than in a test, because
|
|
26
|
+
* `core/daemon/tsconfig.json` excludes `src/__tests__`, so a compile-time pin there is never
|
|
27
|
+
* evaluated and asserts nothing (`signal-submission.ts` calls that "a hollow test wearing
|
|
28
|
+
* compile-time clothing").
|
|
29
|
+
*/
|
|
30
|
+
const RETRY_DECISION = {
|
|
31
|
+
directory_unreachable: true,
|
|
32
|
+
signaling_reconnecting: true,
|
|
33
|
+
signaling_lost: true,
|
|
34
|
+
submission_unsupported_by_node: true,
|
|
35
|
+
submission_write_timeout: true,
|
|
36
|
+
submission_refused_by_node: false,
|
|
37
|
+
submission_agent_unloaded: false,
|
|
38
|
+
};
|
|
39
|
+
const RETRYABLE_SEND_FAILURES = new Set(Object.keys(RETRY_DECISION).filter((r) => RETRY_DECISION[r]));
|
|
40
|
+
/**
|
|
41
|
+
* Failures that say something about OUR local preconditions rather than about the submission.
|
|
42
|
+
*
|
|
43
|
+
* These retry on the same backoff but do NOT consume the attempt budget — they are bounded by the
|
|
44
|
+
* retry WINDOW instead, so a genuinely dead network still stops eventually. Straight from
|
|
45
|
+
* `restart-seal-resolver.ts`'s `LOCAL_PRECONDITION_REFUSALS`, for the same reason: without it a
|
|
46
|
+
* flapping stream durably gives up on work that was never in question.
|
|
47
|
+
*/
|
|
48
|
+
const LOCAL_PRECONDITION_FAILURES = new Set([
|
|
49
|
+
"directory_unreachable",
|
|
50
|
+
"signaling_reconnecting",
|
|
51
|
+
"signaling_lost",
|
|
52
|
+
]);
|
|
53
|
+
export function isRetryableSendFailure(reason) {
|
|
54
|
+
return RETRYABLE_SEND_FAILURES.has(reason);
|
|
55
|
+
}
|
|
56
|
+
const DEFAULT_STAGGER_MS = 5_000;
|
|
57
|
+
const DEFAULT_MAX_ATTEMPTS = 5;
|
|
58
|
+
/**
|
|
59
|
+
* How long to wait before re-trying a LOCAL PRECONDITION failure.
|
|
60
|
+
*
|
|
61
|
+
* Deliberately not the stagger. When the stream is down `sendRaw` returns without touching the
|
|
62
|
+
* network, so a stagger-paced retry would be nearly free and nearly useless — 720 attempts and 720
|
|
63
|
+
* log lines in an hour, none of which could have succeeded. The reconnect callback is the real
|
|
64
|
+
* trigger; this is only the backstop for a reconnect that never fires, so it is paced against the
|
|
65
|
+
* ~70-second stream turnover rather than against impatience.
|
|
66
|
+
*/
|
|
67
|
+
const LOCAL_PRECONDITION_RETRY_MS = 60_000;
|
|
68
|
+
/** Doubles from here, so five attempts span roughly fifteen minutes. */
|
|
69
|
+
const BASE_BACKOFF_MS = 30_000;
|
|
70
|
+
/**
|
|
71
|
+
* One hour. Chosen against the intake key, not against patience: the queued blob is sealed to the
|
|
72
|
+
* intake key the manifest published at compose time, and a manifest window is measured in weeks.
|
|
73
|
+
*
|
|
74
|
+
* THIS COMMENT USED TO ASSERT THAT AN HOUR "CANNOT OUTLIVE THE KEY", AND THAT WAS AN UNCHECKED
|
|
75
|
+
* CLAIM (review M4). It holds only when the manifest has more than an hour left at compose time.
|
|
76
|
+
* `composeSealedSubmission` refuses an already-expired manifest, but nothing stopped a submission
|
|
77
|
+
* composed one minute before expiry from being held and re-sent for the next fifty-nine — and the
|
|
78
|
+
* portal's rotated-key retention does not cover it either, because that rule keeps a retired key
|
|
79
|
+
* "until no undrained row references it" (M10B-D11) and a HELD submission has no row at any node.
|
|
80
|
+
* The result is exactly the state the expiry gate exists to prevent: a blob the portal cannot open
|
|
81
|
+
* and cannot attribute, arriving as poison with no reply possible — while the operator has been
|
|
82
|
+
* told it is held and needs nothing from them.
|
|
83
|
+
*
|
|
84
|
+
* So the CALLER checks rather than this comment asserting. See the enqueue site in `daemon.ts`,
|
|
85
|
+
* which has the manifest in hand and refuses to hold a submission whose intake key would expire
|
|
86
|
+
* inside this window.
|
|
87
|
+
*/
|
|
88
|
+
export const DEFAULT_RETRY_WINDOW_MS = 60 * 60_000;
|
|
89
|
+
const DEFAULT_QUEUE_CAP = 32;
|
|
90
|
+
/** What the operator does about a submission still in flight. Named verb, real parameterless call. */
|
|
91
|
+
const RETRYING_GUIDANCE = "The daemon is retrying this submission on its own — it is sealed and held, and it goes out as " +
|
|
92
|
+
"soon as the directory signaling stream is back. You do not need to send it again. Run " +
|
|
93
|
+
"cello_attestations_issued to see where it got to. It is held IN MEMORY: if the daemon restarts " +
|
|
94
|
+
"before it lands, it is gone and you will have to write it again — re-sending is safe either way, " +
|
|
95
|
+
"the submission id is derived from the content.";
|
|
96
|
+
function gaveUpGuidance(reason, last) {
|
|
97
|
+
const shared = "Nothing was minted and nothing was recorded at a directory. Re-submitting is safe — the " +
|
|
98
|
+
"submission id is derived from the content, so a re-send is stored once, not twice — but the " +
|
|
99
|
+
"text is not kept on this machine, so you have to write it again: run cello_attestations_issue " +
|
|
100
|
+
"with the same subject.";
|
|
101
|
+
switch (reason) {
|
|
102
|
+
case "attempts_exhausted":
|
|
103
|
+
// "ANSWERED" WAS WRONG (review L8). The only reason that normally exhausts this budget is
|
|
104
|
+
// `submission_write_timeout` — where the node answered NOTHING, which is what the reason
|
|
105
|
+
// means — and `submission_unsupported_by_node`, where it answered `not_authenticated`, a
|
|
106
|
+
// frame `sendSealedSubmission` deliberately refuses to treat as an answer.
|
|
107
|
+
return (`The daemon retried this submission until it ran out of attempts; the last attempt ended ` +
|
|
108
|
+
`in '${last}'. ${shared}`);
|
|
109
|
+
case "retry_window_elapsed":
|
|
110
|
+
return (`The daemon held this submission for an hour and the directory signaling stream never came ` +
|
|
111
|
+
`back (last state '${last}'). Check the daemon's directory connection with cello_status ` +
|
|
112
|
+
`first — this is a connectivity problem, not a rejection. ${shared}`);
|
|
113
|
+
case "refused_by_node":
|
|
114
|
+
// Reached only when a node refuses mid-retry AND gives no reason of its own; the node's
|
|
115
|
+
// words win whenever it has any. Even here it must not read as a network problem.
|
|
116
|
+
return ("A directory node decoded this submission and refused it. That is a decision about the " +
|
|
117
|
+
"submission, not a connectivity problem, so it will not be retried — sending it again " +
|
|
118
|
+
"unchanged will be refused again. " + shared);
|
|
119
|
+
case "agent_unloaded":
|
|
120
|
+
return ("This daemon can no longer sign as the agent that wrote this submission, so the held bytes " +
|
|
121
|
+
"cannot be sent by anyone. Start the agent with cello_start_agent, then issue it again. " +
|
|
122
|
+
shared);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function defaultSchedule(fn, ms) {
|
|
126
|
+
const t = setTimeout(fn, ms);
|
|
127
|
+
// A background retry must never be the reason a daemon will not exit.
|
|
128
|
+
t.unref?.();
|
|
129
|
+
return { cancel: () => clearTimeout(t) };
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* The retry queue. One per daemon; keyed by (agentId, submissionId) because two agents on one
|
|
133
|
+
* daemon can each submit about the same subject and the rows are per-agent facts.
|
|
134
|
+
*/
|
|
135
|
+
export class SubmissionRetryQueue {
|
|
136
|
+
#deps;
|
|
137
|
+
#now;
|
|
138
|
+
#schedule;
|
|
139
|
+
#staggerMs;
|
|
140
|
+
#maxAttempts;
|
|
141
|
+
#retryWindowMs;
|
|
142
|
+
#localPreconditionRetryMs;
|
|
143
|
+
#baseBackoffMs;
|
|
144
|
+
#queueCap;
|
|
145
|
+
/** Live retries. An entry leaves on acceptance or on give-up. */
|
|
146
|
+
#queue = new Map();
|
|
147
|
+
/**
|
|
148
|
+
* Given-up submissions, kept so the operator surface can SHOW the terminal state. A give-up whose
|
|
149
|
+
* only consumer is a log line is indistinguishable from the submission never having existed,
|
|
150
|
+
* which is exactly the silence this unit exists to end. Bounded by the same cap.
|
|
151
|
+
*/
|
|
152
|
+
#gaveUp = [];
|
|
153
|
+
#timer = null;
|
|
154
|
+
#running = false;
|
|
155
|
+
#stopped = false;
|
|
156
|
+
constructor(deps) {
|
|
157
|
+
this.#deps = deps;
|
|
158
|
+
this.#now = deps.now ?? (() => Date.now());
|
|
159
|
+
this.#schedule = deps.schedule ?? defaultSchedule;
|
|
160
|
+
this.#staggerMs = deps.staggerMs ?? DEFAULT_STAGGER_MS;
|
|
161
|
+
this.#maxAttempts = deps.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
|
|
162
|
+
this.#retryWindowMs = deps.retryWindowMs ?? DEFAULT_RETRY_WINDOW_MS;
|
|
163
|
+
this.#localPreconditionRetryMs = deps.localPreconditionRetryMs ?? LOCAL_PRECONDITION_RETRY_MS;
|
|
164
|
+
this.#baseBackoffMs = deps.baseBackoffMs ?? BASE_BACKOFF_MS;
|
|
165
|
+
this.#queueCap = deps.queueCap ?? DEFAULT_QUEUE_CAP;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Take ownership of a submission whose send failed for a retryable reason.
|
|
169
|
+
*
|
|
170
|
+
* Returns `false` when the queue is full, and the caller then reports the plain failure — an
|
|
171
|
+
* operator who is told "the daemon has it" about a submission the daemon dropped is worse off
|
|
172
|
+
* than one who is told it failed, because only the second knows to act.
|
|
173
|
+
*/
|
|
174
|
+
enqueue(item, lastReason) {
|
|
175
|
+
if (this.#stopped)
|
|
176
|
+
return false;
|
|
177
|
+
const key = `${item.agentId}:${item.submissionId}`;
|
|
178
|
+
// Idempotent on the content-derived id: re-submitting the same body while a retry is pending is
|
|
179
|
+
// the SAME submission, not a second one.
|
|
180
|
+
if (this.#queue.has(key))
|
|
181
|
+
return true;
|
|
182
|
+
if (this.#queue.size >= this.#queueCap) {
|
|
183
|
+
this.#deps.logger.warn("signal.submission.retry.queue_full", {
|
|
184
|
+
agentName: item.agentName,
|
|
185
|
+
submissionId: item.submissionId,
|
|
186
|
+
cap: this.#queueCap,
|
|
187
|
+
impact: "this submission is NOT held for retry — the operator is told it failed and must re-send",
|
|
188
|
+
});
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
const now = this.#now();
|
|
192
|
+
this.#queue.set(key, {
|
|
193
|
+
item,
|
|
194
|
+
attempts: 0,
|
|
195
|
+
totalSends: 0,
|
|
196
|
+
enqueuedAt: now,
|
|
197
|
+
// Deliberately NOT now: the stream is down, and an immediate attempt spends the stagger on a
|
|
198
|
+
// connection that does not exist. The reconnect is what makes it due.
|
|
199
|
+
nextAt: now + this.#staggerMs,
|
|
200
|
+
delivery: {
|
|
201
|
+
state: "retrying",
|
|
202
|
+
attempts: 0,
|
|
203
|
+
lastReason,
|
|
204
|
+
nextAttemptAt: now + this.#staggerMs,
|
|
205
|
+
guidance: RETRYING_GUIDANCE,
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
this.#deps.logger.info("signal.submission.retry.enqueued", {
|
|
209
|
+
agentName: item.agentName,
|
|
210
|
+
submissionId: item.submissionId,
|
|
211
|
+
op: item.op,
|
|
212
|
+
reason: lastReason,
|
|
213
|
+
pending: this.#queue.size,
|
|
214
|
+
});
|
|
215
|
+
this.#arm(this.#staggerMs);
|
|
216
|
+
return true;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* The agent's directory signaling stream reached 'connected' — the first connect and every
|
|
220
|
+
* reconnect after a drop. THIS IS THE FAILOVER. Which node it landed on is not this module's
|
|
221
|
+
* business and is deliberately not read.
|
|
222
|
+
*/
|
|
223
|
+
onSignalingConnected(agentName) {
|
|
224
|
+
if (this.#stopped)
|
|
225
|
+
return;
|
|
226
|
+
const now = this.#now();
|
|
227
|
+
let woke = 0;
|
|
228
|
+
for (const entry of this.#queue.values()) {
|
|
229
|
+
if (entry.item.agentName !== agentName)
|
|
230
|
+
continue;
|
|
231
|
+
entry.nextAt = now;
|
|
232
|
+
// Only live entries are in `#queue`, so this is always the retrying shape — written out
|
|
233
|
+
// rather than spread, so a later member of the union cannot be silently mangled by a cast.
|
|
234
|
+
entry.delivery = {
|
|
235
|
+
state: "retrying",
|
|
236
|
+
attempts: entry.attempts,
|
|
237
|
+
lastReason: entry.delivery.lastReason,
|
|
238
|
+
nextAttemptAt: now,
|
|
239
|
+
guidance: RETRYING_GUIDANCE,
|
|
240
|
+
};
|
|
241
|
+
woke += 1;
|
|
242
|
+
}
|
|
243
|
+
if (woke === 0)
|
|
244
|
+
return;
|
|
245
|
+
this.#deps.logger.info("signal.submission.retry.woken", { agentName, count: woke });
|
|
246
|
+
this.#arm(0);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* What this agent still has in flight, and what was given up on. Read by `wallet_list_issued`,
|
|
250
|
+
* which is the surface behind `cello_attestations_issued` — the verb whose whole question is
|
|
251
|
+
* "what happened to what I sent?".
|
|
252
|
+
*/
|
|
253
|
+
list(agentId) {
|
|
254
|
+
const views = [];
|
|
255
|
+
for (const entry of [...this.#queue.values(), ...this.#gaveUp]) {
|
|
256
|
+
if (entry.item.agentId !== agentId)
|
|
257
|
+
continue;
|
|
258
|
+
views.push({
|
|
259
|
+
submissionId: entry.item.submissionId,
|
|
260
|
+
op: entry.item.op,
|
|
261
|
+
subject: entry.item.subject,
|
|
262
|
+
intakeKeyId: entry.item.intakeKeyId,
|
|
263
|
+
delivery: entry.delivery,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
return views;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* A submission finally landed by some other route — the operator re-issued it, and the
|
|
270
|
+
* first-pass send succeeded. Drop any give-up recorded for it (review L9).
|
|
271
|
+
*
|
|
272
|
+
* The id is content-derived, so re-issuing the SAME words about the SAME subject produces the
|
|
273
|
+
* SAME id: this is precisely the "I wrote it again and it worked" case. Without it the operator
|
|
274
|
+
* sees the old failure and the new accepted row side by side for the life of the daemon, with no
|
|
275
|
+
* way to dismiss the one that is no longer true.
|
|
276
|
+
*/
|
|
277
|
+
clearGaveUp(agentId, submissionId) {
|
|
278
|
+
const at = this.#gaveUp.findIndex((e) => e.item.agentId === agentId && e.item.submissionId === submissionId);
|
|
279
|
+
if (at === -1)
|
|
280
|
+
return;
|
|
281
|
+
this.#gaveUp.splice(at, 1);
|
|
282
|
+
this.#deps.logger.info("signal.submission.retry.gave_up.cleared", {
|
|
283
|
+
agentId,
|
|
284
|
+
submissionId,
|
|
285
|
+
impact: "a later send of the same submission succeeded, so the earlier give-up no longer stands",
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Stop, and start nothing further.
|
|
290
|
+
*
|
|
291
|
+
* EVERY DROPPED SUBMISSION IS NAMED (review H2). The queue is in memory by design, but the
|
|
292
|
+
* operator was told in as many words "you do NOT need to run this again" — and before this, a
|
|
293
|
+
* restart left no durable trace anywhere naming what had been lost. A comment in the composition
|
|
294
|
+
* root asserting "in memory by design" is not a record; these lines are.
|
|
295
|
+
*
|
|
296
|
+
* The SUBJECT is logged and the body is not: the subject is a pubkey or a signal hash, and the
|
|
297
|
+
* body is the operator's own words about a third party, which this whole path exists to keep out
|
|
298
|
+
* of the clear on disk.
|
|
299
|
+
*/
|
|
300
|
+
stop() {
|
|
301
|
+
this.#stopped = true;
|
|
302
|
+
this.#timer?.cancel();
|
|
303
|
+
this.#timer = null;
|
|
304
|
+
for (const entry of this.#queue.values()) {
|
|
305
|
+
this.#deps.logger.warn("signal.submission.retry.dropped_on_shutdown", {
|
|
306
|
+
agentName: entry.item.agentName,
|
|
307
|
+
submissionId: entry.item.submissionId,
|
|
308
|
+
op: entry.item.op,
|
|
309
|
+
subject: entry.item.subject,
|
|
310
|
+
attempts: entry.attempts,
|
|
311
|
+
sends: entry.totalSends,
|
|
312
|
+
impact: "it reached no directory node and the daemon is stopping — it must be issued again",
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
this.#queue.clear();
|
|
316
|
+
}
|
|
317
|
+
#arm(delayMs) {
|
|
318
|
+
if (this.#stopped)
|
|
319
|
+
return;
|
|
320
|
+
if (this.#queue.size === 0)
|
|
321
|
+
return;
|
|
322
|
+
this.#timer?.cancel();
|
|
323
|
+
this.#timer = this.#schedule(() => {
|
|
324
|
+
this.#timer = null;
|
|
325
|
+
void this.#pump();
|
|
326
|
+
}, delayMs);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Arm for whichever entry is due SOONEST, floored at the stagger so a queue is never a burst.
|
|
330
|
+
*
|
|
331
|
+
* It used to arm unconditionally at the stagger, which was right for the "one just finished"
|
|
332
|
+
* case and wrong for every other: an entry re-armed 60 seconds out would still be woken every 5
|
|
333
|
+
* seconds, and conversely a failing entry's own long wait used to be armed on behalf of siblings
|
|
334
|
+
* that were already due (review M7).
|
|
335
|
+
*/
|
|
336
|
+
#armIfWork() {
|
|
337
|
+
if (this.#queue.size === 0)
|
|
338
|
+
return;
|
|
339
|
+
const now = this.#now();
|
|
340
|
+
let earliest = Infinity;
|
|
341
|
+
for (const entry of this.#queue.values())
|
|
342
|
+
earliest = Math.min(earliest, entry.nextAt);
|
|
343
|
+
this.#arm(Math.max(this.#staggerMs, earliest - now));
|
|
344
|
+
}
|
|
345
|
+
async #pump() {
|
|
346
|
+
if (this.#stopped || this.#running || this.#queue.size === 0)
|
|
347
|
+
return;
|
|
348
|
+
const now = this.#now();
|
|
349
|
+
let due = null;
|
|
350
|
+
for (const entry of this.#queue.values()) {
|
|
351
|
+
if (entry.nextAt <= now && (due === null || entry.nextAt < due.nextAt))
|
|
352
|
+
due = entry;
|
|
353
|
+
}
|
|
354
|
+
if (due === null) {
|
|
355
|
+
let earliest = Infinity;
|
|
356
|
+
for (const entry of this.#queue.values())
|
|
357
|
+
earliest = Math.min(earliest, entry.nextAt);
|
|
358
|
+
if (earliest !== Infinity)
|
|
359
|
+
this.#arm(Math.max(0, earliest - now));
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
const entry = due;
|
|
363
|
+
const key = `${entry.item.agentId}:${entry.item.submissionId}`;
|
|
364
|
+
entry.totalSends += 1;
|
|
365
|
+
this.#running = true;
|
|
366
|
+
let result;
|
|
367
|
+
try {
|
|
368
|
+
result = await this.#deps.send(entry.item);
|
|
369
|
+
}
|
|
370
|
+
catch (err) {
|
|
371
|
+
// A thrown send is not a decision about the submission either — it is our own transport
|
|
372
|
+
// falling over. Treated as the local precondition it is.
|
|
373
|
+
this.#deps.logger.warn("signal.submission.retry.threw", {
|
|
374
|
+
agentName: entry.item.agentName,
|
|
375
|
+
submissionId: entry.item.submissionId,
|
|
376
|
+
error: err instanceof Error ? err.message : String(err),
|
|
377
|
+
});
|
|
378
|
+
result = { ok: false, reason: "directory_unreachable", guidance: "" };
|
|
379
|
+
}
|
|
380
|
+
finally {
|
|
381
|
+
this.#running = false;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* AN ACCEPTANCE IS RECORDED EVEN IF WE ARE SHUTTING DOWN, and the `#stopped` check sits BELOW
|
|
385
|
+
* this branch for that reason (review H1).
|
|
386
|
+
*
|
|
387
|
+
* `stop()` does not await the send in flight. Checking `#stopped` first meant a node that
|
|
388
|
+
* accepted the submission during shutdown produced no `onAccepted`, no log line, and no row in
|
|
389
|
+
* `issued_submissions` — while the portal went on to mint it. The endorsement is real and the
|
|
390
|
+
* operator holds no handle to it, so it can never be withdrawn: `recordIssuedSubmission`'s own
|
|
391
|
+
* comment is "KEEP THE HANDLE, or a withdrawal has nothing to name."
|
|
392
|
+
*
|
|
393
|
+
* The log line goes out FIRST and carries the subject, so even if the database is already
|
|
394
|
+
* closed the handle survives in `daemon.log`. A bare `return` here was the worst of the three
|
|
395
|
+
* available options.
|
|
396
|
+
*/
|
|
397
|
+
if (result.ok) {
|
|
398
|
+
this.#queue.delete(key);
|
|
399
|
+
this.#deps.logger.info("signal.submission.retry.accepted", {
|
|
400
|
+
agentName: entry.item.agentName,
|
|
401
|
+
submissionId: entry.item.submissionId,
|
|
402
|
+
op: entry.item.op,
|
|
403
|
+
// The SUBJECT, so this line alone is enough to reconstruct the handle if the write below
|
|
404
|
+
// cannot run. It is a pubkey or a signal hash — never the operator's words.
|
|
405
|
+
subject: entry.item.subject,
|
|
406
|
+
intakeKeyId: entry.item.intakeKeyId,
|
|
407
|
+
sends: entry.totalSends,
|
|
408
|
+
stored: result.stored,
|
|
409
|
+
...(this.#stopped ? { duringShutdown: true } : {}),
|
|
410
|
+
});
|
|
411
|
+
try {
|
|
412
|
+
this.#deps.onAccepted(entry.item, result.stored);
|
|
413
|
+
}
|
|
414
|
+
catch (err) {
|
|
415
|
+
// Best-effort, exactly as the first-pass record write is: the submission IS accepted, and
|
|
416
|
+
// failing over a local bookkeeping write would invite a re-send of something already queued.
|
|
417
|
+
this.#deps.logger.error("signal.submission.retry.record_failed", {
|
|
418
|
+
agentName: entry.item.agentName,
|
|
419
|
+
submissionId: entry.item.submissionId,
|
|
420
|
+
subject: entry.item.subject,
|
|
421
|
+
error: err instanceof Error ? err.message : String(err),
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
if (!this.#stopped)
|
|
425
|
+
this.#armIfWork();
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
// Below here everything is bookkeeping for a FUTURE attempt, and a stopped queue makes none.
|
|
429
|
+
if (this.#stopped)
|
|
430
|
+
return;
|
|
431
|
+
// A NON-RETRYABLE FAILURE ARRIVING MID-RETRY IS TERMINAL, AND IT KEEPS ITS OWN NAME (review
|
|
432
|
+
// H3). Stamping these `attempts_exhausted` printed a transport story — with `attempts: 0` beside
|
|
433
|
+
// it — for a quota refusal, in the one field a machine consumer branches on.
|
|
434
|
+
if (!isRetryableSendFailure(result.reason)) {
|
|
435
|
+
this.#giveUp(key, entry, result.reason, result.reason === "submission_agent_unloaded" ? "agent_unloaded" : "refused_by_node", result.guidance);
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
const localPrecondition = LOCAL_PRECONDITION_FAILURES.has(result.reason);
|
|
439
|
+
if (!localPrecondition)
|
|
440
|
+
entry.attempts += 1;
|
|
441
|
+
const windowElapsed = this.#now() - entry.enqueuedAt >= this.#retryWindowMs;
|
|
442
|
+
if (windowElapsed) {
|
|
443
|
+
this.#giveUp(key, entry, result.reason, "retry_window_elapsed");
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
if (!localPrecondition && entry.attempts >= this.#maxAttempts) {
|
|
447
|
+
this.#giveUp(key, entry, result.reason, "attempts_exhausted");
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
const waitMs = localPrecondition
|
|
451
|
+
? this.#localPreconditionRetryMs
|
|
452
|
+
: this.#baseBackoffMs * 2 ** Math.max(0, entry.attempts - 1);
|
|
453
|
+
entry.nextAt = this.#now() + waitMs;
|
|
454
|
+
entry.delivery = {
|
|
455
|
+
state: "retrying",
|
|
456
|
+
attempts: entry.attempts,
|
|
457
|
+
lastReason: result.reason,
|
|
458
|
+
nextAttemptAt: entry.nextAt,
|
|
459
|
+
guidance: RETRYING_GUIDANCE,
|
|
460
|
+
};
|
|
461
|
+
this.#deps.logger.info("signal.submission.retry.waiting", {
|
|
462
|
+
agentName: entry.item.agentName,
|
|
463
|
+
submissionId: entry.item.submissionId,
|
|
464
|
+
attempts: entry.attempts,
|
|
465
|
+
sends: entry.totalSends,
|
|
466
|
+
reason: result.reason,
|
|
467
|
+
localPrecondition,
|
|
468
|
+
retryInMs: waitMs,
|
|
469
|
+
});
|
|
470
|
+
// ARM FOR THE EARLIEST DEADLINE IN THE QUEUE, not for this entry's (review M7). A reconnect
|
|
471
|
+
// makes EVERY held submission for that agent due at once; arming on the failing entry's own
|
|
472
|
+
// 60-second wait sent the rest back to sleep on a stream that was up, so throughput collapsed
|
|
473
|
+
// to one send per minute regardless of queue depth — defeating the stagger this module claims.
|
|
474
|
+
this.#armIfWork();
|
|
475
|
+
}
|
|
476
|
+
#giveUp(key, entry, lastReason, because, nodeGuidance) {
|
|
477
|
+
this.#queue.delete(key);
|
|
478
|
+
entry.delivery = {
|
|
479
|
+
state: "gave_up",
|
|
480
|
+
attempts: entry.attempts,
|
|
481
|
+
lastReason,
|
|
482
|
+
gaveUpBecause: because,
|
|
483
|
+
// The NODE'S OWN words survive when it gave any — a refusal on the merits names something
|
|
484
|
+
// this module cannot know. Ours is the fallback, never the replacement.
|
|
485
|
+
guidance: nodeGuidance && nodeGuidance.length > 0 ? nodeGuidance : gaveUpGuidance(because, lastReason),
|
|
486
|
+
};
|
|
487
|
+
this.#gaveUp.push(entry);
|
|
488
|
+
while (this.#gaveUp.length > this.#queueCap)
|
|
489
|
+
this.#gaveUp.shift();
|
|
490
|
+
this.#deps.logger.warn("signal.submission.retry.gave_up", {
|
|
491
|
+
agentName: entry.item.agentName,
|
|
492
|
+
submissionId: entry.item.submissionId,
|
|
493
|
+
op: entry.item.op,
|
|
494
|
+
attempts: entry.attempts,
|
|
495
|
+
sends: entry.totalSends,
|
|
496
|
+
reason: lastReason,
|
|
497
|
+
// WHY it stopped, not just that it did — "we ran out of tries" and "the network never came
|
|
498
|
+
// back" lead to different operator actions.
|
|
499
|
+
stoppedBecause: because,
|
|
500
|
+
impact: "this trust signal reached no directory node; it is visible as gave_up in cello_attestations_issued",
|
|
501
|
+
});
|
|
502
|
+
this.#armIfWork();
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
//# sourceMappingURL=submission-retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submission-retry.js","sourceRoot":"","sources":["../src/submission-retry.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -294,6 +294,18 @@ export interface DaemonConfig {
|
|
|
294
294
|
* durable awaiting entries remain queued for the next startup that has a park target.
|
|
295
295
|
*/
|
|
296
296
|
contentParkFn?: import("./retry-queue.js").ParkFn;
|
|
297
|
+
/**
|
|
298
|
+
* DOD-M15-ENDORSE-RETRY-1 — timings for the sealed-submission retry queue. Absent in production,
|
|
299
|
+
* where the module's own defaults apply.
|
|
300
|
+
*
|
|
301
|
+
* Same seam as `contentParkTtfMs` below and for the same reason: without it a test's green
|
|
302
|
+
* depends on the real SignalingManager reconnect ladder racing a real 5-second timer, so a
|
|
303
|
+
* correct implementation goes red whenever the ladder happens to land late.
|
|
304
|
+
*/
|
|
305
|
+
submissionRetryIntervalsMs?: {
|
|
306
|
+
staggerMs?: number;
|
|
307
|
+
localPreconditionRetryMs?: number;
|
|
308
|
+
};
|
|
297
309
|
/**
|
|
298
310
|
* The TTF (time-to-flush) window, in ms, the sender waits for a `persisted` delivery ACK
|
|
299
311
|
* before handing un-acked content to the park backstop. Default 20_000. Tests inject a
|
|
@@ -465,6 +477,7 @@ export declare const MAX_SESSION_NODES = 32;
|
|
|
465
477
|
* (non-interrupted) close path produces this today.
|
|
466
478
|
*/
|
|
467
479
|
export type SessionStatus = "active" | "sealed" | "interrupted" | "seal_interrupted_pending" | "abandoned";
|
|
480
|
+
import type { ContentEncryptionReason } from "./content-encryption-status.js";
|
|
468
481
|
export interface SessionRecord {
|
|
469
482
|
/**
|
|
470
483
|
* DOD-M15-REFUSED-INBOUND-SILENT-1 — whether this session's content hashes are salted.
|
|
@@ -476,6 +489,15 @@ export interface SessionRecord {
|
|
|
476
489
|
* their setup. Absent on records that did not come from a listing surface.
|
|
477
490
|
*/
|
|
478
491
|
content_hashes_salted?: boolean;
|
|
492
|
+
/**
|
|
493
|
+
* 006-CRYPTO — whether CELLO's OWN encryption is protecting this session's message bodies, and
|
|
494
|
+
* why not when it is not. `false` in every build until `007-CRYPTO` ships the key exchange.
|
|
495
|
+
*
|
|
496
|
+
* Separate from `content_hashes_salted`: the salt stops a relay CONFIRMING a guess at a stored
|
|
497
|
+
* hash, this stops it READING the message. Absent on records that did not come from a listing.
|
|
498
|
+
*/
|
|
499
|
+
content_encrypted?: boolean;
|
|
500
|
+
content_encryption_reason?: ContentEncryptionReason;
|
|
479
501
|
session_id: string;
|
|
480
502
|
/**
|
|
481
503
|
* The STABLE key this row is scoped by. Every `sessions` query joins on this, never on
|
|
@@ -551,6 +573,17 @@ export interface SessionListEntry {
|
|
|
551
573
|
* because adoption was refused*, and only the second says anything about their setup.
|
|
552
574
|
*/
|
|
553
575
|
contentHashesSalted?: false;
|
|
576
|
+
/**
|
|
577
|
+
* 006-CRYPTO — present ONLY when CELLO is not encrypting this session's message bodies itself.
|
|
578
|
+
*
|
|
579
|
+
* Its absence will be the healthy case once `007-CRYPTO` lands; today it is present on every
|
|
580
|
+
* session, and that is the truth about this build rather than a fault in the session. It is here
|
|
581
|
+
* so no reader has to infer the state from silence — the failure this whole line exists to end
|
|
582
|
+
* was a key agreement that had tests, a header claiming forward secrecy, and no caller.
|
|
583
|
+
*/
|
|
584
|
+
contentEncrypted?: false;
|
|
585
|
+
/** What that means for the operator. Never a bare code — a bare code is not an affordance. */
|
|
586
|
+
contentEncryptionGuidance?: string;
|
|
554
587
|
sessionId: string;
|
|
555
588
|
agentName: string;
|
|
556
589
|
counterpartyPubkey: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,aAAa,EACb,eAAe,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKrE,YAAY,EAAE,qBAAqB,EAAE,CAAC;AAGtC,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC5B,CAAC;AAGF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D;AAID,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAI3D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,eAAe,CAAC;AAIrD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAG,uBAAgC,CAAC;AAI7E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,UAAU,GAClB,aAAa,GACb,cAAc,GACd,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,YAAY,GACZ,QAAQ,CAAC;AAEb,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;;;OAKG;IACH,8BAA8B,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;IACpF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC;AAE5E,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAID,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC;AAE5E,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,mBAAmB,EAAE,uBAAuB,CAAC;IAC7C,MAAM,EAAE,SAAS,EAAE,CAAC;IAIpB;;;;OAIG;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,oBAAoB,EAAE,sBAAsB,EAAE,CAAC;IAC/C;;;;OAIG;IACH,eAAe,EAAE,iBAAiB,EAAE,CAAC;CACtC;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAClB;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;qGAGiG;IACjG,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IACpD,qFAAqF;IACrF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;OAOG;IACH,aAAa,EAAE,iBAAiB,CAAC;IACjC;;mGAE+F;IAC/F,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;CACzD;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C;;;OAGG;IACH,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAChD;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACpE;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,2BAA2B,EAAE,mBAAmB,CAAC;IAC7E;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,EAAE,OAAO,kBAAkB,EAAE,MAAM,CAAC;IAClD;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,MAAM,MAAM,CAAC;IACtC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;;;;;;;;OAYG;IACH,eAAe,EAAE,qBAAqB,CAAC;IACvC;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,2BAA2B,EAAE,sBAAsB,CAAC;IACnF;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,OAAO,2BAA2B,EAAE,sBAAsB,CAAC;IAClF;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAID;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,0BAA0B,GAI1B,WAAW,CAAC;AAEhB,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,iEAAiE;AACjE,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,iBAAiB,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,KAAK,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,yFAAyF;IACzF,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,kBAAkB,EAAE,MAAM,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;;;;;OAYG;IACH,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAID,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,aAAa,EACb,eAAe,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKrE,YAAY,EAAE,qBAAqB,EAAE,CAAC;AAGtC,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC5B,CAAC;AAGF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D;AAID,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAI3D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,eAAe,CAAC;AAIrD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAG,uBAAgC,CAAC;AAI7E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,UAAU,GAClB,aAAa,GACb,cAAc,GACd,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,YAAY,GACZ,QAAQ,CAAC;AAEb,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;;;OAKG;IACH,8BAA8B,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;IACpF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC;AAE5E,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAID,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC;AAE5E,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,mBAAmB,EAAE,uBAAuB,CAAC;IAC7C,MAAM,EAAE,SAAS,EAAE,CAAC;IAIpB;;;;OAIG;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,oBAAoB,EAAE,sBAAsB,EAAE,CAAC;IAC/C;;;;OAIG;IACH,eAAe,EAAE,iBAAiB,EAAE,CAAC;CACtC;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAClB;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;qGAGiG;IACjG,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IACpD,qFAAqF;IACrF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;OAOG;IACH,aAAa,EAAE,iBAAiB,CAAC;IACjC;;mGAE+F;IAC/F,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;CACzD;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C;;;OAGG;IACH,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAChD;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACpE;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,2BAA2B,EAAE,mBAAmB,CAAC;IAC7E;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,EAAE,OAAO,kBAAkB,EAAE,MAAM,CAAC;IAClD;;;;;;;OAOG;IACH,0BAA0B,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,wBAAwB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvF;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,MAAM,MAAM,CAAC;IACtC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;;;;;;;;OAYG;IACH,eAAe,EAAE,qBAAqB,CAAC;IACvC;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,2BAA2B,EAAE,sBAAsB,CAAC;IACnF;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,OAAO,2BAA2B,EAAE,sBAAsB,CAAC;IAClF;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAID;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,0BAA0B,GAI1B,WAAW,CAAC;AAEhB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yBAAyB,CAAC,EAAE,uBAAuB,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,iEAAiE;AACjE,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,iBAAiB,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,KAAK,CAAC;IAC5B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC;IACzB,8FAA8F;IAC9F,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,yFAAyF;IACzF,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,kBAAkB,EAAE,MAAM,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;;;;;OAYG;IACH,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAID,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAC"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgFH,gCAAgC;AAEhC;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgFH,gCAAgC;AAEhC;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAgC,CAAC;AAua7E,6BAA6B;AAE7B;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAwMpC,sBAAsB;AAEtB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,yBAAyB,EAAE,2BAA2B;IACtD,yBAAyB,EAAE,2BAA2B;IACtD,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,6BAA6B,EAAE,+BAA+B;IAC9D,8BAA8B,EAAE,gCAAgC;IAChE,oBAAoB,EAAE,sBAAsB;IAC5C,4BAA4B,EAAE,8BAA8B;IAC5D,6BAA6B,EAAE,+BAA+B;CACtD,CAAC"}
|
package/dist/vocabulary.d.ts
CHANGED
|
@@ -42,9 +42,19 @@ export interface DualSurfaceVerb {
|
|
|
42
42
|
*/
|
|
43
43
|
export declare const DUAL_SURFACE_VERBS: readonly DualSurfaceVerb[];
|
|
44
44
|
/**
|
|
45
|
-
* Tools that exist ONLY on the MCP surface.
|
|
46
|
-
*
|
|
47
|
-
*
|
|
45
|
+
* Tools that exist ONLY on the MCP surface. Listed so the audit test can tell "known MCP-only" from
|
|
46
|
+
* "stale name".
|
|
47
|
+
*
|
|
48
|
+
* ⚠️ THIS COMMENT USED TO READ *"Their daemon handlers return `not_implemented`, so there is
|
|
49
|
+
* deliberately no CLI command to build a second broken path to."* That was true of all three when it
|
|
50
|
+
* was written and is now true of NONE of them — `cello_backup` and `cello_restore` were implemented
|
|
51
|
+
* by `DOD-M15-BACKUP-1`, and `cello_get_inclusion_proof` by `DOD-M15-INCLUSION-1`, which also added
|
|
52
|
+
* `cello_verify_inclusion_proof`. Rewritten rather than deleted, per the claim-truth lens: the
|
|
53
|
+
* sentence is the evidence that "MCP-only" was once a synonym for "unimplemented", and a reader who
|
|
54
|
+
* still believes that would take a working tool for a stub.
|
|
55
|
+
*
|
|
56
|
+
* What the list means NOW: these are implemented capabilities with no CLI twin. Membership is a
|
|
57
|
+
* statement about SURFACE, not about readiness.
|
|
48
58
|
*/
|
|
49
59
|
export declare const MCP_ONLY_TOOLS: readonly string[];
|
|
50
60
|
/**
|