@intentic/constants 1.394.0 → 1.396.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./provider-logos.js";
2
2
  export * from "./profile.js";
3
+ export * from "./sandbox-mode.js";
3
4
  export * from "./hosted-tiers.js";
4
5
  export * from "./turn-preamble.js";
5
6
  export declare const WORKSPACE_ROOT = "/work";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./provider-logos.js";
2
2
  export * from "./profile.js";
3
+ export * from "./sandbox-mode.js";
3
4
  export * from "./hosted-tiers.js";
4
5
  export * from "./turn-preamble.js";
5
6
  export const WORKSPACE_ROOT = "/work";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/profile.d.ts CHANGED
@@ -1,23 +1,14 @@
1
+ import type { SandboxMode } from "./sandbox-mode.js";
1
2
  export declare const PROFILE_PARAM = "profile";
2
3
  export declare const PROFILE_STORAGE_KEY = "ui-profile";
3
4
  export declare const PROFILE_COOKIE = "variant";
4
5
  export declare const sharedCookieDomain: (originA: string, originB: string) => string | undefined;
5
6
  export declare const PROFILE_IDS: readonly ["default", "desk"];
6
7
  export type Profile = (typeof PROFILE_IDS)[number];
7
- export type ProfileScheme = "system" | "light" | "dark";
8
- export type ProfileSkin = "system" | "none" | "sanctum" | "silver";
9
- export type ProfileAudience = "developer" | "maker";
10
- export declare const PROFILE_KEYS: {
11
- readonly scheme: "ui-color-scheme";
12
- readonly skin: "ui-skin";
13
- readonly audience: "ui-audience";
14
- };
15
- export interface ProfileLook {
16
- readonly scheme: ProfileScheme;
17
- readonly skin: ProfileSkin;
18
- readonly audience?: ProfileAudience;
8
+ export interface ProfileArrival {
9
+ readonly mode?: SandboxMode;
19
10
  }
20
- export declare const PROFILES: Record<Profile, ProfileLook>;
11
+ export declare const PROFILES: Record<Profile, ProfileArrival>;
21
12
  export declare const DEFAULT_PROFILE: Profile;
22
13
  export declare const isProfile: (value: unknown) => value is Profile;
23
14
  //# sourceMappingURL=profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,aAAa,YAAY,CAAC;AAGvC,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAQhD,eAAO,MAAM,cAAc,YAAY,CAAC;AAMxC,eAAO,MAAM,kBAAkB,YAAa,MAAM,WAAW,MAAM,KAAG,MAAM,GAAG,SAa9E,CAAC;AAGF,eAAO,MAAM,WAAW,YAAI,SAAS,EAAE,MAAM,CAAU,CAAC;AAExD,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAInD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AACnE,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC;AAGpD,eAAO,MAAM,YAAY;aAErB,MAAM,EAAE,iBAAiB;aAEzB,IAAI,EAAE,SAAS;aAEf,QAAQ,EAAE,aAAa;CACjB,CAAC;AAEX,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;CACvC;AAID,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CAGjD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAAmB,CAAC;AAElD,eAAO,MAAM,SAAS,UAAW,OAAO,KAAG,KAAK,IAAI,OAAiD,CAAC"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgBrD,eAAO,MAAM,aAAa,YAAY,CAAC;AAGvC,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAMhD,eAAO,MAAM,cAAc,YAAY,CAAC;AAMxC,eAAO,MAAM,kBAAkB,YAAa,MAAM,WAAW,MAAM,KAAG,MAAM,GAAG,SAa9E,CAAC;AAGF,eAAO,MAAM,WAAW,YAAI,SAAS,EAAE,MAAM,CAAU,CAAC;AAExD,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAGnD,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;CAC/B;AAID,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,CAGpD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAAmB,CAAC;AAElD,eAAO,MAAM,SAAS,UAAW,OAAO,KAAG,KAAK,IAAI,OAAiD,CAAC"}
package/dist/profile.js CHANGED
@@ -15,14 +15,9 @@ export const sharedCookieDomain = (originA, originB) => {
15
15
  return shared.length >= 2 && shared.every((label) => !/^\d+$/u.test(label)) ? shared.join(".") : undefined;
16
16
  };
17
17
  export const PROFILE_IDS = ["default", "desk"];
18
- export const PROFILE_KEYS = {
19
- scheme: "ui-color-scheme",
20
- skin: "ui-skin",
21
- audience: "ui-audience",
22
- };
23
18
  export const PROFILES = {
24
- default: { scheme: "system", skin: "system" },
25
- desk: { scheme: "light", skin: "none", audience: "maker" },
19
+ default: {},
20
+ desk: { mode: "hands-off" },
26
21
  };
27
22
  export const DEFAULT_PROFILE = "default";
28
23
  export const isProfile = (value) => PROFILE_IDS.includes(value);
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AAGvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAQhD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAMxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,OAAe,EAAsB,EAAE;IACvF,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAY,CAAC,CAAC;QAClC,CAAC,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/G,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAWxD,MAAM,CAAC,MAAM,YAAY,GAAG;IAExB,MAAM,EAAE,iBAAiB;IAEzB,IAAI,EAAE,SAAS;IAEf,QAAQ,EAAE,aAAa;CACjB,CAAC;AAWX,MAAM,CAAC,MAAM,QAAQ,GAAiC;IAClD,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC7C,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAY,SAAS,CAAC;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAoB,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AAGvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAMhD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAMxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,OAAe,EAAsB,EAAE;IACvF,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAY,CAAC,CAAC;QAClC,CAAC,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/G,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC;AAWxD,MAAM,CAAC,MAAM,QAAQ,GAAoC;IACrD,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAY,SAAS,CAAC;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAoB,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAgB,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const SANDBOX_MODES: readonly ["hands-on", "hands-off"];
2
+ export type SandboxMode = (typeof SANDBOX_MODES)[number];
3
+ export declare const DEFAULT_SANDBOX_MODE: SandboxMode;
4
+ export declare const isSandboxMode: (value: string | null | undefined) => value is SandboxMode;
5
+ //# sourceMappingURL=sandbox-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-mode.d.ts","sourceRoot":"","sources":["../src/sandbox-mode.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,aAAa,YAAI,UAAU,EAAE,WAAW,CAAU,CAAC;AAEhE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAGzD,eAAO,MAAM,oBAAoB,EAAE,WAAwB,CAAC;AAG5D,eAAO,MAAM,aAAa,UAAW,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,KAAK,IAAI,WAA2D,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const SANDBOX_MODES = ["hands-on", "hands-off"];
2
+ export const DEFAULT_SANDBOX_MODE = "hands-on";
3
+ export const isSandboxMode = (value) => SANDBOX_MODES.some((mode) => mode === value);
4
+ //# sourceMappingURL=sandbox-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-mode.js","sourceRoot":"","sources":["../src/sandbox-mode.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,WAAW,CAAU,CAAC;AAKhE,MAAM,CAAC,MAAM,oBAAoB,GAAgB,UAAU,CAAC;AAG5D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAgC,EAAwB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentic/constants",
3
- "version": "1.394.0",
3
+ "version": "1.396.0",
4
4
  "description": "Shared constants for the intentic packages, ports, paths, and image references the daemon, CLIs and desktop app all agree on",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/allow.mjs CHANGED
@@ -54,7 +54,17 @@ export const allowingLine = (lines, line, check) => {
54
54
  /** Whether the site on 1-based `line` of `lines` carries a pragma for `check` (`allowingLine`). */
55
55
  export const allowedAt = (lines, line, check) => allowingLine(lines, line, check) !== undefined;
56
56
 
57
- const TRAILER = /^Allow:[ \t]*([\w./-]+?)[ \t]*(?:—|–|:|-{1,2})[ \t]*(\S.*?)[ \t]*$/gm;
57
+ // The reason runs to the line's end and its trailing blanks are trimmed after: a lazy `(\S.*?)[ \t]*$` rescans every blank
58
+ // run inside the reason.
59
+ const TRAILER = /^Allow:[ \t]*([\w./-]+?)[ \t]*(?:—|–|:|-{1,2})[ \t]*(\S.*)$/gm;
60
+
61
+ const withoutTrailingBlanks = (text) => {
62
+ let end = text.length;
63
+ while (end > 0 && (text[end - 1] === " " || text[end - 1] === "\t")) {
64
+ end -= 1;
65
+ }
66
+ return text.slice(0, end);
67
+ };
58
68
 
59
69
  /** Every `Allow: <check> — <reason>` line in a commit message or a trailer listing, in order. */
60
- export const allowTrailers = (text) => [...text.matchAll(TRAILER)].map(([, check, reason]) => ({ check, reason }));
70
+ export const allowTrailers = (text) => [...text.matchAll(TRAILER)].map(([, check, reason]) => ({ check, reason: withoutTrailingBlanks(reason) }));
@@ -307,7 +307,8 @@ const assertStatements = (code, text) => {
307
307
  const assertMethods = (code, text) => {
308
308
  const totals = { exact: 0, loose: 0, chars: 0 };
309
309
  for (const match of code.matchAll(PY_METHOD)) {
310
- const name = match[0].slice(0, match[0].search(/\s*\(/));
310
+ // The match ends at its `(`; the blanks before it are trimmed rather than searched for, which rescans each run.
311
+ const name = match[0].slice(0, -1).trimEnd();
311
312
  // A name in neither set (assertRaises, a project helper) counts as neither, and its text is not counted.
312
313
  if (!pyExact.has(name) && !pyLoose.has(name)) {
313
314
  continue;
package/src/index.ts CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  export * from "./provider-logos.js";
5
5
  export * from "./profile.js";
6
+ export * from "./sandbox-mode.js";
6
7
  export * from "./hosted-tiers.js";
7
8
  export * from "./turn-preamble.js";
8
9
 
package/src/profile.ts CHANGED
@@ -1,24 +1,28 @@
1
+ import type { SandboxMode } from "./sandbox-mode.js";
2
+
1
3
  // A PROFILE is one named answer to "who is arriving", decided at intentic.dev and carried to the app on the link they
2
- // click. It has three halves and they land in three different stores, because they have three different lifetimes: the
3
- // look and the audience are facts about a browser (localStorage, seeded before first paint), and the sandbox defaults
4
- // are facts about a sandbox (a definition seed applied once, at its first boot).
4
+ // click. It decides nothing by itself any more (2026-11). All it still says is which answer the app preselects when
5
+ // this reader makes a sandbox ("Who handles the code here?"), a question they see and can answer the other way.
6
+ //
7
+ // It used to seed the look and the audience into the browser, and a definition into the sandbox, which let one link
8
+ // decide every sandbox that browser would ever open. Those are now three different owners: how a sandbox runs is the
9
+ // sandbox's own setting (sandbox-mode.ts), the words follow that setting unless a person overrides them for
10
+ // themselves, and how the app looks belongs to the person and travels with their account.
5
11
  //
6
12
  // Here so the site, the app's pre-paint script and the platform cannot drift on the names; every value below is
7
- // spelled somewhere that cannot import it (an inline <script>, a TOML file), and each of those places is pinned by a
8
- // test that reads this module.
13
+ // spelled somewhere that cannot import it (an inline <script>), and that place is pinned by a test that reads this
14
+ // module.
9
15
 
10
16
  /** Names the profile on a link from the site to the app. */
11
17
  export const PROFILE_PARAM = "profile";
12
18
 
13
- /** Where the app remembers which profile brought this browser; read long after the link that carried it is gone. */
19
+ /** Where the app remembers which profile brought this browser: read when it asks how a new sandbox should run. */
14
20
  export const PROFILE_STORAGE_KEY = "ui-profile";
15
21
 
16
- // THE COOKIE IS THE SECOND WAY A PROFILE REACHES THE APP, and the only one that survives an installer. The site
17
- // writes it on the registrable domain both origins share (sharedCookieDomain), so app.intentic.dev reads it too: a
18
- // reader who took the desktop app from intentic.dev/desk never clicked a link into the app, and the sign-in page the
19
- // app opens in their browser is the first thing on the app's origin they meet. `desk` means the desk profile; any
20
- // other value is the site's way out, which is the default profile; absent is no opinion.
21
- /** The site's edition cookie, readable by the app. */
22
+ // The site's edition cookie. Only the site reads it now, to keep its own skin from page to page; the app stopped
23
+ // taking a profile from it in 2026-11, since a cookie nobody sees deciding how a sandbox runs is exactly what the
24
+ // creation question replaced. Still set on the registrable domain both origins share (sharedCookieDomain).
25
+ /** The site's edition cookie. */
22
26
  export const PROFILE_COOKIE = "variant";
23
27
 
24
28
  /**
@@ -45,34 +49,16 @@ export const PROFILE_IDS = ["default", "desk"] as const;
45
49
 
46
50
  export type Profile = (typeof PROFILE_IDS)[number];
47
51
 
48
- // `system` is the stored spelling of "nobody has chosen": the scheme follows `prefers-color-scheme` and the skin
49
- // follows the scheme. It is a value rather than an absence so a profile can hand a browser back to it.
50
- export type ProfileScheme = "system" | "light" | "dark";
51
- export type ProfileSkin = "system" | "none" | "sanctum" | "silver";
52
- export type ProfileAudience = "developer" | "maker";
53
-
54
- /** The localStorage keys a profile seeds, each owned by the composable named beside it. */
55
- export const PROFILE_KEYS = {
56
- // _editor/ui/src/composables/useTheme.ts
57
- scheme: "ui-color-scheme",
58
- // _editor/web/src/skins/useSkin.ts
59
- skin: "ui-skin",
60
- // _editor/web/src/app/useAudience.ts
61
- audience: "ui-audience",
62
- } as const;
63
-
64
- export interface ProfileLook {
65
- readonly scheme: ProfileScheme;
66
- readonly skin: ProfileSkin;
67
- // Absent means the profile does not answer it: AudienceAsk still asks, which is what `default` wants.
68
- readonly audience?: ProfileAudience;
52
+ /** What a profile still says on arrival: the answer preselected where a sandbox is made, if it has one. */
53
+ export interface ProfileArrival {
54
+ readonly mode?: SandboxMode;
69
55
  }
70
56
 
71
- // `default` is listed, not implied, because it is also the way back: a profile may overwrite what the last profile
72
- // wrote, so `?profile=default` undoes a desk link for anyone who has not since chosen for themselves.
73
- export const PROFILES: Record<Profile, ProfileLook> = {
74
- default: { scheme: "system", skin: "system" },
75
- desk: { scheme: "light", skin: "none", audience: "maker" },
57
+ // `default` is listed, not implied, because it is also the way back: `?profile=default` replaces a desk link's
58
+ // preselect for a reader who came back by the developer's page.
59
+ export const PROFILES: Record<Profile, ProfileArrival> = {
60
+ default: {},
61
+ desk: { mode: "hands-off" },
76
62
  };
77
63
 
78
64
  export const DEFAULT_PROFILE: Profile = "default";
@@ -0,0 +1,20 @@
1
+ // HOW A SANDBOX RUNS, a fact about the sandbox rather than about whoever is looking at it. It is chosen where the
2
+ // sandbox is made ("Who handles the code here?"), kept in its own settings (settings.json `mode`), and a maintainer can
3
+ // change it later.
4
+ //
5
+ // - hands-on: you review and ship the work. Every setting is yours, as it always was.
6
+ // - hands-off: the sandbox lands finished work, saves it as a version and backs it up, and owns those settings. Its
7
+ // editor speaks plain words to everyone who has not chosen otherwise for themselves.
8
+ //
9
+ // Here, not in the sandbox contract, because the platform takes it when it provisions a machine, the site preselects
10
+ // it, and both name it without importing the sandbox's schemas.
11
+
12
+ export const SANDBOX_MODES = ["hands-on", "hands-off"] as const;
13
+
14
+ export type SandboxMode = (typeof SANDBOX_MODES)[number];
15
+
16
+ // What a sandbox that never said runs as: every sandbox from before the choice existed, which keeps behaving as it did.
17
+ export const DEFAULT_SANDBOX_MODE: SandboxMode = "hands-on";
18
+
19
+ // For a string that arrives naming a mode from outside a schema: a stored preselect, a link's query.
20
+ export const isSandboxMode = (value: string | null | undefined): value is SandboxMode => SANDBOX_MODES.some((mode) => mode === value);