things-api 0.17.0 → 0.19.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 +16 -9
- package/deputy/AppIcon.icns +0 -0
- package/deputy/VERSION +1 -0
- package/deputy/helpers-Info.plist +27 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/CodeResources +0 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/Info.plist +22 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/MacOS/things-reader +0 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/Resources/AppIcon.icns +0 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/Helpers/things-reader.app/Contents/_CodeSignature/CodeResources +128 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/Info.plist +27 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/MacOS/things-deputy +0 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/Resources/AppIcon.icns +0 -0
- package/deputy/prebuilt/Things API Helper.app/Contents/_CodeSignature/CodeResources +137 -0
- package/deputy/reader/Info.plist +22 -0
- package/deputy/reader/entitlements.plist +45 -0
- package/deputy/reader/main.swift +580 -0
- package/deputy/src/main.swift +133 -0
- package/deputy/src/osascript.swift +102 -0
- package/deputy/src/server.swift +373 -0
- package/deputy/src/sqlite.swift +121 -0
- package/deputy/src/tcc.swift +58 -0
- package/dist/audit/schema.d.ts +13 -1
- package/dist/audit/schema.js.map +1 -1
- package/dist/capability.d.ts +160 -0
- package/dist/capability.js +416 -0
- package/dist/capability.js.map +1 -0
- package/dist/cli/commands/doctor.js +181 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/helpers.d.ts +17 -0
- package/dist/cli/commands/helpers.js +275 -0
- package/dist/cli/commands/helpers.js.map +1 -0
- package/dist/cli/commands/op-result.d.ts +15 -0
- package/dist/cli/commands/op-result.js +45 -0
- package/dist/cli/commands/op-result.js.map +1 -0
- package/dist/cli/commands/reads.js +47 -1
- package/dist/cli/commands/reads.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +9 -0
- package/dist/cli/commands/setup.js +63 -83
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/writes.d.ts +1 -1
- package/dist/cli/commands/writes.js +262 -109
- package/dist/cli/commands/writes.js.map +1 -1
- package/dist/cli/dry-run.d.ts +1 -1
- package/dist/cli/dry-run.js +1 -1
- package/dist/cli/glyphs.d.ts +23 -4
- package/dist/cli/glyphs.js +46 -19
- package/dist/cli/glyphs.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.js +53 -27
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/helpers-check.d.ts +10 -0
- package/dist/cli/helpers-check.js +59 -0
- package/dist/cli/helpers-check.js.map +1 -0
- package/dist/cli/main.js +22 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/period.d.ts +3 -1
- package/dist/cli/period.js +1 -1
- package/dist/cli/period.js.map +1 -1
- package/dist/cli/read-driver.js +26 -1
- package/dist/cli/read-driver.js.map +1 -1
- package/dist/cli/render.d.ts +31 -4
- package/dist/cli/render.js +127 -15
- package/dist/cli/render.js.map +1 -1
- package/dist/client.d.ts +22 -2
- package/dist/client.js +52 -15
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +31 -0
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/contracts.d.ts +6 -2
- package/dist/contracts.js +1 -1
- package/dist/contracts.js.map +1 -1
- package/dist/db/baselines/db-v26.js +8 -4
- package/dist/db/baselines/db-v26.js.map +1 -1
- package/dist/db/baselines/db-v27.d.ts +42 -0
- package/dist/db/baselines/db-v27.js +47 -0
- package/dist/db/baselines/db-v27.js.map +1 -0
- package/dist/db/baselines/index.js +2 -1
- package/dist/db/baselines/index.js.map +1 -1
- package/dist/db/locate.d.ts +4 -1
- package/dist/db/locate.js +3 -1
- package/dist/db/locate.js.map +1 -1
- package/dist/db/schema.d.ts +1 -1
- package/dist/db/schema.js +9 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/deputy/bridge-worker.d.ts +1 -0
- package/dist/deputy/bridge-worker.js +79 -0
- package/dist/deputy/bridge-worker.js.map +1 -0
- package/dist/deputy/bridge.d.ts +14 -0
- package/dist/deputy/bridge.js +70 -0
- package/dist/deputy/bridge.js.map +1 -0
- package/dist/deputy/client.d.ts +19 -0
- package/dist/deputy/client.js +104 -0
- package/dist/deputy/client.js.map +1 -0
- package/dist/deputy/db-facade.d.ts +18 -0
- package/dist/deputy/db-facade.js +71 -0
- package/dist/deputy/db-facade.js.map +1 -0
- package/dist/deputy/files.d.ts +1 -0
- package/dist/deputy/files.js +16 -0
- package/dist/deputy/files.js.map +1 -0
- package/dist/deputy/install.d.ts +319 -0
- package/dist/deputy/install.js +1239 -0
- package/dist/deputy/install.js.map +1 -0
- package/dist/deputy/notice.d.ts +6 -0
- package/dist/deputy/notice.js +28 -0
- package/dist/deputy/notice.js.map +1 -0
- package/dist/deputy/notices.d.ts +31 -0
- package/dist/deputy/notices.js +94 -0
- package/dist/deputy/notices.js.map +1 -0
- package/dist/deputy/osa.d.ts +21 -0
- package/dist/deputy/osa.js +72 -0
- package/dist/deputy/osa.js.map +1 -0
- package/dist/deputy/protocol.d.ts +140 -0
- package/dist/deputy/protocol.js +143 -0
- package/dist/deputy/protocol.js.map +1 -0
- package/dist/deputy/routing.d.ts +84 -0
- package/dist/deputy/routing.js +422 -0
- package/dist/deputy/routing.js.map +1 -0
- package/dist/deputy/shortcuts-exec.d.ts +10 -0
- package/dist/deputy/shortcuts-exec.js +50 -0
- package/dist/deputy/shortcuts-exec.js.map +1 -0
- package/dist/diagnose.d.ts +57 -2
- package/dist/diagnose.js +105 -3
- package/dist/diagnose.js.map +1 -1
- package/dist/direct-setup.d.ts +78 -0
- package/dist/direct-setup.js +484 -0
- package/dist/direct-setup.js.map +1 -0
- package/dist/host-access.d.ts +63 -0
- package/dist/host-access.js +165 -0
- package/dist/host-access.js.map +1 -0
- package/dist/index.d.ts +31 -5
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +27 -1
- package/dist/mcp/server.js +300 -97
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/mappers.d.ts +12 -3
- package/dist/model/mappers.js +6 -1
- package/dist/model/mappers.js.map +1 -1
- package/dist/model/recurrence.d.ts +5 -1
- package/dist/model/recurrence.js +19 -1
- package/dist/model/recurrence.js.map +1 -1
- package/dist/model/template-projection.d.ts +26 -0
- package/dist/model/template-projection.js +113 -0
- package/dist/model/template-projection.js.map +1 -0
- package/dist/op-result.d.ts +55 -0
- package/dist/op-result.js +161 -0
- package/dist/op-result.js.map +1 -0
- package/dist/read/detail.js +7 -1
- package/dist/read/detail.js.map +1 -1
- package/dist/read/filter-contract.d.ts +1 -1
- package/dist/read/filter-contract.js +4 -0
- package/dist/read/filter-contract.js.map +1 -1
- package/dist/read/queries.js +8 -1
- package/dist/read/queries.js.map +1 -1
- package/dist/read/shape.js +4 -0
- package/dist/read/shape.js.map +1 -1
- package/dist/read/views.d.ts +35 -4
- package/dist/read/views.js +120 -18
- package/dist/read/views.js.map +1 -1
- package/dist/session-grant.d.ts +48 -0
- package/dist/session-grant.js +170 -0
- package/dist/session-grant.js.map +1 -0
- package/dist/surface-copy.d.ts +8 -0
- package/dist/surface-copy.js +8 -0
- package/dist/surface-copy.js.map +1 -1
- package/dist/sync-health.js +6 -2
- package/dist/sync-health.js.map +1 -1
- package/dist/wizard.d.ts +58 -0
- package/dist/wizard.js +167 -0
- package/dist/wizard.js.map +1 -0
- package/dist/write/accessibility-probe.js +4 -2
- package/dist/write/accessibility-probe.js.map +1 -1
- package/dist/write/automation-probe.js +5 -1
- package/dist/write/automation-probe.js.map +1 -1
- package/dist/write/availability.d.ts +1 -1
- package/dist/write/availability.js +10 -6
- package/dist/write/availability.js.map +1 -1
- package/dist/write/batch.d.ts +20 -0
- package/dist/write/batch.js +94 -15
- package/dist/write/batch.js.map +1 -1
- package/dist/write/capabilities.d.ts +9 -0
- package/dist/write/capabilities.js +2 -0
- package/dist/write/capabilities.js.map +1 -1
- package/dist/write/clear-reminder.js +1 -1
- package/dist/write/clear-reminder.js.map +1 -1
- package/dist/write/commands.d.ts +12 -1
- package/dist/write/commands.js +170 -237
- package/dist/write/commands.js.map +1 -1
- package/dist/write/experimental.d.ts +19 -0
- package/dist/write/experimental.js +50 -0
- package/dist/write/experimental.js.map +1 -1
- package/dist/write/failure-hints.d.ts +3 -1
- package/dist/write/failure-hints.js.map +1 -1
- package/dist/write/guards.js +19 -2
- package/dist/write/guards.js.map +1 -1
- package/dist/write/lock.d.ts +16 -13
- package/dist/write/lock.js +55 -0
- package/dist/write/lock.js.map +1 -1
- package/dist/write/make-repeating-project.js +9 -13
- package/dist/write/make-repeating-project.js.map +1 -1
- package/dist/write/move.js +14 -6
- package/dist/write/move.js.map +1 -1
- package/dist/write/operations.d.ts +64 -25
- package/dist/write/operations.js +7 -0
- package/dist/write/operations.js.map +1 -1
- package/dist/write/opid.d.ts +14 -0
- package/dist/write/opid.js +22 -0
- package/dist/write/opid.js.map +1 -1
- package/dist/write/param-schema.d.ts +124 -0
- package/dist/write/param-schema.js +747 -0
- package/dist/write/param-schema.js.map +1 -0
- package/dist/write/pipeline.d.ts +78 -2
- package/dist/write/pipeline.js +249 -4
- package/dist/write/pipeline.js.map +1 -1
- package/dist/write/pre-state.d.ts +8 -0
- package/dist/write/pre-state.js +62 -17
- package/dist/write/pre-state.js.map +1 -1
- package/dist/write/promote-clone.js +635 -367
- package/dist/write/promote-clone.js.map +1 -1
- package/dist/write/reorder.js +95 -29
- package/dist/write/reorder.js.map +1 -1
- package/dist/write/repeat-anchor.d.ts +30 -0
- package/dist/write/repeat-anchor.js +166 -1
- package/dist/write/repeat-anchor.js.map +1 -1
- package/dist/write/repeat-rule.d.ts +28 -1
- package/dist/write/repeat-rule.js +64 -4
- package/dist/write/repeat-rule.js.map +1 -1
- package/dist/write/resolution-timestamps.d.ts +11 -0
- package/dist/write/resolution-timestamps.js +83 -38
- package/dist/write/resolution-timestamps.js.map +1 -1
- package/dist/write/reversibility.js +4 -0
- package/dist/write/reversibility.js.map +1 -1
- package/dist/write/template-mutation.d.ts +137 -0
- package/dist/write/template-mutation.js +451 -0
- package/dist/write/template-mutation.js.map +1 -0
- package/dist/write/undo.js +10 -20
- package/dist/write/undo.js.map +1 -1
- package/dist/write/update-fields.d.ts +151 -0
- package/dist/write/update-fields.js +427 -0
- package/dist/write/update-fields.js.map +1 -0
- package/dist/write/vectors/applescript.js +10 -16
- package/dist/write/vectors/applescript.js.map +1 -1
- package/dist/write/vectors/registry.d.ts +1 -1
- package/dist/write/vectors/registry.js +10 -2
- package/dist/write/vectors/registry.js.map +1 -1
- package/dist/write/vectors/session-reachability.d.ts +55 -0
- package/dist/write/vectors/session-reachability.js +56 -8
- package/dist/write/vectors/session-reachability.js.map +1 -1
- package/dist/write/vectors/shortcuts.js +7 -16
- package/dist/write/vectors/shortcuts.js.map +1 -1
- package/dist/write/vectors/simulator.d.ts +16 -1
- package/dist/write/vectors/simulator.js +68 -12
- package/dist/write/vectors/simulator.js.map +1 -1
- package/dist/write/vectors/types.d.ts +124 -1
- package/dist/write/vectors/ui-recipes.d.ts +19 -0
- package/dist/write/vectors/ui-recipes.js +158 -38
- package/dist/write/vectors/ui-recipes.js.map +1 -1
- package/dist/write/vectors/ui.d.ts +89 -0
- package/dist/write/vectors/ui.js +504 -49
- package/dist/write/vectors/ui.js.map +1 -1
- package/dist/write/verify/delta.d.ts +21 -0
- package/dist/write/verify/delta.js.map +1 -1
- package/dist/write/verify/poller.d.ts +13 -0
- package/dist/write/verify/poller.js +38 -0
- package/dist/write/verify/poller.js.map +1 -1
- package/package.json +9 -1
- package/schema/envelope.schema.json +5 -3
- package/scripts/build-helpers.sh +109 -0
- package/scripts/deputy-cert-setup.sh +60 -0
- package/skills/things-cli/SKILL.md +12 -5
- package/skills/things-cli/references/contracts.md +1 -0
- package/skills/things-cli/references/data-model.md +3 -0
- package/skills/things-cli/references/errors.md +5 -1
- package/skills/things-cli/references/gui.md +1 -0
- package/skills/things-cli/references/repeating.md +75 -0
- package/skills/things-cli/references/tag-cleanup.md +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/deputy/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Emit one helpers notice on stderr; later calls this process are dropped. */
|
|
2
|
+
export declare function emitHelpersNotice(message: string, write?: (s: string) => void): void;
|
|
3
|
+
/** True once this process has spent its one notice. */
|
|
4
|
+
export declare function helpersNoticeSpent(): boolean;
|
|
5
|
+
/** Test seam: forget that a notice was emitted. */
|
|
6
|
+
export declare function resetHelpersNoticeForTests(): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single helpers stderr channel: AT MOST ONE line per process, whichever
|
|
3
|
+
* condition speaks first.
|
|
4
|
+
*
|
|
5
|
+
* Two producers share it — the routing layer (degradation caught at
|
|
6
|
+
* activation, src/deputy/routing.ts) and the CLI's passive install/upgrade
|
|
7
|
+
* check (src/cli/helpers-check.ts). One process can hit both (an installed but
|
|
8
|
+
* stale helper that also fails to answer), and two stacked lines about the same
|
|
9
|
+
* broken helper are noise, not information: the first one already names a
|
|
10
|
+
* remedy that resolves the state.
|
|
11
|
+
*/
|
|
12
|
+
let noticed = false;
|
|
13
|
+
/** Emit one helpers notice on stderr; later calls this process are dropped. */
|
|
14
|
+
export function emitHelpersNotice(message, write = (s) => void process.stderr.write(s)) {
|
|
15
|
+
if (noticed)
|
|
16
|
+
return;
|
|
17
|
+
noticed = true;
|
|
18
|
+
write(`things-api helpers: ${message}\n`);
|
|
19
|
+
}
|
|
20
|
+
/** True once this process has spent its one notice. */
|
|
21
|
+
export function helpersNoticeSpent() {
|
|
22
|
+
return noticed;
|
|
23
|
+
}
|
|
24
|
+
/** Test seam: forget that a notice was emitted. */
|
|
25
|
+
export function resetHelpersNoticeForTests() {
|
|
26
|
+
noticed = false;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=notice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notice.js","sourceRoot":"","sources":["../../src/deputy/notice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,QAA6B,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhE,IAAI,OAAO;QAAE,OAAO;IACpB,OAAO,GAAG,IAAI,CAAC;IACf,KAAK,CAAC,uBAAuB,OAAO,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,0BAA0B;IACxC,OAAO,GAAG,KAAK,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** How long the absence hint stays quiet after being shown once. */
|
|
2
|
+
export declare const HELPERS_HINT_INTERVAL_DAYS = 14;
|
|
3
|
+
export type HelpersNoticeKind = "version-skew" | "absent-hint";
|
|
4
|
+
export interface HelpersNotice {
|
|
5
|
+
kind: HelpersNoticeKind;
|
|
6
|
+
/** The one line to print (no prefix — the notice sink adds it). */
|
|
7
|
+
text: string;
|
|
8
|
+
}
|
|
9
|
+
export interface HelpersNoticeOptions {
|
|
10
|
+
env?: NodeJS.ProcessEnv;
|
|
11
|
+
/** Wall clock (ms) for the hint throttle; defaults to now. */
|
|
12
|
+
now?: number;
|
|
13
|
+
/** Host platform; the helpers are macOS-only, so nothing fires elsewhere. */
|
|
14
|
+
platform?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Test seam. Defaults to the real provenance: true when `helpers-enabled` is
|
|
17
|
+
* neither stored nor forced by the environment (nobody has ever answered the
|
|
18
|
+
* routing question on this host).
|
|
19
|
+
*/
|
|
20
|
+
modeUntouched?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** When the absence hint was last shown (ms), or null when never/unreadable. */
|
|
23
|
+
export declare function lastHelpersHintAt(env?: NodeJS.ProcessEnv): number | null;
|
|
24
|
+
/** Record that the absence hint was shown, restarting its throttle window. */
|
|
25
|
+
export declare function markHelpersHintShown(env?: NodeJS.ProcessEnv, now?: number): void;
|
|
26
|
+
/**
|
|
27
|
+
* The notice this machine has earned, or null when it has nothing to say.
|
|
28
|
+
* Skew outranks the hint (they are mutually exclusive anyway: one needs an
|
|
29
|
+
* installed bundle, the other its absence).
|
|
30
|
+
*/
|
|
31
|
+
export declare function computeHelpersNotice(options?: HelpersNoticeOptions): HelpersNotice | null;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The PASSIVE helpers notices — what a human sees on a command they were
|
|
3
|
+
* running anyway, without asking about the helpers at all (the skill-drift
|
|
4
|
+
* precedent, src/cli/skill-check.ts).
|
|
5
|
+
*
|
|
6
|
+
* Two conditions, both computed from disk with no handshake and no prompt:
|
|
7
|
+
*
|
|
8
|
+
* - `version-skew`: routing is on (`auto`/`true`), a bundle IS installed, and
|
|
9
|
+
* its version differs from the one this package expects. The remedy is a
|
|
10
|
+
* rebuild + reinstall — the installed bundle is a COPY, so restarting it
|
|
11
|
+
* would only restart the stale code.
|
|
12
|
+
* - `absent-hint`: nothing is installed, the routing mode has never been set,
|
|
13
|
+
* and the hint has not been shown for {@link HELPERS_HINT_INTERVAL_DAYS}
|
|
14
|
+
* days. This one is a suggestion, not a fault, so it is throttled by a stamp
|
|
15
|
+
* in the state dir and suppressible like the rest.
|
|
16
|
+
*
|
|
17
|
+
* Emission (gating, kill switch, the one-line-per-process budget) belongs to
|
|
18
|
+
* the caller — src/cli/helpers-check.ts. These functions only decide.
|
|
19
|
+
*/
|
|
20
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
21
|
+
import { join } from "node:path";
|
|
22
|
+
import { getConfigKey, loadConfig } from "../config.js";
|
|
23
|
+
import { stateDir } from "../paths.js";
|
|
24
|
+
import { installedHelpersVersion } from "./install.js";
|
|
25
|
+
import { EXPECTED_HELPERS_VERSION, helpersInstalledBundlePath } from "./protocol.js";
|
|
26
|
+
/** How long the absence hint stays quiet after being shown once. */
|
|
27
|
+
export const HELPERS_HINT_INTERVAL_DAYS = 14;
|
|
28
|
+
function hintStampPath(env) {
|
|
29
|
+
return join(stateDir(env), "helpers-hint.json");
|
|
30
|
+
}
|
|
31
|
+
/** When the absence hint was last shown (ms), or null when never/unreadable. */
|
|
32
|
+
export function lastHelpersHintAt(env = process.env) {
|
|
33
|
+
try {
|
|
34
|
+
const raw = JSON.parse(readFileSync(hintStampPath(env), "utf8"));
|
|
35
|
+
const parsed = typeof raw.shownAt === "string" ? Date.parse(raw.shownAt) : NaN;
|
|
36
|
+
return Number.isNaN(parsed) ? null : parsed;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Record that the absence hint was shown, restarting its throttle window. */
|
|
43
|
+
export function markHelpersHintShown(env = process.env, now = Date.now()) {
|
|
44
|
+
try {
|
|
45
|
+
mkdirSync(stateDir(env), { recursive: true });
|
|
46
|
+
writeFileSync(hintStampPath(env), `${JSON.stringify({ shownAt: new Date(now).toISOString() }, null, 2)}\n`);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// A hint that cannot remember itself is still better than a broken command.
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The notice this machine has earned, or null when it has nothing to say.
|
|
54
|
+
* Skew outranks the hint (they are mutually exclusive anyway: one needs an
|
|
55
|
+
* installed bundle, the other its absence).
|
|
56
|
+
*/
|
|
57
|
+
export function computeHelpersNotice(options = {}) {
|
|
58
|
+
const env = options.env ?? process.env;
|
|
59
|
+
const platform = options.platform ?? process.platform;
|
|
60
|
+
if (platform !== "darwin")
|
|
61
|
+
return null;
|
|
62
|
+
const mode = loadConfig(env).helpersMode;
|
|
63
|
+
if (mode === "false")
|
|
64
|
+
return null;
|
|
65
|
+
const installed = existsSync(helpersInstalledBundlePath(env));
|
|
66
|
+
if (installed) {
|
|
67
|
+
const version = installedHelpersVersion(env);
|
|
68
|
+
if (version === null || version === EXPECTED_HELPERS_VERSION)
|
|
69
|
+
return null;
|
|
70
|
+
return {
|
|
71
|
+
kind: "version-skew",
|
|
72
|
+
text: `helpers v${version} installed, this package expects v${EXPECTED_HELPERS_VERSION} — ` +
|
|
73
|
+
"rebuild with `bash scripts/build-helpers.sh` and rerun `things helpers setup` " +
|
|
74
|
+
"(THINGS_API_NO_HELPERS_CHECK=1 silences this)",
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// Nothing installed: a suggestion, and only for a host that has never
|
|
78
|
+
// expressed an opinion — an explicit `auto`/`true` owner is mid-setup, not
|
|
79
|
+
// in need of an introduction.
|
|
80
|
+
const untouched = options.modeUntouched ?? getConfigKey("helpers-enabled", env)?.source === "default";
|
|
81
|
+
if (!untouched)
|
|
82
|
+
return null;
|
|
83
|
+
const last = lastHelpersHintAt(env);
|
|
84
|
+
const now = options.now ?? Date.now();
|
|
85
|
+
if (last !== null && now - last < HELPERS_HINT_INTERVAL_DAYS * 86_400_000)
|
|
86
|
+
return null;
|
|
87
|
+
return {
|
|
88
|
+
kind: "absent-hint",
|
|
89
|
+
text: "database reads and app automation run in THIS process, so macOS permission grants " +
|
|
90
|
+
"follow whichever terminal or agent runtime started it — `things helpers setup` moves " +
|
|
91
|
+
"them onto two stable helpers (THINGS_API_NO_HELPERS_CHECK=1 silences this)",
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=notices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notices.js","sourceRoot":"","sources":["../../src/deputy/notices.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type OsaLang = "applescript" | "javascript";
|
|
2
|
+
export interface OsaExecResult {
|
|
3
|
+
exitCode: number;
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
timedOut?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Async osascript for vector dispatch and ui steps (never blocks the event loop). */
|
|
9
|
+
export declare function osaExec(script: string, options: {
|
|
10
|
+
lang?: OsaLang;
|
|
11
|
+
timeoutMs: number;
|
|
12
|
+
}): Promise<OsaExecResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Sync osascript for the consent probes. Returns stdout on success; throws an
|
|
15
|
+
* execFileSync-SHAPED error otherwise (status/stderr/killed/signal), so the
|
|
16
|
+
* probes' TCC classification regexes (-1743 denied, -1712/kill pending) read
|
|
17
|
+
* identically on both paths. In deputy mode the classification is answered
|
|
18
|
+
* about the DEPUTY's grants — exactly the right question, since it is the
|
|
19
|
+
* deputy that will send every AppleEvent.
|
|
20
|
+
*/
|
|
21
|
+
export declare function osaExecSync(script: string, timeoutMs: number): string;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single osascript execution seam. Every osascript the library runs —
|
|
3
|
+
* vector dispatch, ui steps, consent probes — flows through one of these two
|
|
4
|
+
* functions, which route to the deputy when it is active and run direct
|
|
5
|
+
* (execFile/execFileSync, byte-identical to the pre-deputy behavior)
|
|
6
|
+
* otherwise. `open`-based primitives (URL scheme, reveal) are consent-free by
|
|
7
|
+
* design and never route.
|
|
8
|
+
*/
|
|
9
|
+
import { execFile, execFileSync } from "node:child_process";
|
|
10
|
+
import {} from "./protocol.js";
|
|
11
|
+
import { deputyAsyncRequest, deputyRouting, deputySyncRequest } from "./routing.js";
|
|
12
|
+
/** Deputy-side kill fires at timeoutMs; the client deadline adds grace so the deputy's honest answer wins. */
|
|
13
|
+
const CLIENT_GRACE_MS = 5000;
|
|
14
|
+
function osaArgs(script, lang) {
|
|
15
|
+
return lang === "javascript" ? ["-l", "JavaScript", "-e", script] : ["-e", script];
|
|
16
|
+
}
|
|
17
|
+
function fromDeputy(res) {
|
|
18
|
+
const r = res;
|
|
19
|
+
return {
|
|
20
|
+
exitCode: r.timedOut === true || r.signal !== undefined
|
|
21
|
+
? r.exitCode === 0
|
|
22
|
+
? 1
|
|
23
|
+
: r.exitCode
|
|
24
|
+
: r.exitCode,
|
|
25
|
+
stdout: r.stdout,
|
|
26
|
+
stderr: r.stderr,
|
|
27
|
+
...(r.timedOut === true && { timedOut: true }),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/** Async osascript for vector dispatch and ui steps (never blocks the event loop). */
|
|
31
|
+
export async function osaExec(script, options) {
|
|
32
|
+
const lang = options.lang ?? "applescript";
|
|
33
|
+
if (deputyRouting().active) {
|
|
34
|
+
const res = await deputyAsyncRequest({ verb: "osascript", script, lang, timeoutMs: options.timeoutMs }, options.timeoutMs + CLIENT_GRACE_MS);
|
|
35
|
+
return fromDeputy(res);
|
|
36
|
+
}
|
|
37
|
+
return new Promise((resolve) => {
|
|
38
|
+
execFile("osascript", osaArgs(script, lang), { timeout: options.timeoutMs }, (err, stdout, stderr) => {
|
|
39
|
+
const timedOut = err !== null && err.killed === true;
|
|
40
|
+
resolve({
|
|
41
|
+
exitCode: err === null ? 0 : (err.code ?? 1),
|
|
42
|
+
stdout: String(stdout),
|
|
43
|
+
stderr: String(stderr),
|
|
44
|
+
...(timedOut && { timedOut: true }),
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Sync osascript for the consent probes. Returns stdout on success; throws an
|
|
51
|
+
* execFileSync-SHAPED error otherwise (status/stderr/killed/signal), so the
|
|
52
|
+
* probes' TCC classification regexes (-1743 denied, -1712/kill pending) read
|
|
53
|
+
* identically on both paths. In deputy mode the classification is answered
|
|
54
|
+
* about the DEPUTY's grants — exactly the right question, since it is the
|
|
55
|
+
* deputy that will send every AppleEvent.
|
|
56
|
+
*/
|
|
57
|
+
export function osaExecSync(script, timeoutMs) {
|
|
58
|
+
if (!deputyRouting().active) {
|
|
59
|
+
return execFileSync("osascript", ["-e", script], { encoding: "utf8", timeout: timeoutMs });
|
|
60
|
+
}
|
|
61
|
+
const res = deputySyncRequest({ verb: "osascript", script, lang: "applescript", timeoutMs }, timeoutMs + CLIENT_GRACE_MS);
|
|
62
|
+
if (res.exitCode === 0 && res.timedOut !== true && res.signal === undefined)
|
|
63
|
+
return res.stdout;
|
|
64
|
+
const error = new Error(`Command failed: osascript\n${res.stderr}`);
|
|
65
|
+
error.status = res.timedOut === true ? null : res.exitCode;
|
|
66
|
+
error.stdout = res.stdout;
|
|
67
|
+
error.stderr = res.stderr;
|
|
68
|
+
error.killed = res.timedOut === true;
|
|
69
|
+
error.signal = res.timedOut === true || res.signal !== undefined ? "SIGTERM" : null;
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=osa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"osa.js","sourceRoot":"","sources":["../../src/deputy/osa.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAwB,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAWpF,8GAA8G;AAC9G,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,SAAS,OAAO,CAAC,MAAc,EAAE,IAAa;IAC5C,OAAO,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,UAAU,CAAC,GAA4B;IAC9C,MAAM,CAAC,GAAG,GAAiC,CAAC;IAC5C,OAAO;QACL,QAAQ,EACN,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;YAC3C,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC,QAAQ;YACd,CAAC,CAAC,CAAC,CAAC,QAAQ;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAc,EACd,OAA8C;IAE9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC;IAC3C,IAAI,aAAa,EAAE,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAClC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,EACjE,OAAO,CAAC,SAAS,GAAG,eAAe,CACpC,CAAC;QACF,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CACN,WAAW,EACX,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EACrB,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAC9B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtB,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,IAAK,GAA4B,CAAC,MAAM,KAAK,IAAI,CAAC;YAC/E,OAAO,CAAC;gBACN,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,GAAyB,CAAC,IAAI,IAAI,CAAC,CAAC;gBACnE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;gBACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;gBACtB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aACpC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,SAAiB;IAC3D,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,GAAG,GAAG,iBAAiB,CAC3B,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,EAC7D,SAAS,GAAG,eAAe,CACE,CAAC;IAChC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC/F,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,MAAM,EAAE,CAMjE,CAAC;IACF,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC3D,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC;IACrC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
export declare const DEPUTY_PROTOCOL_VERSION = 1;
|
|
2
|
+
/**
|
|
3
|
+
* The helpers version this package expects — the helpers are versioned on
|
|
4
|
+
* their OWN line (deputy/VERSION), decoupled from the package version, so a
|
|
5
|
+
* package release whose helper sources are unchanged never nags for (or
|
|
6
|
+
* forces) a reinstall of a byte-equivalent bundle. Bump deputy/VERSION with
|
|
7
|
+
* any helper-source change; a drift test asserts this constant matches it.
|
|
8
|
+
* The PROTOCOL version above remains the hard compatibility gate.
|
|
9
|
+
*/
|
|
10
|
+
export declare const EXPECTED_HELPERS_VERSION = "1.3.0";
|
|
11
|
+
/** The outer helper bundle's identifier (Things API Helper.app) — TCC + BTM identity. */
|
|
12
|
+
export declare const HELPERS_BUNDLE_ID = "com.pixelcog.things-api-helper";
|
|
13
|
+
/** launchd label (and signing identifier) of the broker. */
|
|
14
|
+
export declare const DEPUTY_LAUNCHD_LABEL = "com.pixelcog.things-deputy";
|
|
15
|
+
/**
|
|
16
|
+
* The deputy derives its own state dir from the same THINGS_API_STATE_DIR /
|
|
17
|
+
* XDG_STATE_HOME precedence as the library (deputy/src/main.swift mirrors
|
|
18
|
+
* this), so pointing both sides at one env is all a test needs.
|
|
19
|
+
*/
|
|
20
|
+
export declare function deputyStateDir(env?: NodeJS.ProcessEnv): string;
|
|
21
|
+
export declare function deputySocketPath(env?: NodeJS.ProcessEnv): string;
|
|
22
|
+
export declare function deputyTokenPath(env?: NodeJS.ProcessEnv): string;
|
|
23
|
+
/**
|
|
24
|
+
* The directory `helpers install` owns WHOLESALE: it is deleted and recreated
|
|
25
|
+
* on every install, so any previous layout (however old) is erased without
|
|
26
|
+
* dedicated migration logic, and the fresh inodes reset the kernel's
|
|
27
|
+
* per-vnode code-signature cache (copying over an executed inode makes every
|
|
28
|
+
* future exec die with SIGKILL — observed live 2026-08-21).
|
|
29
|
+
*/
|
|
30
|
+
export declare function helpersInstallDir(env?: NodeJS.ProcessEnv): string;
|
|
31
|
+
/** Where `helpers install` places the bundle. */
|
|
32
|
+
export declare function helpersInstalledBundlePath(env?: NodeJS.ProcessEnv): string;
|
|
33
|
+
/** The installed deputy executable (the bundle's main executable). */
|
|
34
|
+
export declare function deputyInstalledBinaryPath(env?: NodeJS.ProcessEnv): string;
|
|
35
|
+
/** The installed nested reader app. */
|
|
36
|
+
export declare function readerInstalledAppPath(env?: NodeJS.ProcessEnv): string;
|
|
37
|
+
/** launchd label (and bundle identifier) of the sandboxed reader. */
|
|
38
|
+
export declare const READER_LAUNCHD_LABEL = "com.pixelcog.things-reader";
|
|
39
|
+
/** Points every reader-side path somewhere else (mock readers in tests/lab). */
|
|
40
|
+
export declare const READER_DIR_ENV = "THINGS_API_READER_DIR";
|
|
41
|
+
/**
|
|
42
|
+
* The override path when one is set, else null. A set override means the
|
|
43
|
+
* rendezvous is an ORDINARY directory the caller chose — a mock reader is just
|
|
44
|
+
* a socket and a token file, with no bundle and no sandbox behind it.
|
|
45
|
+
*/
|
|
46
|
+
export declare function readerDirOverride(env?: NodeJS.ProcessEnv): string | null;
|
|
47
|
+
/**
|
|
48
|
+
* Where clients meet the reader: `<state>/reader`, a directory WE own, outside
|
|
49
|
+
* every App Sandbox container.
|
|
50
|
+
*
|
|
51
|
+
* This placement is the whole point. launchd creates, binds, listens on and
|
|
52
|
+
* owns `reader.sock` here (the `Sockets` key in the reader's LaunchAgent) and
|
|
53
|
+
* hands the sandboxed process the already-listening fd at activation, so the
|
|
54
|
+
* reader never opens this path at all — a sandboxed process could not have
|
|
55
|
+
* bound anywhere but its own container. The access token is a sibling file the
|
|
56
|
+
* INSTALLER mints. Both are therefore ordinary files in the user's own state
|
|
57
|
+
* directory: a client `stat`/`open` on them crosses no container boundary,
|
|
58
|
+
* needs no TCC class, and works identically from every host app.
|
|
59
|
+
*
|
|
60
|
+
* Until helpers 1.3.0 both files lived in the reader's container home, which
|
|
61
|
+
* made every client probe a cross-app container access (the
|
|
62
|
+
* `kTCCServiceSystemPolicyAppData` consent class) — silent under an FDA host,
|
|
63
|
+
* a modal from anywhere else. See docs/design/permissions-doctrine.md
|
|
64
|
+
* (§ RESOLVED 2026-08-24).
|
|
65
|
+
*/
|
|
66
|
+
export declare function readerRendezvousDir(env?: NodeJS.ProcessEnv): string;
|
|
67
|
+
export declare function readerSocketPath(env?: NodeJS.ProcessEnv): string;
|
|
68
|
+
export declare function readerTokenPath(env?: NodeJS.ProcessEnv): string;
|
|
69
|
+
/**
|
|
70
|
+
* The reader's App Sandbox container home — the OS picks the path from the
|
|
71
|
+
* bundle identifier, and the security-scoped bookmark that IS the read grant
|
|
72
|
+
* lives there. Reader-internal: nothing on the client side reads it. The one
|
|
73
|
+
* client-side use is `helpers uninstall --revoke`, which deletes the grant
|
|
74
|
+
* (a deliberate destructive act a human asked for), and the override redirects
|
|
75
|
+
* it so a suite never touches the developer's real container.
|
|
76
|
+
*/
|
|
77
|
+
export declare function readerSandboxContainerDir(env?: NodeJS.ProcessEnv): string;
|
|
78
|
+
/** The env var carrying the reader's expected token, injected by its LaunchAgent. */
|
|
79
|
+
export declare const READER_TOKEN_ENV = "THINGS_READER_TOKEN";
|
|
80
|
+
/** The `Sockets` key entry name launchd hands the reader at activation. */
|
|
81
|
+
export declare const READER_SOCKET_ENV = "THINGS_READER_SOCKET";
|
|
82
|
+
/** Reader handshake: DeputyHello plus the grant state. */
|
|
83
|
+
export interface ReaderHello extends DeputyHello {
|
|
84
|
+
role: "reader";
|
|
85
|
+
/** False until the one-time open-panel ceremony has granted the folder. */
|
|
86
|
+
granted: boolean;
|
|
87
|
+
}
|
|
88
|
+
export interface DeputyErrorShape {
|
|
89
|
+
code: string;
|
|
90
|
+
message: string;
|
|
91
|
+
}
|
|
92
|
+
/** A protocol-level failure (the deputy answered `ok:false`, or never answered). */
|
|
93
|
+
export declare class DeputyRequestError extends Error {
|
|
94
|
+
readonly code: string;
|
|
95
|
+
constructor(code: string, message: string);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* One Automation target's standing, as the deputy reads it prompt-free:
|
|
99
|
+
* `not-running` means the target was not up, so macOS had no answer to give;
|
|
100
|
+
* `unknown` covers "never asked" (the consent record does not exist yet) and
|
|
101
|
+
* anything unrecognized. Only `granted` lets the ceremony skip that leg.
|
|
102
|
+
*/
|
|
103
|
+
export type AutomationPermission = "granted" | "denied" | "not-running" | "unknown";
|
|
104
|
+
export interface DeputyAutomationStatus {
|
|
105
|
+
things: AutomationPermission;
|
|
106
|
+
systemEvents: AutomationPermission;
|
|
107
|
+
}
|
|
108
|
+
export interface DeputyHello {
|
|
109
|
+
protocol: number;
|
|
110
|
+
deputyVersion: string;
|
|
111
|
+
pid: number;
|
|
112
|
+
/** Reader only: its cached container-db resolution (absent on the deputy). */
|
|
113
|
+
dbPath?: string | null;
|
|
114
|
+
uptimeMs: number;
|
|
115
|
+
/**
|
|
116
|
+
* The deputy's own Accessibility trust. Absent on helpers older than 1.2.0
|
|
117
|
+
* (and on the reader, which drives nothing) — absent means "unknown", never
|
|
118
|
+
* "false".
|
|
119
|
+
*/
|
|
120
|
+
axTrusted?: boolean;
|
|
121
|
+
/** The deputy's Automation standing per target. Absent on helpers older than 1.2.0. */
|
|
122
|
+
automation?: DeputyAutomationStatus;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* osascript outcome as the deputy reports it. `ok:true` at the protocol level
|
|
126
|
+
* means "the deputy ran osascript" — a failing script is exitCode ≠ 0 here,
|
|
127
|
+
* exactly as execFile would report it, so vector-side classification logic
|
|
128
|
+
* reads the same signals on both paths.
|
|
129
|
+
*/
|
|
130
|
+
export interface DeputyOsaResult {
|
|
131
|
+
exitCode: number;
|
|
132
|
+
stdout: string;
|
|
133
|
+
stderr: string;
|
|
134
|
+
timedOut?: boolean;
|
|
135
|
+
/** Present when osascript died to a signal (number, e.g. 15 for SIGTERM). */
|
|
136
|
+
signal?: number;
|
|
137
|
+
}
|
|
138
|
+
export type DeputyRow = Record<string, unknown>;
|
|
139
|
+
/** BLOB columns cross the wire as `{ "$b64": <base64> }`; revive to Uint8Array. */
|
|
140
|
+
export declare function reviveRow(row: DeputyRow): DeputyRow;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* things-deputy wire protocol: shared constants, request/response shapes, and
|
|
3
|
+
* path resolution for the broker's socket, token, and state directory.
|
|
4
|
+
*
|
|
5
|
+
* The helpers (deputy/src, deputy/reader) are deliberately dumb privileged
|
|
6
|
+
* proxies — the deputy runs fixed-shape osascript/shortcuts (mutations), the
|
|
7
|
+
* sandboxed reader serves read-only SQL and scoped file reads — so that macOS
|
|
8
|
+
* permission grants attach to their stable signed identities instead of
|
|
9
|
+
* whichever agent harness invokes the CLI. All product logic stays here in the
|
|
10
|
+
* library; the protocol therefore carries raw primitives, never operations.
|
|
11
|
+
* See docs/design/agent-daemon.md (§β1, §3b).
|
|
12
|
+
*/
|
|
13
|
+
import { homedir } from "node:os";
|
|
14
|
+
import { join } from "node:path";
|
|
15
|
+
import { stateDir } from "../paths.js";
|
|
16
|
+
export const DEPUTY_PROTOCOL_VERSION = 1;
|
|
17
|
+
/**
|
|
18
|
+
* The helpers version this package expects — the helpers are versioned on
|
|
19
|
+
* their OWN line (deputy/VERSION), decoupled from the package version, so a
|
|
20
|
+
* package release whose helper sources are unchanged never nags for (or
|
|
21
|
+
* forces) a reinstall of a byte-equivalent bundle. Bump deputy/VERSION with
|
|
22
|
+
* any helper-source change; a drift test asserts this constant matches it.
|
|
23
|
+
* The PROTOCOL version above remains the hard compatibility gate.
|
|
24
|
+
*/
|
|
25
|
+
export const EXPECTED_HELPERS_VERSION = "1.3.0";
|
|
26
|
+
/** The outer helper bundle's identifier (Things API Helper.app) — TCC + BTM identity. */
|
|
27
|
+
export const HELPERS_BUNDLE_ID = "com.pixelcog.things-api-helper";
|
|
28
|
+
/** launchd label (and signing identifier) of the broker. */
|
|
29
|
+
export const DEPUTY_LAUNCHD_LABEL = "com.pixelcog.things-deputy";
|
|
30
|
+
/**
|
|
31
|
+
* The deputy derives its own state dir from the same THINGS_API_STATE_DIR /
|
|
32
|
+
* XDG_STATE_HOME precedence as the library (deputy/src/main.swift mirrors
|
|
33
|
+
* this), so pointing both sides at one env is all a test needs.
|
|
34
|
+
*/
|
|
35
|
+
export function deputyStateDir(env = process.env) {
|
|
36
|
+
return join(stateDir(env), "deputy");
|
|
37
|
+
}
|
|
38
|
+
export function deputySocketPath(env = process.env) {
|
|
39
|
+
return join(deputyStateDir(env), "deputy.sock");
|
|
40
|
+
}
|
|
41
|
+
export function deputyTokenPath(env = process.env) {
|
|
42
|
+
return join(deputyStateDir(env), "token");
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The directory `helpers install` owns WHOLESALE: it is deleted and recreated
|
|
46
|
+
* on every install, so any previous layout (however old) is erased without
|
|
47
|
+
* dedicated migration logic, and the fresh inodes reset the kernel's
|
|
48
|
+
* per-vnode code-signature cache (copying over an executed inode makes every
|
|
49
|
+
* future exec die with SIGKILL — observed live 2026-08-21).
|
|
50
|
+
*/
|
|
51
|
+
export function helpersInstallDir(env = process.env) {
|
|
52
|
+
return join(deputyStateDir(env), "bin");
|
|
53
|
+
}
|
|
54
|
+
/** Where `helpers install` places the bundle. */
|
|
55
|
+
export function helpersInstalledBundlePath(env = process.env) {
|
|
56
|
+
return join(helpersInstallDir(env), "Things API Helper.app");
|
|
57
|
+
}
|
|
58
|
+
/** The installed deputy executable (the bundle's main executable). */
|
|
59
|
+
export function deputyInstalledBinaryPath(env = process.env) {
|
|
60
|
+
return join(helpersInstalledBundlePath(env), "Contents/MacOS/things-deputy");
|
|
61
|
+
}
|
|
62
|
+
/** The installed nested reader app. */
|
|
63
|
+
export function readerInstalledAppPath(env = process.env) {
|
|
64
|
+
return join(helpersInstalledBundlePath(env), "Contents/Helpers/things-reader.app");
|
|
65
|
+
}
|
|
66
|
+
/** launchd label (and bundle identifier) of the sandboxed reader. */
|
|
67
|
+
export const READER_LAUNCHD_LABEL = "com.pixelcog.things-reader";
|
|
68
|
+
/** Points every reader-side path somewhere else (mock readers in tests/lab). */
|
|
69
|
+
export const READER_DIR_ENV = "THINGS_API_READER_DIR";
|
|
70
|
+
/**
|
|
71
|
+
* The override path when one is set, else null. A set override means the
|
|
72
|
+
* rendezvous is an ORDINARY directory the caller chose — a mock reader is just
|
|
73
|
+
* a socket and a token file, with no bundle and no sandbox behind it.
|
|
74
|
+
*/
|
|
75
|
+
export function readerDirOverride(env = process.env) {
|
|
76
|
+
const explicit = env[READER_DIR_ENV];
|
|
77
|
+
return explicit !== undefined && explicit !== "" ? explicit : null;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Where clients meet the reader: `<state>/reader`, a directory WE own, outside
|
|
81
|
+
* every App Sandbox container.
|
|
82
|
+
*
|
|
83
|
+
* This placement is the whole point. launchd creates, binds, listens on and
|
|
84
|
+
* owns `reader.sock` here (the `Sockets` key in the reader's LaunchAgent) and
|
|
85
|
+
* hands the sandboxed process the already-listening fd at activation, so the
|
|
86
|
+
* reader never opens this path at all — a sandboxed process could not have
|
|
87
|
+
* bound anywhere but its own container. The access token is a sibling file the
|
|
88
|
+
* INSTALLER mints. Both are therefore ordinary files in the user's own state
|
|
89
|
+
* directory: a client `stat`/`open` on them crosses no container boundary,
|
|
90
|
+
* needs no TCC class, and works identically from every host app.
|
|
91
|
+
*
|
|
92
|
+
* Until helpers 1.3.0 both files lived in the reader's container home, which
|
|
93
|
+
* made every client probe a cross-app container access (the
|
|
94
|
+
* `kTCCServiceSystemPolicyAppData` consent class) — silent under an FDA host,
|
|
95
|
+
* a modal from anywhere else. See docs/design/permissions-doctrine.md
|
|
96
|
+
* (§ RESOLVED 2026-08-24).
|
|
97
|
+
*/
|
|
98
|
+
export function readerRendezvousDir(env = process.env) {
|
|
99
|
+
return readerDirOverride(env) ?? join(stateDir(env), "reader");
|
|
100
|
+
}
|
|
101
|
+
export function readerSocketPath(env = process.env) {
|
|
102
|
+
return join(readerRendezvousDir(env), "reader.sock");
|
|
103
|
+
}
|
|
104
|
+
export function readerTokenPath(env = process.env) {
|
|
105
|
+
return join(readerRendezvousDir(env), "token");
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The reader's App Sandbox container home — the OS picks the path from the
|
|
109
|
+
* bundle identifier, and the security-scoped bookmark that IS the read grant
|
|
110
|
+
* lives there. Reader-internal: nothing on the client side reads it. The one
|
|
111
|
+
* client-side use is `helpers uninstall --revoke`, which deletes the grant
|
|
112
|
+
* (a deliberate destructive act a human asked for), and the override redirects
|
|
113
|
+
* it so a suite never touches the developer's real container.
|
|
114
|
+
*/
|
|
115
|
+
export function readerSandboxContainerDir(env = process.env) {
|
|
116
|
+
return (readerDirOverride(env) ?? join(homedir(), "Library/Containers", READER_LAUNCHD_LABEL, "Data"));
|
|
117
|
+
}
|
|
118
|
+
/** The env var carrying the reader's expected token, injected by its LaunchAgent. */
|
|
119
|
+
export const READER_TOKEN_ENV = "THINGS_READER_TOKEN";
|
|
120
|
+
/** The `Sockets` key entry name launchd hands the reader at activation. */
|
|
121
|
+
export const READER_SOCKET_ENV = "THINGS_READER_SOCKET";
|
|
122
|
+
/** A protocol-level failure (the deputy answered `ok:false`, or never answered). */
|
|
123
|
+
export class DeputyRequestError extends Error {
|
|
124
|
+
code;
|
|
125
|
+
constructor(code, message) {
|
|
126
|
+
super(message);
|
|
127
|
+
this.name = "DeputyRequestError";
|
|
128
|
+
this.code = code;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** BLOB columns cross the wire as `{ "$b64": <base64> }`; revive to Uint8Array. */
|
|
132
|
+
export function reviveRow(row) {
|
|
133
|
+
for (const [key, value] of Object.entries(row)) {
|
|
134
|
+
if (value !== null &&
|
|
135
|
+
typeof value === "object" &&
|
|
136
|
+
"$b64" in value &&
|
|
137
|
+
typeof value.$b64 === "string") {
|
|
138
|
+
row[key] = new Uint8Array(Buffer.from(value.$b64, "base64"));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return row;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=protocol.js.map
|