@buoy-gg/agent-core 7.0.33
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/LICENSE +58 -0
- package/README.md +42 -0
- package/lib/commonjs/blocks/receipts.js +702 -0
- package/lib/commonjs/blocks/receipts.js.map +1 -0
- package/lib/commonjs/blocks/types.js +119 -0
- package/lib/commonjs/blocks/types.js.map +1 -0
- package/lib/commonjs/blocks/uiTool.js +994 -0
- package/lib/commonjs/blocks/uiTool.js.map +1 -0
- package/lib/commonjs/catalog/catalog.g.js +4044 -0
- package/lib/commonjs/catalog/catalog.g.js.map +1 -0
- package/lib/commonjs/catalog/catalog.source.json +4956 -0
- package/lib/commonjs/catalog/snapshotReads.js +256 -0
- package/lib/commonjs/catalog/snapshotReads.js.map +1 -0
- package/lib/commonjs/catalog/toProviderTools.js +107 -0
- package/lib/commonjs/catalog/toProviderTools.js.map +1 -0
- package/lib/commonjs/catalog/validateParams.js +129 -0
- package/lib/commonjs/catalog/validateParams.js.map +1 -0
- package/lib/commonjs/context/buildContextPack.js +141 -0
- package/lib/commonjs/context/buildContextPack.js.map +1 -0
- package/lib/commonjs/effects/ledger.js +229 -0
- package/lib/commonjs/effects/ledger.js.map +1 -0
- package/lib/commonjs/engine/effectFor.js +95 -0
- package/lib/commonjs/engine/effectFor.js.map +1 -0
- package/lib/commonjs/engine/runAgentTurn.js +667 -0
- package/lib/commonjs/engine/runAgentTurn.js.map +1 -0
- package/lib/commonjs/engine/systemPrompt.js +86 -0
- package/lib/commonjs/engine/systemPrompt.js.map +1 -0
- package/lib/commonjs/index.js +288 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/policy/labels.js +303 -0
- package/lib/commonjs/policy/labels.js.map +1 -0
- package/lib/commonjs/policy/policy.js +143 -0
- package/lib/commonjs/policy/policy.js.map +1 -0
- package/lib/commonjs/policy/redact.js +135 -0
- package/lib/commonjs/policy/redact.js.map +1 -0
- package/lib/commonjs/providers/anthropic.js +272 -0
- package/lib/commonjs/providers/anthropic.js.map +1 -0
- package/lib/commonjs/providers/openai.js +193 -0
- package/lib/commonjs/providers/openai.js.map +1 -0
- package/lib/commonjs/providers/sse.js +104 -0
- package/lib/commonjs/providers/sse.js.map +1 -0
- package/lib/commonjs/providers/types.js +6 -0
- package/lib/commonjs/providers/types.js.map +1 -0
- package/lib/commonjs/session.js +173 -0
- package/lib/commonjs/session.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/blocks/receipts.js +696 -0
- package/lib/module/blocks/receipts.js.map +1 -0
- package/lib/module/blocks/types.js +113 -0
- package/lib/module/blocks/types.js.map +1 -0
- package/lib/module/blocks/uiTool.js +987 -0
- package/lib/module/blocks/uiTool.js.map +1 -0
- package/lib/module/catalog/catalog.g.js +4040 -0
- package/lib/module/catalog/catalog.g.js.map +1 -0
- package/lib/module/catalog/catalog.source.json +4956 -0
- package/lib/module/catalog/snapshotReads.js +252 -0
- package/lib/module/catalog/snapshotReads.js.map +1 -0
- package/lib/module/catalog/toProviderTools.js +101 -0
- package/lib/module/catalog/toProviderTools.js.map +1 -0
- package/lib/module/catalog/validateParams.js +124 -0
- package/lib/module/catalog/validateParams.js.map +1 -0
- package/lib/module/context/buildContextPack.js +138 -0
- package/lib/module/context/buildContextPack.js.map +1 -0
- package/lib/module/effects/ledger.js +223 -0
- package/lib/module/effects/ledger.js.map +1 -0
- package/lib/module/engine/effectFor.js +91 -0
- package/lib/module/engine/effectFor.js.map +1 -0
- package/lib/module/engine/runAgentTurn.js +663 -0
- package/lib/module/engine/runAgentTurn.js.map +1 -0
- package/lib/module/engine/systemPrompt.js +82 -0
- package/lib/module/engine/systemPrompt.js.map +1 -0
- package/lib/module/index.js +30 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/policy/labels.js +296 -0
- package/lib/module/policy/labels.js.map +1 -0
- package/lib/module/policy/policy.js +137 -0
- package/lib/module/policy/policy.js.map +1 -0
- package/lib/module/policy/redact.js +128 -0
- package/lib/module/policy/redact.js.map +1 -0
- package/lib/module/providers/anthropic.js +268 -0
- package/lib/module/providers/anthropic.js.map +1 -0
- package/lib/module/providers/openai.js +189 -0
- package/lib/module/providers/openai.js.map +1 -0
- package/lib/module/providers/sse.js +99 -0
- package/lib/module/providers/sse.js.map +1 -0
- package/lib/module/providers/types.js +4 -0
- package/lib/module/providers/types.js.map +1 -0
- package/lib/module/session.js +168 -0
- package/lib/module/session.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/blocks/receipts.d.ts +32 -0
- package/lib/typescript/blocks/receipts.d.ts.map +1 -0
- package/lib/typescript/blocks/types.d.ts +576 -0
- package/lib/typescript/blocks/types.d.ts.map +1 -0
- package/lib/typescript/blocks/uiTool.d.ts +15 -0
- package/lib/typescript/blocks/uiTool.d.ts.map +1 -0
- package/lib/typescript/catalog/catalog.g.d.ts +11 -0
- package/lib/typescript/catalog/catalog.g.d.ts.map +1 -0
- package/lib/typescript/catalog/snapshotReads.d.ts +37 -0
- package/lib/typescript/catalog/snapshotReads.d.ts.map +1 -0
- package/lib/typescript/catalog/toProviderTools.d.ts +52 -0
- package/lib/typescript/catalog/toProviderTools.d.ts.map +1 -0
- package/lib/typescript/catalog/validateParams.d.ts +33 -0
- package/lib/typescript/catalog/validateParams.d.ts.map +1 -0
- package/lib/typescript/context/buildContextPack.d.ts +32 -0
- package/lib/typescript/context/buildContextPack.d.ts.map +1 -0
- package/lib/typescript/effects/ledger.d.ts +119 -0
- package/lib/typescript/effects/ledger.d.ts.map +1 -0
- package/lib/typescript/engine/effectFor.d.ts +21 -0
- package/lib/typescript/engine/effectFor.d.ts.map +1 -0
- package/lib/typescript/engine/runAgentTurn.d.ts +140 -0
- package/lib/typescript/engine/runAgentTurn.d.ts.map +1 -0
- package/lib/typescript/engine/systemPrompt.d.ts +49 -0
- package/lib/typescript/engine/systemPrompt.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +29 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/policy/labels.d.ts +10 -0
- package/lib/typescript/policy/labels.d.ts.map +1 -0
- package/lib/typescript/policy/policy.d.ts +106 -0
- package/lib/typescript/policy/policy.d.ts.map +1 -0
- package/lib/typescript/policy/redact.d.ts +37 -0
- package/lib/typescript/policy/redact.d.ts.map +1 -0
- package/lib/typescript/providers/anthropic.d.ts +22 -0
- package/lib/typescript/providers/anthropic.d.ts.map +1 -0
- package/lib/typescript/providers/openai.d.ts +19 -0
- package/lib/typescript/providers/openai.d.ts.map +1 -0
- package/lib/typescript/providers/sse.d.ts +18 -0
- package/lib/typescript/providers/sse.d.ts.map +1 -0
- package/lib/typescript/providers/types.d.ts +129 -0
- package/lib/typescript/providers/types.d.ts.map +1 -0
- package/lib/typescript/session.d.ts +58 -0
- package/lib/typescript/session.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +119 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["projectSnapshot","SNAPSHOT_ACTION","PROBE_TIMEOUT_MS","list","value","Array","isArray","items","names","keys","cap","slice","map","item","rec","k","undefined","id","name","key","PROBES","toolId","action","shape","v","routes","params","includeValues","Object","state","stores","raw","s","persistName","persistsTo","env","withTimeout","p","ms","Promise","race","catch","resolve","setTimeout","buildContextDigest","dispatch","readSnapshot","availableToolIds","availableActions","runnable","filter","includes","actions","settled","all","probe","read","then","payload","digest","empty","length"],"sourceRoot":"../../../src","sources":["context/buildContextPack.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The effect ledger — what the agent changed, and how to put it back.
|
|
5
|
+
*
|
|
6
|
+
* Ask Buoy runs mutations immediately rather than asking first, so "undo" has
|
|
7
|
+
* to be real. The model is Scenarios' `AppliedEffect` / `revertEffects`
|
|
8
|
+
* (packages/scenarios/src/engine.ts:238-272), with two deliberate departures,
|
|
9
|
+
* both fixing gaps that engine documents in itself:
|
|
10
|
+
*
|
|
11
|
+
* 1. STORAGE IS ACTUALLY REVERSIBLE HERE. Scenarios classifies storage writes
|
|
12
|
+
* as unrecoverable because it never captured the prior value. An agent can:
|
|
13
|
+
* it reads the key before it writes, so undo restores the old value exactly,
|
|
14
|
+
* and removes the key when it did not exist before.
|
|
15
|
+
* 2. THE COUNT TELLS THE TRUTH. Scenarios' banner counts transients as
|
|
16
|
+
* "changes" and then silently no-ops on them at revert. Here reversible and
|
|
17
|
+
* one-shot effects are counted separately and the banner says both, because
|
|
18
|
+
* a user who taps Undo and sees "4 changes" become nothing changed learns
|
|
19
|
+
* not to trust the banner.
|
|
20
|
+
*
|
|
21
|
+
* Undo runs in REVERSE order — a later write to the same key must be undone
|
|
22
|
+
* before the earlier one, or the earlier value is the one that survives.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Whether Undo can actually put this effect back. THE one place the answer
|
|
27
|
+
* lives: the bar, the sync snapshot and `revertOne` all agree through it.
|
|
28
|
+
* `state-write` is a wipe or a store write with no captured prior state —
|
|
29
|
+
* the ledger records it so the user can see it happened, and it is
|
|
30
|
+
* PERMANENT. Counting it as undoable made the bar promise "1 undoable" and
|
|
31
|
+
* then fail with "can't be undone automatically" on tap.
|
|
32
|
+
*/
|
|
33
|
+
export function isReversible(effect) {
|
|
34
|
+
return effect.kind !== "transient" && effect.kind !== "state-write";
|
|
35
|
+
}
|
|
36
|
+
let seq = 0;
|
|
37
|
+
export class EffectLedger {
|
|
38
|
+
entries = [];
|
|
39
|
+
listeners = new Set();
|
|
40
|
+
record(toolId, action, effect) {
|
|
41
|
+
const entry = {
|
|
42
|
+
id: `fx-${++seq}-${Date.now()}`,
|
|
43
|
+
at: Date.now(),
|
|
44
|
+
toolId,
|
|
45
|
+
action,
|
|
46
|
+
effect
|
|
47
|
+
};
|
|
48
|
+
// Copy-on-write: `list()` is a useSyncExternalStore snapshot, and React
|
|
49
|
+
// bails out of the re-render when the snapshot is reference-equal. A
|
|
50
|
+
// push would leave the bar showing a stale count until something else
|
|
51
|
+
// happened to re-render it.
|
|
52
|
+
this.entries = [...this.entries, entry];
|
|
53
|
+
this.emit();
|
|
54
|
+
return entry;
|
|
55
|
+
}
|
|
56
|
+
list() {
|
|
57
|
+
return this.entries;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** New array identity for the snapshot after entries were mutated in place. */
|
|
61
|
+
touch() {
|
|
62
|
+
this.entries = [...this.entries];
|
|
63
|
+
this.emit();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Not-yet-undone entries that Undo can actually deliver on. Agrees with
|
|
67
|
+
* `isReversible` — it used to include state-writes, which revertOne refuses,
|
|
68
|
+
* so the two disagreed about the one fact they both exist to answer. */
|
|
69
|
+
reversible() {
|
|
70
|
+
return this.entries.filter(e => !e.undoneAt && isReversible(e.effect));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** Not-yet-undone one-shots. Counted separately so the banner is honest. */
|
|
74
|
+
transients() {
|
|
75
|
+
return this.entries.filter(e => !e.undoneAt && e.effect.kind === "transient");
|
|
76
|
+
}
|
|
77
|
+
isEmpty() {
|
|
78
|
+
return this.entries.every(e => e.undoneAt !== undefined);
|
|
79
|
+
}
|
|
80
|
+
subscribe(fn) {
|
|
81
|
+
this.listeners.add(fn);
|
|
82
|
+
return () => this.listeners.delete(fn);
|
|
83
|
+
}
|
|
84
|
+
clear() {
|
|
85
|
+
this.entries = [];
|
|
86
|
+
this.emit();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Reconcile the ledger after a change was reverted OUTSIDE `revertOne` —
|
|
91
|
+
* the model deleting the override it created, a block button's Delete, a
|
|
92
|
+
* stopImpersonation call. Without this the create entry stays "undoable"
|
|
93
|
+
* and Undo later fails against a rule that no longer exists, which reads
|
|
94
|
+
* as the banner lying.
|
|
95
|
+
*/
|
|
96
|
+
noteExternalRevert(toolId, action, params) {
|
|
97
|
+
let changed = false;
|
|
98
|
+
const mark = match => {
|
|
99
|
+
for (const entry of this.entries) {
|
|
100
|
+
if (!entry.undoneAt && match(entry)) {
|
|
101
|
+
entry.undoneAt = Date.now();
|
|
102
|
+
entry.undoError = undefined;
|
|
103
|
+
changed = true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
if (toolId === "network" && action === "deleteOverrideRule") {
|
|
108
|
+
mark(e => e.effect.kind === "network-override" && e.effect.ruleId === params.id);
|
|
109
|
+
} else if (toolId === "network" && action === "clearOverrideRules") {
|
|
110
|
+
mark(e => e.effect.kind === "network-override");
|
|
111
|
+
} else if (toolId === "impersonate" && action === "stopImpersonation") {
|
|
112
|
+
mark(e => e.effect.kind === "impersonation");
|
|
113
|
+
}
|
|
114
|
+
if (changed) this.touch();
|
|
115
|
+
}
|
|
116
|
+
emit() {
|
|
117
|
+
for (const fn of this.listeners) {
|
|
118
|
+
try {
|
|
119
|
+
fn();
|
|
120
|
+
} catch {
|
|
121
|
+
// A throwing listener must not take the ledger down.
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** Undo one entry. Returns an error string, or undefined on success. */
|
|
127
|
+
async revertOne(entry, dispatch) {
|
|
128
|
+
if (entry.undoneAt) return undefined;
|
|
129
|
+
const fx = entry.effect;
|
|
130
|
+
try {
|
|
131
|
+
switch (fx.kind) {
|
|
132
|
+
case "network-override":
|
|
133
|
+
await dispatch("network", "deleteOverrideRule", {
|
|
134
|
+
id: fx.ruleId
|
|
135
|
+
});
|
|
136
|
+
break;
|
|
137
|
+
case "impersonation":
|
|
138
|
+
await dispatch("impersonate", "stopImpersonation", {});
|
|
139
|
+
break;
|
|
140
|
+
case "storage-write":
|
|
141
|
+
{
|
|
142
|
+
// `instanceId` rides along for MMKV and is absent for AsyncStorage,
|
|
143
|
+
// whose actions take the key alone.
|
|
144
|
+
const scope = fx.instanceId ? {
|
|
145
|
+
instanceId: fx.instanceId
|
|
146
|
+
} : {};
|
|
147
|
+
|
|
148
|
+
// Concurrent-writer guard: if the key no longer holds the value WE
|
|
149
|
+
// wrote, someone else wrote after us and a blind restore would
|
|
150
|
+
// destroy their newer value. Best-effort — an unreadable key still
|
|
151
|
+
// restores, because a failed read must not strand the undo.
|
|
152
|
+
if (fx.wrote !== undefined) {
|
|
153
|
+
const readAction = fx.action === "mmkv.set" ? "mmkv.get" : "async.getItem";
|
|
154
|
+
try {
|
|
155
|
+
const current = await dispatch(fx.toolId, readAction, {
|
|
156
|
+
...scope,
|
|
157
|
+
key: fx.key
|
|
158
|
+
});
|
|
159
|
+
const rec = current && typeof current === "object" ? current : undefined;
|
|
160
|
+
const value = rec ? rec.value : current;
|
|
161
|
+
if (rec?.found !== false && value !== undefined && value !== fx.wrote) {
|
|
162
|
+
return "This value was changed again after Ask Buoy wrote it — left the newer value alone";
|
|
163
|
+
}
|
|
164
|
+
} catch {
|
|
165
|
+
/* unreadable now; proceed with the restore */
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (fx.before === undefined) {
|
|
169
|
+
if (!fx.removeAction) return "No remove action known for this key";
|
|
170
|
+
await dispatch(fx.toolId, fx.removeAction, {
|
|
171
|
+
...scope,
|
|
172
|
+
key: fx.key
|
|
173
|
+
});
|
|
174
|
+
} else {
|
|
175
|
+
await dispatch(fx.toolId, fx.action, {
|
|
176
|
+
...scope,
|
|
177
|
+
key: fx.key,
|
|
178
|
+
value: fx.before
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
case "state-write":
|
|
184
|
+
return "This change can't be undone automatically";
|
|
185
|
+
case "transient":
|
|
186
|
+
return undefined;
|
|
187
|
+
}
|
|
188
|
+
entry.undoneAt = Date.now();
|
|
189
|
+
entry.undoError = undefined;
|
|
190
|
+
this.touch();
|
|
191
|
+
return undefined;
|
|
192
|
+
} catch (err) {
|
|
193
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
194
|
+
entry.undoError = msg;
|
|
195
|
+
this.touch();
|
|
196
|
+
return msg;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** Undo everything still outstanding, newest first. */
|
|
201
|
+
async revertAll(dispatch) {
|
|
202
|
+
const outcome = {
|
|
203
|
+
reverted: 0,
|
|
204
|
+
failed: [],
|
|
205
|
+
skippedTransients: 0
|
|
206
|
+
};
|
|
207
|
+
const pending = [...this.entries].filter(e => !e.undoneAt).reverse();
|
|
208
|
+
for (const entry of pending) {
|
|
209
|
+
if (entry.effect.kind === "transient") {
|
|
210
|
+
outcome.skippedTransients += 1;
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
const error = await this.revertOne(entry, dispatch);
|
|
214
|
+
if (error) outcome.failed.push({
|
|
215
|
+
label: entry.effect.label,
|
|
216
|
+
error
|
|
217
|
+
});else outcome.reverted += 1;
|
|
218
|
+
}
|
|
219
|
+
this.emit();
|
|
220
|
+
return outcome;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isReversible","effect","kind","seq","EffectLedger","entries","listeners","Set","record","toolId","action","entry","id","Date","now","at","emit","list","touch","reversible","filter","e","undoneAt","transients","isEmpty","every","undefined","subscribe","fn","add","delete","clear","noteExternalRevert","params","changed","mark","match","undoError","ruleId","revertOne","dispatch","fx","scope","instanceId","wrote","readAction","current","key","rec","value","found","before","removeAction","err","msg","Error","message","String","revertAll","outcome","reverted","failed","skippedTransients","pending","reverse","error","push","label"],"sourceRoot":"../../../src","sources":["effects/ledger.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Turn a completed mutation into a ledger entry.
|
|
5
|
+
*
|
|
6
|
+
* The shape is Scenarios' `extractEffect`, but the classification here is much
|
|
7
|
+
* more conservative, because auditing the catalog's undo claims found almost
|
|
8
|
+
* all of them unsound: the information needed to reverse a call usually does
|
|
9
|
+
* not survive the call. So an effect is only marked reversible when THIS
|
|
10
|
+
* module can point at the exact input the reversal needs.
|
|
11
|
+
*
|
|
12
|
+
* Everything else becomes `state-write` (changed something, no automatic
|
|
13
|
+
* inverse) or `transient` (one-shot). Both are shown to the user as such. A
|
|
14
|
+
* banner that says "4 changes" and then reverses one of them is worse than a
|
|
15
|
+
* banner that admits three of them are permanent.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { describeCall } from "../policy/policy";
|
|
19
|
+
export function effectFor(toolId, descriptor, params, result, before) {
|
|
20
|
+
const label = describeCall(toolId, descriptor, params);
|
|
21
|
+
const rec = result ?? {};
|
|
22
|
+
|
|
23
|
+
// A network override rule. Reversible ONLY when we created it: `upsert` with
|
|
24
|
+
// an id that already exists UPDATES that rule in place, so deleting it would
|
|
25
|
+
// destroy a rule the user had set up themselves rather than undo our change.
|
|
26
|
+
// The model supplying no id is the create case.
|
|
27
|
+
if (toolId === "network" && descriptor.action === "upsertOverrideRule") {
|
|
28
|
+
const rule = rec.rule;
|
|
29
|
+
const ruleId = rule?.id ?? rec.id;
|
|
30
|
+
const wasCreate = params.id === undefined;
|
|
31
|
+
if (ruleId && wasCreate) return {
|
|
32
|
+
kind: "network-override",
|
|
33
|
+
ruleId,
|
|
34
|
+
label
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
kind: "state-write",
|
|
38
|
+
toolId,
|
|
39
|
+
action: descriptor.action,
|
|
40
|
+
label
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Impersonation. `stopImpersonation` restores the identity but ALSO re-runs
|
|
45
|
+
// the data nuke — it clears react-query, redux, AsyncStorage and MMKV per
|
|
46
|
+
// the app's dataNukeSettings. So this is reversible in the sense that
|
|
47
|
+
// matters (the user stops being someone else) and the label has to say the
|
|
48
|
+
// rest out loud, because caches do not come back.
|
|
49
|
+
if (toolId === "impersonate" && descriptor.action === "startImpersonation") {
|
|
50
|
+
return {
|
|
51
|
+
kind: "impersonation",
|
|
52
|
+
label: `${label} — stopping also clears cached app data`
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Storage, reversible because we read the old value first (see captureBefore).
|
|
57
|
+
// `before` is undefined when the pre-read could not be made — an MMKV write
|
|
58
|
+
// with no instance, a secure key behind biometrics — and that must fall
|
|
59
|
+
// through to a one-off rather than claim an undo it cannot perform.
|
|
60
|
+
if (toolId === "storage" && typeof params.key === "string" && before) {
|
|
61
|
+
const isMmkv = descriptor.action.startsWith("mmkv.");
|
|
62
|
+
const writeAction = isMmkv ? "mmkv.set" : "async.setItem";
|
|
63
|
+
return {
|
|
64
|
+
kind: "storage-write",
|
|
65
|
+
toolId,
|
|
66
|
+
action: writeAction,
|
|
67
|
+
key: params.key,
|
|
68
|
+
instanceId: isMmkv && typeof params.instanceId === "string" ? params.instanceId : undefined,
|
|
69
|
+
before: before.had ? before.value : undefined,
|
|
70
|
+
wrote: typeof params.value === "string" ? params.value : undefined,
|
|
71
|
+
removeAction: isMmkv ? "mmkv.remove" : "async.removeItem",
|
|
72
|
+
label
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Wipes with no captured prior state are permanent. Say so rather than
|
|
77
|
+
// filing them under something Undo appears to cover.
|
|
78
|
+
if (descriptor.effect === "destructive") {
|
|
79
|
+
return {
|
|
80
|
+
kind: "state-write",
|
|
81
|
+
toolId,
|
|
82
|
+
action: descriptor.action,
|
|
83
|
+
label
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
kind: "transient",
|
|
88
|
+
label
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=effectFor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describeCall","effectFor","toolId","descriptor","params","result","before","label","rec","action","rule","ruleId","id","wasCreate","undefined","kind","key","isMmkv","startsWith","writeAction","instanceId","had","value","wrote","removeAction","effect"],"sourceRoot":"../../../src","sources":["engine/effectFor.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,YAAY,QAAQ,kBAAkB;AAE/C,OAAO,SAASC,SAASA,CACvBC,MAAc,EACdC,UAA4B,EAC5BC,MAA+B,EAC/BC,MAAe,EACfC,MAAoD,EACzB;EAC3B,MAAMC,KAAK,GAAGP,YAAY,CAACE,MAAM,EAAEC,UAAU,EAAEC,MAAM,CAAC;EACtD,MAAMI,GAAG,GAAIH,MAAM,IAAI,CAAC,CAA6B;;EAErD;EACA;EACA;EACA;EACA,IAAIH,MAAM,KAAK,SAAS,IAAIC,UAAU,CAACM,MAAM,KAAK,oBAAoB,EAAE;IACtE,MAAMC,IAAI,GAAGF,GAAG,CAACE,IAA2C;IAC5D,MAAMC,MAAM,GAAID,IAAI,EAAEE,EAAE,IAAIJ,GAAG,CAACI,EAAyB;IACzD,MAAMC,SAAS,GAAGT,MAAM,CAACQ,EAAE,KAAKE,SAAS;IACzC,IAAIH,MAAM,IAAIE,SAAS,EAAE,OAAO;MAAEE,IAAI,EAAE,kBAAkB;MAAEJ,MAAM;MAAEJ;IAAM,CAAC;IAC3E,OAAO;MAAEQ,IAAI,EAAE,aAAa;MAAEb,MAAM;MAAEO,MAAM,EAAEN,UAAU,CAACM,MAAM;MAAEF;IAAM,CAAC;EAC1E;;EAEA;EACA;EACA;EACA;EACA;EACA,IAAIL,MAAM,KAAK,aAAa,IAAIC,UAAU,CAACM,MAAM,KAAK,oBAAoB,EAAE;IAC1E,OAAO;MACLM,IAAI,EAAE,eAAe;MACrBR,KAAK,EAAE,GAAGA,KAAK;IACjB,CAAC;EACH;;EAEA;EACA;EACA;EACA;EACA,IAAIL,MAAM,KAAK,SAAS,IAAI,OAAOE,MAAM,CAACY,GAAG,KAAK,QAAQ,IAAIV,MAAM,EAAE;IACpE,MAAMW,MAAM,GAAGd,UAAU,CAACM,MAAM,CAACS,UAAU,CAAC,OAAO,CAAC;IACpD,MAAMC,WAAW,GAAGF,MAAM,GAAG,UAAU,GAAG,eAAe;IACzD,OAAO;MACLF,IAAI,EAAE,eAAe;MACrBb,MAAM;MACNO,MAAM,EAAEU,WAAW;MACnBH,GAAG,EAAEZ,MAAM,CAACY,GAAG;MACfI,UAAU,EACRH,MAAM,IAAI,OAAOb,MAAM,CAACgB,UAAU,KAAK,QAAQ,GAAGhB,MAAM,CAACgB,UAAU,GAAGN,SAAS;MACjFR,MAAM,EAAEA,MAAM,CAACe,GAAG,GAAGf,MAAM,CAACgB,KAAK,GAAGR,SAAS;MAC7CS,KAAK,EAAE,OAAOnB,MAAM,CAACkB,KAAK,KAAK,QAAQ,GAAGlB,MAAM,CAACkB,KAAK,GAAGR,SAAS;MAClEU,YAAY,EAAEP,MAAM,GAAG,aAAa,GAAG,kBAAkB;MACzDV;IACF,CAAC;EACH;;EAEA;EACA;EACA,IAAIJ,UAAU,CAACsB,MAAM,KAAK,aAAa,EAAE;IACvC,OAAO;MAAEV,IAAI,EAAE,aAAa;MAAEb,MAAM;MAAEO,MAAM,EAAEN,UAAU,CAACM,MAAM;MAAEF;IAAM,CAAC;EAC1E;EAEA,OAAO;IAAEQ,IAAI,EAAE,WAAW;IAAER;EAAM,CAAC;AACrC","ignoreList":[]}
|