things-api 0.10.0 → 0.12.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/README.md +50 -13
- package/dist/audit/schema.d.ts +7 -0
- package/dist/audit/schema.js.map +1 -1
- package/dist/cli/clock.d.ts +8 -0
- package/dist/cli/clock.js +24 -0
- package/dist/cli/clock.js.map +1 -0
- package/dist/cli/commands/area.d.ts +18 -11
- package/dist/cli/commands/area.js +61 -74
- package/dist/cli/commands/area.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +1 -2
- package/dist/cli/commands/doctor.js +11 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/install-skill.d.ts +60 -0
- package/dist/cli/commands/install-skill.js +256 -0
- package/dist/cli/commands/install-skill.js.map +1 -0
- package/dist/cli/commands/mcp.js +9 -0
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/project.d.ts +1 -0
- package/dist/cli/commands/project.js +27 -34
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/cli/commands/reads.d.ts +15 -2
- package/dist/cli/commands/reads.js +144 -44
- package/dist/cli/commands/reads.js.map +1 -1
- package/dist/cli/commands/setup.js +7 -2
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/show.js +38 -14
- package/dist/cli/commands/show.js.map +1 -1
- package/dist/cli/commands/todo.js +15 -9
- package/dist/cli/commands/todo.js.map +1 -1
- package/dist/cli/commands/writes.js +797 -174
- package/dist/cli/commands/writes.js.map +1 -1
- package/dist/cli/did-you-mean.d.ts +14 -3
- package/dist/cli/did-you-mean.js +26 -3
- package/dist/cli/did-you-mean.js.map +1 -1
- package/dist/cli/glyphs.d.ts +32 -2
- package/dist/cli/glyphs.js +83 -12
- package/dist/cli/glyphs.js.map +1 -1
- package/dist/cli/help.js +121 -16
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +33 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/move-hint.d.ts +46 -0
- package/dist/cli/move-hint.js +196 -0
- package/dist/cli/move-hint.js.map +1 -0
- package/dist/cli/period.d.ts +2 -8
- package/dist/cli/period.js +44 -30
- package/dist/cli/period.js.map +1 -1
- package/dist/cli/read-driver.d.ts +43 -5
- package/dist/cli/read-driver.js +91 -15
- package/dist/cli/read-driver.js.map +1 -1
- package/dist/cli/render.d.ts +19 -8
- package/dist/cli/render.js +70 -27
- package/dist/cli/render.js.map +1 -1
- package/dist/cli/resolve-invocation.d.ts +2 -2
- package/dist/cli/resolve-invocation.js +3 -3
- package/dist/cli/resolve-invocation.js.map +1 -1
- package/dist/cli/skill-check.d.ts +27 -0
- package/dist/cli/skill-check.js +99 -0
- package/dist/cli/skill-check.js.map +1 -0
- package/dist/cli/skill.d.ts +70 -0
- package/dist/cli/skill.js +152 -0
- package/dist/cli/skill.js.map +1 -0
- package/dist/cli/tag-filters.d.ts +6 -2
- package/dist/cli/tag-filters.js +8 -6
- package/dist/cli/tag-filters.js.map +1 -1
- package/dist/cli/verb-hint.js +28 -3
- package/dist/cli/verb-hint.js.map +1 -1
- package/dist/cli/version.d.ts +4 -0
- package/dist/cli/version.js +18 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/client.d.ts +171 -27
- package/dist/client.js +279 -40
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +66 -2
- package/dist/config.js +120 -12
- package/dist/config.js.map +1 -1
- package/dist/contracts.d.ts +186 -28
- package/dist/contracts.js +22 -1
- package/dist/contracts.js.map +1 -1
- package/dist/diagnose.d.ts +34 -2
- package/dist/diagnose.js +36 -1
- package/dist/diagnose.js.map +1 -1
- package/dist/index.d.ts +25 -9
- package/dist/index.js +22 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.js +1157 -684
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/clock.d.ts +61 -0
- package/dist/model/clock.js +71 -0
- package/dist/model/clock.js.map +1 -0
- package/dist/model/dates.d.ts +26 -3
- package/dist/model/dates.js +84 -3
- package/dist/model/dates.js.map +1 -1
- package/dist/model/entities.d.ts +60 -3
- package/dist/model/entities.js.map +1 -1
- package/dist/model/mappers.d.ts +4 -2
- package/dist/model/mappers.js +66 -9
- package/dist/model/mappers.js.map +1 -1
- package/dist/model/recurrence.d.ts +8 -1
- package/dist/model/recurrence.js.map +1 -1
- package/dist/read/area-filter.d.ts +76 -0
- package/dist/read/area-filter.js +59 -0
- package/dist/read/area-filter.js.map +1 -0
- package/dist/read/area-view.d.ts +12 -12
- package/dist/read/area-view.js +58 -34
- package/dist/read/area-view.js.map +1 -1
- package/dist/read/detail.d.ts +1 -1
- package/dist/read/detail.js +26 -12
- package/dist/read/detail.js.map +1 -1
- package/dist/read/log-boundary.d.ts +1 -1
- package/dist/read/log-boundary.js +13 -3
- package/dist/read/log-boundary.js.map +1 -1
- package/dist/read/predicates.d.ts +18 -0
- package/dist/read/predicates.js +19 -0
- package/dist/read/predicates.js.map +1 -1
- package/dist/read/project-view.d.ts +32 -16
- package/dist/read/project-view.js +80 -45
- package/dist/read/project-view.js.map +1 -1
- package/dist/read/pseudo-area.d.ts +29 -0
- package/dist/read/pseudo-area.js +27 -0
- package/dist/read/pseudo-area.js.map +1 -0
- package/dist/read/queries.d.ts +108 -19
- package/dist/read/queries.js +212 -35
- package/dist/read/queries.js.map +1 -1
- package/dist/read/scope.d.ts +126 -0
- package/dist/read/scope.js +162 -0
- package/dist/read/scope.js.map +1 -0
- package/dist/read/search-rank.d.ts +2 -5
- package/dist/read/shape.d.ts +162 -0
- package/dist/read/shape.js +686 -0
- package/dist/read/shape.js.map +1 -0
- package/dist/read/show-target.d.ts +9 -1
- package/dist/read/show-target.js +45 -4
- package/dist/read/show-target.js.map +1 -1
- package/dist/read/snapshot.d.ts +1 -1
- package/dist/read/snapshot.js +9 -2
- package/dist/read/snapshot.js.map +1 -1
- package/dist/read/stage.d.ts +199 -0
- package/dist/read/stage.js +125 -0
- package/dist/read/stage.js.map +1 -0
- package/dist/read/truncation.d.ts +8 -6
- package/dist/read/truncation.js +35 -10
- package/dist/read/truncation.js.map +1 -1
- package/dist/read/views.d.ts +61 -20
- package/dist/read/views.js +240 -82
- package/dist/read/views.js.map +1 -1
- package/dist/surface-copy.d.ts +9 -0
- package/dist/surface-copy.js +9 -0
- package/dist/surface-copy.js.map +1 -1
- package/dist/write/accessibility-probe.d.ts +1 -1
- package/dist/write/accessibility-probe.js +8 -0
- package/dist/write/accessibility-probe.js.map +1 -1
- package/dist/write/automation-probe.d.ts +1 -1
- package/dist/write/automation-probe.js +8 -0
- package/dist/write/automation-probe.js.map +1 -1
- package/dist/write/batch.d.ts +49 -10
- package/dist/write/batch.js +423 -70
- package/dist/write/batch.js.map +1 -1
- package/dist/write/commands.d.ts +1 -1
- package/dist/write/commands.js +316 -66
- package/dist/write/commands.js.map +1 -1
- package/dist/write/guards.d.ts +1 -1
- package/dist/write/guards.js +94 -10
- package/dist/write/guards.js.map +1 -1
- package/dist/write/heading.d.ts +10 -1
- package/dist/write/heading.js +35 -5
- package/dist/write/heading.js.map +1 -1
- package/dist/write/make-repeating-project.d.ts +2 -2
- package/dist/write/make-repeating-project.js +9 -9
- package/dist/write/make-repeating-project.js.map +1 -1
- package/dist/write/move.d.ts +130 -0
- package/dist/write/move.js +1533 -0
- package/dist/write/move.js.map +1 -0
- package/dist/write/operations.d.ts +105 -19
- package/dist/write/operations.js +56 -7
- package/dist/write/operations.js.map +1 -1
- package/dist/write/opid.d.ts +31 -0
- package/dist/write/opid.js +30 -0
- package/dist/write/opid.js.map +1 -0
- package/dist/write/pipeline.d.ts +122 -3
- package/dist/write/pipeline.js +309 -52
- package/dist/write/pipeline.js.map +1 -1
- package/dist/write/planner.js +8 -1
- package/dist/write/planner.js.map +1 -1
- package/dist/write/pre-state.d.ts +197 -6
- package/dist/write/pre-state.js +427 -20
- package/dist/write/pre-state.js.map +1 -1
- package/dist/write/recurrence-rule-blob.d.ts +65 -0
- package/dist/write/recurrence-rule-blob.js +150 -0
- package/dist/write/recurrence-rule-blob.js.map +1 -0
- package/dist/write/reorder.d.ts +23 -3
- package/dist/write/reorder.js +1871 -85
- package/dist/write/reorder.js.map +1 -1
- package/dist/write/reversibility.js +19 -7
- package/dist/write/reversibility.js.map +1 -1
- package/dist/write/scope-guard.d.ts +31 -0
- package/dist/write/scope-guard.js +162 -0
- package/dist/write/scope-guard.js.map +1 -0
- package/dist/write/undo.js +120 -13
- package/dist/write/undo.js.map +1 -1
- package/dist/write/vectors/applescript.js +16 -7
- package/dist/write/vectors/applescript.js.map +1 -1
- package/dist/write/vectors/registry.d.ts +5 -7
- package/dist/write/vectors/registry.js +49 -2
- package/dist/write/vectors/registry.js.map +1 -1
- package/dist/write/vectors/shortcuts.js +1 -1
- package/dist/write/vectors/shortcuts.js.map +1 -1
- package/dist/write/vectors/simulator.d.ts +44 -0
- package/dist/write/vectors/simulator.js +1192 -0
- package/dist/write/vectors/simulator.js.map +1 -0
- package/dist/write/vectors/types.d.ts +46 -0
- package/dist/write/vectors/ui-certification.d.ts +10 -4
- package/dist/write/vectors/ui-certification.js +43 -10
- package/dist/write/vectors/ui-certification.js.map +1 -1
- package/dist/write/vectors/ui-drag.d.ts +21 -1
- package/dist/write/vectors/ui-drag.js +138 -27
- package/dist/write/vectors/ui-drag.js.map +1 -1
- package/dist/write/vectors/ui-recipes.d.ts +34 -1
- package/dist/write/vectors/ui-recipes.js +217 -6
- package/dist/write/vectors/ui-recipes.js.map +1 -1
- package/dist/write/vectors/ui.d.ts +40 -1
- package/dist/write/vectors/ui.js +196 -39
- package/dist/write/vectors/ui.js.map +1 -1
- package/dist/write/verify/delta.d.ts +127 -2
- package/dist/write/verify/delta.js +255 -16
- package/dist/write/verify/delta.js.map +1 -1
- package/dist/write/verify/poller.d.ts +7 -1
- package/dist/write/verify/poller.js +20 -1
- package/dist/write/verify/poller.js.map +1 -1
- package/package.json +24 -3
- package/schema/envelope.schema.json +383 -0
- package/skills/things-cli/SKILL.md +70 -0
- package/skills/things-cli/references/banner.md +35 -0
- package/skills/things-cli/references/contracts.md +62 -0
- package/skills/things-cli/references/errors.md +49 -0
- package/skills/things-cli/references/gui.md +11 -0
- package/skills/things-cli/references/model.md +60 -0
- package/skills/things-cli/references/ordering.md +71 -0
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* equally validated candidates. Injectable for tests (FakeVector) and for
|
|
4
4
|
* the lab, which runs the identical pipeline against probe vectors.
|
|
5
5
|
*/
|
|
6
|
+
import { resolve } from "node:path";
|
|
6
7
|
import { loadConfig } from "../../config.js";
|
|
7
8
|
import { createAppleScriptVector } from "./applescript.js";
|
|
8
9
|
import { createShortcutsVector } from "./shortcuts.js";
|
|
10
|
+
import { createSimulatorVector, dbCarriesBenchMarker, simulatorFenceReason } from "./simulator.js";
|
|
9
11
|
import { createUiVector } from "./ui.js";
|
|
10
12
|
import { createUrlSchemeVector } from "./url-scheme.js";
|
|
11
13
|
/**
|
|
@@ -15,9 +17,53 @@ import { createUrlSchemeVector } from "./url-scheme.js";
|
|
|
15
17
|
* are never dispatched. `config` is read from disk when not supplied (the
|
|
16
18
|
* `things capabilities` surface has no client). `uiAux` carries the database
|
|
17
19
|
* seam the sidebar drag driver asserts between hops — the client wires it;
|
|
18
|
-
* surfaces that never execute (capabilities) omit it.
|
|
20
|
+
* surfaces that never execute (capabilities) omit it. `resolvedDbPath` is the
|
|
21
|
+
* database path the client actually opened (from openThings's resolution); it
|
|
22
|
+
* anchors the simulator fence's equality check so the applier and the pipeline's
|
|
23
|
+
* verifier can never split-brain across two different databases.
|
|
19
24
|
*/
|
|
20
|
-
export function defaultVectors(config = loadConfig(), uiAux = {}) {
|
|
25
|
+
export function defaultVectors(config = loadConfig(), uiAux = {}, resolvedDbPath) {
|
|
26
|
+
// Bench harness (Phase 0): THINGS_SIM_WRITES=1 REQUESTS simulated writes. When
|
|
27
|
+
// it is unset (the ordinary path) the real transports are returned unchanged.
|
|
28
|
+
// When it IS set, the simulator's fence MUST hold — THINGS_DB names a fenced
|
|
29
|
+
// bench fixture (marker present, not the production container) AND equals the
|
|
30
|
+
// database the client opened. If any part is unsatisfied we FAIL CLOSED with a
|
|
31
|
+
// clear error rather than silently falling through to the real transports:
|
|
32
|
+
// in this mode no url-scheme/applescript/shortcuts/ui path may reach a real app.
|
|
33
|
+
if (process.env["THINGS_SIM_WRITES"] === "1") {
|
|
34
|
+
const thingsDb = process.env["THINGS_DB"];
|
|
35
|
+
if (thingsDb === undefined || thingsDb.trim() === "") {
|
|
36
|
+
throw new Error(`${FENCE_UNSATISFIED}THINGS_DB is not set`);
|
|
37
|
+
}
|
|
38
|
+
// dbPath equality: the client-opened DB must be the fenced DB (normalized),
|
|
39
|
+
// else the applier would write one database while the verifier reads another.
|
|
40
|
+
if (resolvedDbPath !== undefined && resolve(resolvedDbPath) !== resolve(thingsDb)) {
|
|
41
|
+
throw new Error(`${FENCE_UNSATISFIED}the database the client opened (${resolvedDbPath}) does not equal ` +
|
|
42
|
+
`THINGS_DB (${thingsDb})`);
|
|
43
|
+
}
|
|
44
|
+
const reason = simulatorFenceReason(thingsDb);
|
|
45
|
+
if (reason !== null) {
|
|
46
|
+
throw new Error(`${FENCE_UNSATISFIED}${reason}`);
|
|
47
|
+
}
|
|
48
|
+
return [createSimulatorVector(thingsDb)];
|
|
49
|
+
}
|
|
50
|
+
// Marker fail-closed (2026-07-17 incident): a database carrying the
|
|
51
|
+
// benchFixture marker is a synthetic bench fixture BY CONSTRUCTION, and the
|
|
52
|
+
// only legitimate way to write "against" one is the simulator. Reaching this
|
|
53
|
+
// point with a marked DB means the env fence is absent/incomplete (the exact
|
|
54
|
+
// shape of the escape that fired real url-scheme adds at a live app while
|
|
55
|
+
// verification read the fixture) — refuse rather than return real transports.
|
|
56
|
+
const envDb = process.env["THINGS_DB"];
|
|
57
|
+
const markedPath = [resolvedDbPath, envDb]
|
|
58
|
+
.filter((p) => p !== undefined && p.trim() !== "")
|
|
59
|
+
.find((p) => dbCarriesBenchMarker(p));
|
|
60
|
+
if (markedPath !== undefined) {
|
|
61
|
+
throw new Error(`the database in use (${markedPath}) is a bench fixture (Meta.benchFixture marker) but ` +
|
|
62
|
+
"the simulator fence is not active — refusing to dispatch real write transports " +
|
|
63
|
+
"against a live app on behalf of a synthetic fixture. Set the full fence env " +
|
|
64
|
+
"(THINGS_SIM_WRITES=1, THINGS_DB, scratch THINGS_API_STATE_DIR/THINGS_API_CONFIG_DIR) " +
|
|
65
|
+
"or use an unmarked DB.");
|
|
66
|
+
}
|
|
21
67
|
return [
|
|
22
68
|
createUrlSchemeVector(),
|
|
23
69
|
createAppleScriptVector(),
|
|
@@ -25,4 +71,5 @@ export function defaultVectors(config = loadConfig(), uiAux = {}) {
|
|
|
25
71
|
createUiVector(config, undefined, uiAux),
|
|
26
72
|
];
|
|
27
73
|
}
|
|
74
|
+
const FENCE_UNSATISFIED = "simulated writes requested but the fence is unsatisfied: ";
|
|
28
75
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/write/vectors/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/write/vectors/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGnG,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAC5B,SAA0B,UAAU,EAAE,EACtC,QAAoB,EAAE,EACtB,cAAuB;IAEvB,+EAA+E;IAC/E,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,+EAA+E;IAC/E,2EAA2E;IAC3E,iFAAiF;IACjF,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,GAAG,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,sBAAsB,CAAC,CAAC;QAC9D,CAAC;QACD,4EAA4E;QAC5E,8EAA8E;QAC9E,IAAI,cAAc,KAAK,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CACb,GAAG,iBAAiB,mCAAmC,cAAc,mBAAmB;gBACtF,cAAc,QAAQ,GAAG,CAC5B,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,GAAG,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,oEAAoE;IACpE,4EAA4E;IAC5E,6EAA6E;IAC7E,6EAA6E;IAC7E,0EAA0E;IAC1E,8EAA8E;IAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;SAC9D,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,wBAAwB,UAAU,sDAAsD;YACtF,iFAAiF;YACjF,8EAA8E;YAC9E,uFAAuF;YACvF,wBAAwB,CAC3B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,qBAAqB,EAAE;QACvB,uBAAuB,EAAE;QACzB,qBAAqB,EAAE;QACvB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,2DAA2D,CAAC"}
|
|
@@ -20,7 +20,7 @@ import { join } from "node:path";
|
|
|
20
20
|
/** First-run consent can stall the run; give it generous headroom. */
|
|
21
21
|
const SHORTCUTS_TIMEOUT_MS = 25_000;
|
|
22
22
|
export const SHORTCUTS_MATRIX = {
|
|
23
|
-
"heading
|
|
23
|
+
"project.add-heading": {
|
|
24
24
|
support: "yes",
|
|
25
25
|
disruption: 0,
|
|
26
26
|
validation: "validated",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../src/write/vectors/shortcuts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,sEAAsE;AACtE,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,
|
|
1
|
+
{"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../src/write/vectors/shortcuts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { OperationKind } from "../operations.ts";
|
|
2
|
+
import type { WriteVector } from "./types.ts";
|
|
3
|
+
/**
|
|
4
|
+
* The fence reason, or null when the simulator may run against `dbPath`. Pure
|
|
5
|
+
* with respect to `env`; opens `dbPath` READ-ONLY only to read the marker.
|
|
6
|
+
*/
|
|
7
|
+
export declare function simulatorFenceReason(dbPath: string, env?: NodeJS.ProcessEnv): string | null;
|
|
8
|
+
/**
|
|
9
|
+
* The Things schema generation the appliers are written against. When a
|
|
10
|
+
* Things update bumps the real database version, the fence refuses to
|
|
11
|
+
* simulate until the whole modeling chain is consciously re-verified —
|
|
12
|
+
* a schema tripwire, not a compatibility claim.
|
|
13
|
+
*/
|
|
14
|
+
export declare const SIMULATED_DATABASE_VERSION = 26;
|
|
15
|
+
/** Whether the simulator's triple fence is satisfied for `dbPath`. */
|
|
16
|
+
export declare function simulatorFenceActive(dbPath: string, env?: NodeJS.ProcessEnv): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the simulator fence is active for the ambient environment — the
|
|
19
|
+
* single signal every host-escaping code path (reveal `open`, setup install
|
|
20
|
+
* sheets, the live-app doctor probes, the pipeline's app-launch) consults so a
|
|
21
|
+
* bench run never touches the real Things/Shortcuts app. True only when
|
|
22
|
+
* THINGS_SIM_WRITES=1 AND THINGS_DB names a fenced bench fixture (marker
|
|
23
|
+
* present, not the production container); false — the ordinary path — otherwise.
|
|
24
|
+
*/
|
|
25
|
+
export declare function simFenceActive(env?: NodeJS.ProcessEnv): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the database at `dbPath` carries the bench-fixture marker — i.e. it
|
|
28
|
+
* is a synthetic bench DB by construction. Consulted by defaultVectors as a
|
|
29
|
+
* fail-closed backstop (a marked DB must never be paired with real write
|
|
30
|
+
* transports) and by the reveal gate. False on any read error.
|
|
31
|
+
*/
|
|
32
|
+
export declare function dbCarriesBenchMarker(dbPath: string): boolean;
|
|
33
|
+
/** The ops this simulator can apply — the ONLY entries in its honest matrix. */
|
|
34
|
+
export declare const SIMULATOR_COVERAGE: OperationKind[];
|
|
35
|
+
/**
|
|
36
|
+
* Build the simulator vector for `dbPath`. Throws at creation if the fence is
|
|
37
|
+
* not satisfied (so a misconfigured harness fails loud, never silently writing
|
|
38
|
+
* to a wrong DB). `now` is injectable for tests; production reads the effective
|
|
39
|
+
* clock from the environment (THINGS_NOW) so applier timestamps align with the
|
|
40
|
+
* pipeline's, which the create-probe verification depends on.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createSimulatorVector(dbPath: string, opts?: {
|
|
43
|
+
now?: () => Date;
|
|
44
|
+
}): WriteVector;
|