@ai-ecoverse/slicc-spectrum 1.97.0 → 1.98.1
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/README.md +7 -5
- package/dist/{chunk-YUDOYEMB.js → chunk-LOQJK2JE.js} +10 -2
- package/dist/{chunk-YUDOYEMB.js.map → chunk-LOQJK2JE.js.map} +2 -2
- package/dist/slicc-dummy.js +44 -22
- package/dist/slicc-dummy.js.map +3 -3
- package/dist/slicc-kernel-model.js +1 -1
- package/dist/slicc-ui.js +2840 -2604
- package/dist/slicc-ui.js.map +4 -4
- package/dist/types/app/memory.d.ts +15 -3
- package/dist/types/dummy/vault.d.ts +6 -0
- package/dist/types/model/types.d.ts +2 -0
- package/package.json +2 -2
package/dist/slicc-dummy.js
CHANGED
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
skillEdit,
|
|
25
25
|
tabs,
|
|
26
26
|
terminals
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-LOQJK2JE.js";
|
|
28
28
|
import {
|
|
29
29
|
Emitter
|
|
30
30
|
} from "./chunk-T5NHW4KC.js";
|
|
@@ -705,7 +705,7 @@ function guestTranscript(now2 = Date.now(), twin = false) {
|
|
|
705
705
|
function refusal() {
|
|
706
706
|
return Object.assign(new Error(guestOnly), { code: "EACCES" });
|
|
707
707
|
}
|
|
708
|
-
function closed(name2,
|
|
708
|
+
function closed(name2, refused2) {
|
|
709
709
|
return new Proxy(
|
|
710
710
|
{},
|
|
711
711
|
{
|
|
@@ -713,7 +713,7 @@ function closed(name2, refused) {
|
|
|
713
713
|
if (key === "on") return () => () => void 0;
|
|
714
714
|
if (typeof key !== "string" || key === "then") return void 0;
|
|
715
715
|
return () => {
|
|
716
|
-
|
|
716
|
+
refused2.push(`${name2}.${key}`);
|
|
717
717
|
return Promise.reject(refusal());
|
|
718
718
|
};
|
|
719
719
|
}
|
|
@@ -729,13 +729,13 @@ var DummyGuestAgent = class extends Emitter {
|
|
|
729
729
|
#clock;
|
|
730
730
|
#next = 1;
|
|
731
731
|
#reviews = 0;
|
|
732
|
-
constructor(cone, messages, seat, time,
|
|
732
|
+
constructor(cone, messages, seat, time, refused2) {
|
|
733
733
|
super();
|
|
734
734
|
this.#cone = { ...cone };
|
|
735
735
|
this.#messages = structuredClone([...messages]);
|
|
736
736
|
this.#seat = seat;
|
|
737
737
|
this.#clock = time;
|
|
738
|
-
this.refused =
|
|
738
|
+
this.refused = refused2;
|
|
739
739
|
}
|
|
740
740
|
list() {
|
|
741
741
|
return [{ ...this.#cone }];
|
|
@@ -903,9 +903,9 @@ var DummyGuestAgent = class extends Emitter {
|
|
|
903
903
|
};
|
|
904
904
|
var GuestSprinkles = class extends Emitter {
|
|
905
905
|
#refused;
|
|
906
|
-
constructor(
|
|
906
|
+
constructor(refused2) {
|
|
907
907
|
super();
|
|
908
|
-
this.#refused =
|
|
908
|
+
this.#refused = refused2;
|
|
909
909
|
}
|
|
910
910
|
list() {
|
|
911
911
|
return [forecastSprinkle];
|
|
@@ -921,7 +921,7 @@ function createGuestModel({
|
|
|
921
921
|
storage = null
|
|
922
922
|
} = {}) {
|
|
923
923
|
const time = clock(delay);
|
|
924
|
-
const
|
|
924
|
+
const refused2 = [];
|
|
925
925
|
const seat = guestSeat(scenario);
|
|
926
926
|
const cone = agents.find((agent2) => agent2.id === seat.agentId);
|
|
927
927
|
const agent = new DummyGuestAgent(
|
|
@@ -929,20 +929,20 @@ function createGuestModel({
|
|
|
929
929
|
history === "none" ? [] : guestTranscript(Date.now(), history === "twin"),
|
|
930
930
|
seat,
|
|
931
931
|
time,
|
|
932
|
-
|
|
932
|
+
refused2
|
|
933
933
|
);
|
|
934
934
|
return {
|
|
935
935
|
seat,
|
|
936
936
|
agent,
|
|
937
|
-
refused,
|
|
937
|
+
refused: refused2,
|
|
938
938
|
settings: new DummySettings(defaults, [], [], storage, time, [guestSettingsKey]),
|
|
939
|
-
sprinkles: new GuestSprinkles(
|
|
940
|
-
files: closed("files",
|
|
941
|
-
terminals: closed("terminals",
|
|
942
|
-
browser: closed("browser",
|
|
943
|
-
memory: closed("memory",
|
|
944
|
-
monitor: closed("monitor",
|
|
945
|
-
tray: closed("tray",
|
|
939
|
+
sprinkles: new GuestSprinkles(refused2),
|
|
940
|
+
files: closed("files", refused2),
|
|
941
|
+
terminals: closed("terminals", refused2),
|
|
942
|
+
browser: closed("browser", refused2),
|
|
943
|
+
memory: closed("memory", refused2),
|
|
944
|
+
monitor: closed("monitor", refused2),
|
|
945
|
+
tray: closed("tray", refused2)
|
|
946
946
|
};
|
|
947
947
|
}
|
|
948
948
|
|
|
@@ -1012,8 +1012,8 @@ var DummyGuests = class extends Emitter {
|
|
|
1012
1012
|
}
|
|
1013
1013
|
async mint(agentId, draft) {
|
|
1014
1014
|
await this.#clock.sleep(4);
|
|
1015
|
-
const
|
|
1016
|
-
if (
|
|
1015
|
+
const refused2 = this.unavailable() ?? (this.scenario === "fail" ? guestsRefused : null);
|
|
1016
|
+
if (refused2) throw new Error(refused2);
|
|
1017
1017
|
this.#count += 1;
|
|
1018
1018
|
const now2 = Date.now();
|
|
1019
1019
|
const seat = {
|
|
@@ -3291,7 +3291,7 @@ var memories = [
|
|
|
3291
3291
|
scope: "cone-harbor",
|
|
3292
3292
|
section: "Conventions",
|
|
3293
3293
|
title: "Cache keys",
|
|
3294
|
-
body: "Cache keys are `city:UTC-date`. Never key on local time.",
|
|
3294
|
+
body: "Cache keys are `city:UTC-date`. Never key on local time.\n\nThe warmer fills the next day\u2019s keys at 23:00 UTC, so a key built from local time misses it and every request goes upstream until midnight. `npm run cache:check` lists the keys that don\u2019t match.",
|
|
3295
3295
|
tag: "project",
|
|
3296
3296
|
updatedAt: now - 2 * day4
|
|
3297
3297
|
},
|
|
@@ -5392,6 +5392,11 @@ function vaultSecrets(now2 = Date.now()) {
|
|
|
5392
5392
|
}
|
|
5393
5393
|
];
|
|
5394
5394
|
}
|
|
5395
|
+
function refused(settings) {
|
|
5396
|
+
const bad = Object.entries(settings).find(([, value]) => value.startsWith("bad"));
|
|
5397
|
+
if (bad)
|
|
5398
|
+
throw vaultFailure("EINVAL", `The vault refused ${bad[0]}. Check that value and try again.`);
|
|
5399
|
+
}
|
|
5395
5400
|
function accountRecords(now2 = Date.now(), pin) {
|
|
5396
5401
|
return [
|
|
5397
5402
|
{
|
|
@@ -5790,6 +5795,7 @@ var DummyVault = class extends Emitter {
|
|
|
5790
5795
|
buttons = [];
|
|
5791
5796
|
puts = [];
|
|
5792
5797
|
endpointChanges = [];
|
|
5798
|
+
settingsCalls = [];
|
|
5793
5799
|
#refuses;
|
|
5794
5800
|
cancelled = [];
|
|
5795
5801
|
imports = [];
|
|
@@ -5933,17 +5939,33 @@ var DummyVault = class extends Emitter {
|
|
|
5933
5939
|
const problem = nameProblem(name2) ?? valueProblem(value);
|
|
5934
5940
|
if (problem) throw vaultFailure("EINVAL", problem);
|
|
5935
5941
|
if (request !== void 0) this.#take(request, name2);
|
|
5942
|
+
if (options?.settings) refused(options.settings);
|
|
5936
5943
|
this.puts.push({
|
|
5937
5944
|
name: name2,
|
|
5938
5945
|
...request === void 0 ? {} : { request },
|
|
5939
5946
|
...options ? { options: { ...options } } : {}
|
|
5940
5947
|
});
|
|
5941
|
-
const { kind = "secret", provider, server } = options ?? {};
|
|
5948
|
+
const { kind = "secret", provider, server, settings } = options ?? {};
|
|
5942
5949
|
return this.#seal(name2, "settings", kind, {
|
|
5943
5950
|
...provider === void 0 ? {} : { provider },
|
|
5944
|
-
...server === void 0 ? {} : { server }
|
|
5951
|
+
...server === void 0 ? {} : { server },
|
|
5952
|
+
...settings === void 0 ? {} : { settings: { ...settings } }
|
|
5945
5953
|
});
|
|
5946
5954
|
}
|
|
5955
|
+
async settings(name2, kind, settings) {
|
|
5956
|
+
await this.#time.sleep(5);
|
|
5957
|
+
this.#unlocked();
|
|
5958
|
+
const secret = this.#find(name2, kind);
|
|
5959
|
+
refused(settings);
|
|
5960
|
+
this.settingsCalls.push({ name: name2, kind, settings: { ...settings } });
|
|
5961
|
+
this.#list = {
|
|
5962
|
+
...this.#list,
|
|
5963
|
+
secrets: this.#list.secrets.map(
|
|
5964
|
+
(item) => item === secret ? { ...item, settings: { ...settings } } : item
|
|
5965
|
+
)
|
|
5966
|
+
};
|
|
5967
|
+
this.emit("list", this.#list);
|
|
5968
|
+
}
|
|
5947
5969
|
#take(request, name2) {
|
|
5948
5970
|
const found = this.#status.waiting.find((item) => item.id === request);
|
|
5949
5971
|
if (!found) throw vaultFailure("ENOENT", "That request is no longer waiting.");
|