@intentic/machine 1.336.0 → 1.338.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 +92 -1
- package/dist/agent-trial.d.ts.map +1 -1
- package/dist/agent-trial.js +5 -15
- package/dist/agent-trial.js.map +1 -1
- package/dist/autostart/autostart.d.ts +2 -0
- package/dist/autostart/autostart.d.ts.map +1 -1
- package/dist/autostart/autostart.js +20 -0
- package/dist/autostart/autostart.js.map +1 -1
- package/dist/autostart/before-sign-in.d.ts +12 -0
- package/dist/autostart/before-sign-in.d.ts.map +1 -0
- package/dist/autostart/before-sign-in.js +103 -0
- package/dist/autostart/before-sign-in.js.map +1 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +10 -1
- package/dist/commands.js.map +1 -1
- package/dist/daemon-base.d.ts.map +1 -1
- package/dist/daemon-base.js +2 -1
- package/dist/daemon-base.js.map +1 -1
- package/dist/device/commands.js +1 -1
- package/dist/device/commands.js.map +1 -1
- package/dist/device/config.d.ts +1 -1
- package/dist/device/config.d.ts.map +1 -1
- package/dist/device/config.js +3 -7
- package/dist/device/config.js.map +1 -1
- package/dist/device/connection.d.ts.map +1 -1
- package/dist/device/connection.js +1 -1
- package/dist/device/connection.js.map +1 -1
- package/dist/device/grant.d.ts +226 -1
- package/dist/device/grant.d.ts.map +1 -1
- package/dist/device/grant.js +2 -1
- package/dist/device/grant.js.map +1 -1
- package/dist/device/loopback-catch.d.ts +1 -1
- package/dist/device/loopback-catch.d.ts.map +1 -1
- package/dist/device/loopback-catch.js +1 -1
- package/dist/device/loopback-catch.js.map +1 -1
- package/dist/device/mcp.d.ts.map +1 -1
- package/dist/device/mcp.js +21 -13
- package/dist/device/mcp.js.map +1 -1
- package/dist/device/policy.d.ts +1 -1
- package/dist/device/policy.d.ts.map +1 -1
- package/dist/device/router.d.ts +227 -1
- package/dist/device/router.d.ts.map +1 -1
- package/dist/device/router.js +11 -0
- package/dist/device/router.js.map +1 -1
- package/dist/device/sandbox-rounds/auto-backup.d.ts +1 -1
- package/dist/device/sandbox-rounds/auto-backup.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/auto-backup.js +3 -18
- package/dist/device/sandbox-rounds/auto-backup.js.map +1 -1
- package/dist/device/sandbox-rounds/auto-prepare.d.ts +1 -1
- package/dist/device/sandbox-rounds/auto-prepare.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/ic-swaps.d.ts +1 -1
- package/dist/device/sandbox-rounds/ic-swaps.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/ic-swaps.js +3 -8
- package/dist/device/sandbox-rounds/ic-swaps.js.map +1 -1
- package/dist/device/sandbox-rounds/keeper.d.ts +1 -1
- package/dist/device/sandbox-rounds/keeper.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/keeper.js +2 -9
- package/dist/device/sandbox-rounds/keeper.js.map +1 -1
- package/dist/device/sandbox-rounds/probation-watch.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/probation-watch.js +2 -9
- package/dist/device/sandbox-rounds/probation-watch.js.map +1 -1
- package/dist/device/sandbox-rounds/sleep.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/sleep.js +3 -7
- package/dist/device/sandbox-rounds/sleep.js.map +1 -1
- package/dist/device/sandbox-rounds/swaps-fallback.d.ts +1 -1
- package/dist/device/sandbox-rounds/swaps-fallback.d.ts.map +1 -1
- package/dist/device/sandbox-rounds/swaps-fallback.js +3 -2
- package/dist/device/sandbox-rounds/swaps-fallback.js.map +1 -1
- package/dist/device/session.d.ts +5 -0
- package/dist/device/session.d.ts.map +1 -0
- package/dist/device/session.js +13 -0
- package/dist/device/session.js.map +1 -0
- package/dist/device/tools/agent.d.ts +1 -1
- package/dist/device/tools/agent.d.ts.map +1 -1
- package/dist/device/tools/agent.js +2 -2
- package/dist/device/tools/agent.js.map +1 -1
- package/dist/device/tools/android-parse.js +1 -1
- package/dist/device/tools/android-parse.js.map +1 -1
- package/dist/device/tools/android.d.ts +1 -1
- package/dist/device/tools/android.d.ts.map +1 -1
- package/dist/device/tools/android.js +1 -1
- package/dist/device/tools/android.js.map +1 -1
- package/dist/device/tools/apps.d.ts +1 -1
- package/dist/device/tools/apps.d.ts.map +1 -1
- package/dist/device/tools/browser.d.ts +1 -1
- package/dist/device/tools/browser.d.ts.map +1 -1
- package/dist/device/tools/command-ledger.d.ts.map +1 -1
- package/dist/device/tools/command-ledger.js +3 -11
- package/dist/device/tools/command-ledger.js.map +1 -1
- package/dist/device/tools/describe.d.ts +2 -1
- package/dist/device/tools/describe.d.ts.map +1 -1
- package/dist/device/tools/describe.js +13 -3
- package/dist/device/tools/describe.js.map +1 -1
- package/dist/device/tools/device.d.ts +1 -1
- package/dist/device/tools/device.d.ts.map +1 -1
- package/dist/device/tools/device.js +1 -1
- package/dist/device/tools/device.js.map +1 -1
- package/dist/device/tools/elements.d.ts +1 -1
- package/dist/device/tools/elements.d.ts.map +1 -1
- package/dist/device/tools/files.d.ts +1 -1
- package/dist/device/tools/files.d.ts.map +1 -1
- package/dist/device/tools/ic-binary.d.ts +3 -1
- package/dist/device/tools/ic-binary.d.ts.map +1 -1
- package/dist/device/tools/ic-binary.js +14 -7
- package/dist/device/tools/ic-binary.js.map +1 -1
- package/dist/device/tools/logs/logs.d.ts +1 -1
- package/dist/device/tools/logs/logs.d.ts.map +1 -1
- package/dist/device/tools/logs/logs.js +5 -11
- package/dist/device/tools/logs/logs.js.map +1 -1
- package/dist/device/tools/os/os.d.ts +2 -1
- package/dist/device/tools/os/os.d.ts.map +1 -1
- package/dist/device/tools/os/os.js +4 -8
- package/dist/device/tools/os/os.js.map +1 -1
- package/dist/device/tools/programs/artifacts.d.ts +2 -1
- package/dist/device/tools/programs/artifacts.d.ts.map +1 -1
- package/dist/device/tools/programs/artifacts.js.map +1 -1
- package/dist/device/tools/programs/device-tunnel.d.ts +2 -1
- package/dist/device/tools/programs/device-tunnel.d.ts.map +1 -1
- package/dist/device/tools/programs/device-tunnel.js.map +1 -1
- package/dist/device/tools/programs/programs.d.ts +1 -1
- package/dist/device/tools/programs/programs.d.ts.map +1 -1
- package/dist/device/tools/programs/programs.js +7 -11
- package/dist/device/tools/programs/programs.js.map +1 -1
- package/dist/device/tools/sandboxes.d.ts +2 -1
- package/dist/device/tools/sandboxes.d.ts.map +1 -1
- package/dist/device/tools/sandboxes.js +1 -1
- package/dist/device/tools/sandboxes.js.map +1 -1
- package/dist/device/tools/shell.d.ts +5 -1
- package/dist/device/tools/shell.d.ts.map +1 -1
- package/dist/device/tools/shell.js +10 -3
- package/dist/device/tools/shell.js.map +1 -1
- package/dist/engine-env.d.ts.map +1 -1
- package/dist/engine-env.js +2 -7
- package/dist/engine-env.js.map +1 -1
- package/dist/environments/auto-upgrade.d.ts +1 -1
- package/dist/environments/auto-upgrade.d.ts.map +1 -1
- package/dist/environments/auto-upgrade.js +1 -1
- package/dist/environments/auto-upgrade.js.map +1 -1
- package/dist/environments/crossing.js +1 -1
- package/dist/environments/crossing.js.map +1 -1
- package/dist/environments/machine-upgrade.js +1 -1
- package/dist/environments/machine-upgrade.js.map +1 -1
- package/dist/environments/machine.js +1 -1
- package/dist/environments/machine.js.map +1 -1
- package/dist/environments/wsl.js +4 -5
- package/dist/environments/wsl.js.map +1 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +4 -2
- package/dist/install.js.map +1 -1
- package/dist/keyring/answer.d.ts +18 -0
- package/dist/keyring/answer.d.ts.map +1 -0
- package/dist/keyring/answer.js +46 -0
- package/dist/keyring/answer.js.map +1 -0
- package/dist/keyring/askpass.d.ts +31 -0
- package/dist/keyring/askpass.d.ts.map +1 -0
- package/dist/keyring/askpass.js +119 -0
- package/dist/keyring/askpass.js.map +1 -0
- package/dist/keyring/commands.d.ts +24 -0
- package/dist/keyring/commands.d.ts.map +1 -0
- package/dist/keyring/commands.js +384 -0
- package/dist/keyring/commands.js.map +1 -0
- package/dist/keyring/feature.d.ts +10 -0
- package/dist/keyring/feature.d.ts.map +1 -0
- package/dist/keyring/feature.js +36 -0
- package/dist/keyring/feature.js.map +1 -0
- package/dist/keyring/flags.d.ts +63 -0
- package/dist/keyring/flags.d.ts.map +1 -0
- package/dist/keyring/flags.js +177 -0
- package/dist/keyring/flags.js.map +1 -0
- package/dist/keyring/keyring-status.d.ts +32 -0
- package/dist/keyring/keyring-status.d.ts.map +1 -0
- package/dist/keyring/keyring-status.js +41 -0
- package/dist/keyring/keyring-status.js.map +1 -0
- package/dist/keyring/relay.d.ts +22 -0
- package/dist/keyring/relay.d.ts.map +1 -0
- package/dist/keyring/relay.js +104 -0
- package/dist/keyring/relay.js.map +1 -0
- package/dist/keyring/secret-input.d.ts +14 -0
- package/dist/keyring/secret-input.d.ts.map +1 -0
- package/dist/keyring/secret-input.js +78 -0
- package/dist/keyring/secret-input.js.map +1 -0
- package/dist/keyring/service.d.ts +44 -0
- package/dist/keyring/service.d.ts.map +1 -0
- package/dist/keyring/service.js +258 -0
- package/dist/keyring/service.js.map +1 -0
- package/dist/machine-id.d.ts.map +1 -1
- package/dist/machine-id.js +4 -5
- package/dist/machine-id.js.map +1 -1
- package/dist/release/release-signature.d.ts +17 -0
- package/dist/release/release-signature.d.ts.map +1 -0
- package/dist/release/release-signature.js +78 -0
- package/dist/release/release-signature.js.map +1 -0
- package/dist/release/release-verify.d.ts +11 -0
- package/dist/release/release-verify.d.ts.map +1 -0
- package/dist/release/release-verify.js +74 -0
- package/dist/release/release-verify.js.map +1 -0
- package/dist/release.d.ts +6 -0
- package/dist/release.d.ts.map +1 -1
- package/dist/release.js +8 -2
- package/dist/release.js.map +1 -1
- package/dist/resident/handover.d.ts +19 -0
- package/dist/resident/handover.d.ts.map +1 -0
- package/dist/resident/handover.js +32 -0
- package/dist/resident/handover.js.map +1 -0
- package/dist/resident/last-exit.d.ts.map +1 -1
- package/dist/resident/last-exit.js +6 -23
- package/dist/resident/last-exit.js.map +1 -1
- package/dist/resident/resident.d.ts +4 -1
- package/dist/resident/resident.d.ts.map +1 -1
- package/dist/resident/resident.js +82 -20
- package/dist/resident/resident.js.map +1 -1
- package/dist/status.d.ts +4 -1
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +9 -2
- package/dist/status.js.map +1 -1
- package/dist/sync/attach-commands.js +1 -1
- package/dist/sync/attach-commands.js.map +1 -1
- package/dist/sync/commands.d.ts.map +1 -1
- package/dist/sync/commands.js +4 -1
- package/dist/sync/commands.js.map +1 -1
- package/dist/sync/config.d.ts +2 -1
- package/dist/sync/config.d.ts.map +1 -1
- package/dist/sync/config.js +1 -1
- package/dist/sync/config.js.map +1 -1
- package/dist/sync/docker-ports.d.ts.map +1 -1
- package/dist/sync/docker-ports.js +2 -8
- package/dist/sync/docker-ports.js.map +1 -1
- package/dist/sync/environment.d.ts.map +1 -1
- package/dist/sync/environment.js +3 -10
- package/dist/sync/environment.js.map +1 -1
- package/dist/sync/forget-command.d.ts.map +1 -1
- package/dist/sync/forget-command.js +2 -6
- package/dist/sync/forget-command.js.map +1 -1
- package/dist/sync/gone.js +1 -1
- package/dist/sync/gone.js.map +1 -1
- package/dist/sync/mirror.d.ts +1 -1
- package/dist/sync/mirror.d.ts.map +1 -1
- package/dist/sync/mirror.js +3 -3
- package/dist/sync/mirror.js.map +1 -1
- package/dist/sync/mutagen.d.ts +1 -2
- package/dist/sync/mutagen.d.ts.map +1 -1
- package/dist/sync/mutagen.js +4 -6
- package/dist/sync/mutagen.js.map +1 -1
- package/dist/sync/project/project-delivery.d.ts +1 -1
- package/dist/sync/project/project-delivery.d.ts.map +1 -1
- package/dist/sync/project/project-delivery.js +1 -1
- package/dist/sync/project/project-delivery.js.map +1 -1
- package/dist/sync/project/project-files.d.ts +1 -1
- package/dist/sync/project/project-files.d.ts.map +1 -1
- package/dist/sync/project/project-local.d.ts.map +1 -1
- package/dist/sync/project/project-local.js +2 -8
- package/dist/sync/project/project-local.js.map +1 -1
- package/dist/sync/project/project-remote.d.ts.map +1 -1
- package/dist/sync/project/project-remote.js +2 -8
- package/dist/sync/project/project-remote.js.map +1 -1
- package/dist/sync/project/project-transfer.d.ts +1 -1
- package/dist/sync/project/project-transfer.d.ts.map +1 -1
- package/dist/sync/report.d.ts +1 -1
- package/dist/sync/report.d.ts.map +1 -1
- package/dist/sync/report.js +2 -2
- package/dist/sync/report.js.map +1 -1
- package/dist/sync/residue.d.ts +1 -1
- package/dist/sync/residue.d.ts.map +1 -1
- package/dist/sync/residue.js +1 -1
- package/dist/sync/residue.js.map +1 -1
- package/dist/sync/restore-points.d.ts.map +1 -1
- package/dist/sync/restore-points.js +2 -8
- package/dist/sync/restore-points.js.map +1 -1
- package/dist/sync/siblings.d.ts.map +1 -1
- package/dist/sync/siblings.js +4 -10
- package/dist/sync/siblings.js.map +1 -1
- package/dist/sync/ssh.d.ts.map +1 -1
- package/dist/sync/ssh.js +4 -3
- package/dist/sync/ssh.js.map +1 -1
- package/dist/sync/swap-pause.js +1 -1
- package/dist/sync/swap-pause.js.map +1 -1
- package/dist/upgrade.d.ts +2 -0
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +36 -4
- package/dist/upgrade.js.map +1 -1
- package/dist/upkeep/doctor.d.ts.map +1 -1
- package/dist/upkeep/doctor.js +4 -1
- package/dist/upkeep/doctor.js.map +1 -1
- package/dist/upkeep/reconcile.d.ts +1 -1
- package/dist/upkeep/reconcile.d.ts.map +1 -1
- package/dist/upkeep/reconcile.js +4 -15
- package/dist/upkeep/reconcile.js.map +1 -1
- package/dist/upkeep/retention.d.ts.map +1 -1
- package/dist/upkeep/retention.js +13 -17
- package/dist/upkeep/retention.js.map +1 -1
- package/dist/upkeep/trash.d.ts.map +1 -1
- package/dist/upkeep/trash.js +2 -1
- package/dist/upkeep/trash.js.map +1 -1
- package/package.json +9 -8
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { BackendConfigSchema, BackendRefSchema, EntryPatchSchema, EntryRulesSchema, } from "@intentic/keyring";
|
|
2
|
+
import { KeyringSecretNameSchema, KeyringShareModeSchema, } from "@intentic/sandbox-contract/schemas/keyring";
|
|
3
|
+
export class KeyringCliError extends Error {
|
|
4
|
+
code;
|
|
5
|
+
constructor(code, message, options) {
|
|
6
|
+
super(message, options);
|
|
7
|
+
this.name = "KeyringCliError";
|
|
8
|
+
this.code = code;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const usage = (message) => new KeyringCliError("usage", message);
|
|
12
|
+
const FLAG_OF = new Map([
|
|
13
|
+
["kind", "--kind"],
|
|
14
|
+
["programs", "--program"],
|
|
15
|
+
["packages", "--package"],
|
|
16
|
+
["hosts", "--host"],
|
|
17
|
+
["anyField", "--any-field"],
|
|
18
|
+
["username", "--username"],
|
|
19
|
+
["askpass", "--askpass"],
|
|
20
|
+
["askpassRememberMinutes", "--remember-minutes"],
|
|
21
|
+
["backend", "--backend"],
|
|
22
|
+
["ref", "--ref"],
|
|
23
|
+
["field", "--field"],
|
|
24
|
+
["attribute", "--attribute"],
|
|
25
|
+
["cli", "--cli"],
|
|
26
|
+
["account", "--account"],
|
|
27
|
+
["tokenEntry", "--token-entry"],
|
|
28
|
+
["passwordEntry", "--password-entry"],
|
|
29
|
+
["database", "--database"],
|
|
30
|
+
["keyFile", "--key-file"],
|
|
31
|
+
]);
|
|
32
|
+
const issuesSentence = (error) => error.issues
|
|
33
|
+
.map((issue) => {
|
|
34
|
+
const flag = issue.path.map((part) => FLAG_OF.get(String(part))).find((name) => name !== undefined);
|
|
35
|
+
return `${flag ?? (issue.path.join(".") || "the entry")}: ${issue.message}`;
|
|
36
|
+
})
|
|
37
|
+
.join("; ");
|
|
38
|
+
const parsed = (result) => {
|
|
39
|
+
if (!result.success) {
|
|
40
|
+
throw usage(issuesSentence(result.error));
|
|
41
|
+
}
|
|
42
|
+
return result.data;
|
|
43
|
+
};
|
|
44
|
+
export const entryName = (name) => {
|
|
45
|
+
const result = KeyringSecretNameSchema.safeParse(name);
|
|
46
|
+
if (!result.success) {
|
|
47
|
+
throw usage(`"${name}" is not a name an entry can have: a letter or underscore, then letters, digits, \`_\`, \`.\` or \`-\`, at most 128 characters.`);
|
|
48
|
+
}
|
|
49
|
+
return result.data;
|
|
50
|
+
};
|
|
51
|
+
export const listOf = (given) => {
|
|
52
|
+
if (given === undefined) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
return given.length === 1 && given[0] === "" ? [] : [...given];
|
|
56
|
+
};
|
|
57
|
+
const addRules = (flags) => parsed(EntryRulesSchema.safeParse({
|
|
58
|
+
kind: flags.kind ?? "password",
|
|
59
|
+
programs: listOf(flags.program) ?? [],
|
|
60
|
+
packages: listOf(flags.package) ?? [],
|
|
61
|
+
hosts: listOf(flags.host) ?? [],
|
|
62
|
+
anyField: flags.anyField,
|
|
63
|
+
username: flags.username,
|
|
64
|
+
askpass: listOf(flags.askpass) ?? [],
|
|
65
|
+
askpassRememberMinutes: flags.rememberMinutes ?? 0,
|
|
66
|
+
}));
|
|
67
|
+
const backendRef = (flags) => {
|
|
68
|
+
if (flags.backend === undefined) {
|
|
69
|
+
if (flags.ref !== undefined || flags.field !== undefined || flags.attribute !== undefined) {
|
|
70
|
+
throw usage("--ref, --field and --attribute name where a password manager keeps the value: give --backend with them.");
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
if (flags.ref === undefined || flags.ref === "") {
|
|
75
|
+
throw usage(`--backend ${flags.backend} reads the value from ${flags.backend}: --ref says which item.`);
|
|
76
|
+
}
|
|
77
|
+
if (flags.field !== undefined && flags.backend !== "bitwarden") {
|
|
78
|
+
throw usage(`--field picks a Bitwarden item's field; it means nothing to ${flags.backend}.`);
|
|
79
|
+
}
|
|
80
|
+
if (flags.attribute !== undefined && flags.backend !== "keepassxc") {
|
|
81
|
+
throw usage(`--attribute picks a KeePassXC entry's attribute; it means nothing to ${flags.backend}.`);
|
|
82
|
+
}
|
|
83
|
+
if (flags.stdin) {
|
|
84
|
+
throw usage(`An entry read from ${flags.backend} holds no value of its own: leave out --stdin.`);
|
|
85
|
+
}
|
|
86
|
+
return parsed(BackendRefSchema.safeParse({ backend: flags.backend, ref: flags.ref, field: flags.field, attribute: flags.attribute }));
|
|
87
|
+
};
|
|
88
|
+
export const addPlan = (name, flags) => {
|
|
89
|
+
const plan = { name: entryName(name), rules: addRules(flags), replace: flags.replace, needsValue: flags.backend === undefined };
|
|
90
|
+
const backend = backendRef(flags);
|
|
91
|
+
return backend === undefined ? plan : { ...plan, backend };
|
|
92
|
+
};
|
|
93
|
+
export const editPatch = (flags) => parsed(EntryPatchSchema.safeParse({
|
|
94
|
+
kind: flags.kind,
|
|
95
|
+
programs: listOf(flags.program),
|
|
96
|
+
packages: listOf(flags.package),
|
|
97
|
+
hosts: listOf(flags.host),
|
|
98
|
+
anyField: flags.anyField === undefined ? undefined : flags.anyField === "on",
|
|
99
|
+
username: flags.username,
|
|
100
|
+
askpass: listOf(flags.askpass),
|
|
101
|
+
askpassRememberMinutes: flags.rememberMinutes,
|
|
102
|
+
}));
|
|
103
|
+
export const editTakesValue = (flags, patch) => {
|
|
104
|
+
if (flags.stdin) {
|
|
105
|
+
return "stdin";
|
|
106
|
+
}
|
|
107
|
+
return Object.values(patch).every((rule) => rule === undefined) ? "terminal" : "none";
|
|
108
|
+
};
|
|
109
|
+
export const shareMode = (mode) => {
|
|
110
|
+
const result = KeyringShareModeSchema.safeParse(mode);
|
|
111
|
+
if (!result.success) {
|
|
112
|
+
throw usage(`--mode is each-use, while-here or copy, not "${mode}".`);
|
|
113
|
+
}
|
|
114
|
+
return result.data;
|
|
115
|
+
};
|
|
116
|
+
const sameUrl = (a, b) => {
|
|
117
|
+
const left = URL.parse(a);
|
|
118
|
+
const right = URL.parse(b);
|
|
119
|
+
return left !== null && right !== null && left.origin === right.origin && left.pathname.replace(/\/+$/u, "") === right.pathname.replace(/\/+$/u, "");
|
|
120
|
+
};
|
|
121
|
+
export const linkNamed = (links, named) => links.find((link) => link.id === named) ?? links.find((link) => sameUrl(link.sandboxUrl, named));
|
|
122
|
+
export const shareTarget = (links, named) => {
|
|
123
|
+
if (named === undefined || named.trim() === "") {
|
|
124
|
+
throw usage("--sandbox names the sandbox to share with: its address, or its link's id from `intentic-machine status`.");
|
|
125
|
+
}
|
|
126
|
+
const link = linkNamed(links, named.trim());
|
|
127
|
+
if (link === undefined) {
|
|
128
|
+
throw usage(links.length === 0
|
|
129
|
+
? `No sandbox is linked to this computer, so there is nothing to share ${named} with: connect one from a card in its chat first.`
|
|
130
|
+
: `No sandbox linked to this computer is ${named}: it is one of ${links.map((each) => `${each.id} (${each.sandboxUrl})`).join(", ")}.`);
|
|
131
|
+
}
|
|
132
|
+
return link;
|
|
133
|
+
};
|
|
134
|
+
export const unshareTarget = (links, named) => {
|
|
135
|
+
if (named === undefined || named.trim() === "") {
|
|
136
|
+
throw usage("--sandbox names the sandbox to stop sharing with: its address, or its link's id.");
|
|
137
|
+
}
|
|
138
|
+
const link = linkNamed(links, named.trim());
|
|
139
|
+
if (link !== undefined) {
|
|
140
|
+
return link.sandboxUrl;
|
|
141
|
+
}
|
|
142
|
+
if (URL.parse(named.trim()) === null) {
|
|
143
|
+
throw usage(`No sandbox linked to this computer has the id ${named}, and it is not an address either.`);
|
|
144
|
+
}
|
|
145
|
+
return named.trim();
|
|
146
|
+
};
|
|
147
|
+
const BACKEND_FLAGS = {
|
|
148
|
+
"1password": ["account", "tokenEntry"],
|
|
149
|
+
bitwarden: ["passwordEntry"],
|
|
150
|
+
keepassxc: ["database", "keyFile", "passwordEntry"],
|
|
151
|
+
};
|
|
152
|
+
const KEBAB = {
|
|
153
|
+
cli: "--cli",
|
|
154
|
+
account: "--account",
|
|
155
|
+
tokenEntry: "--token-entry",
|
|
156
|
+
passwordEntry: "--password-entry",
|
|
157
|
+
database: "--database",
|
|
158
|
+
keyFile: "--key-file",
|
|
159
|
+
json: "--json",
|
|
160
|
+
};
|
|
161
|
+
export const backendConfig = (backend, flags) => {
|
|
162
|
+
const takes = new Set(BACKEND_FLAGS[backend]);
|
|
163
|
+
const foreign = ["account", "tokenEntry", "passwordEntry", "database", "keyFile"].filter((flag) => flags[flag] !== undefined && !takes.has(flag));
|
|
164
|
+
if (foreign.length > 0) {
|
|
165
|
+
throw usage(`${foreign.map((flag) => KEBAB[flag]).join(", ")} ${foreign.length === 1 ? "is" : "are"} not ${backend}'s to take.`);
|
|
166
|
+
}
|
|
167
|
+
return parsed(BackendConfigSchema.safeParse({
|
|
168
|
+
backend,
|
|
169
|
+
cli: flags.cli,
|
|
170
|
+
account: flags.account,
|
|
171
|
+
tokenEntry: flags.tokenEntry,
|
|
172
|
+
passwordEntry: flags.passwordEntry,
|
|
173
|
+
database: flags.database,
|
|
174
|
+
keyFile: flags.keyFile,
|
|
175
|
+
}));
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/keyring/flags.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Item } from "@intentic/local-agent";
|
|
2
|
+
import type { KeyringState } from "@intentic/sandbox-contract/schemas/keyring";
|
|
3
|
+
export interface KeyringSummary {
|
|
4
|
+
readonly installed: boolean;
|
|
5
|
+
readonly running: boolean;
|
|
6
|
+
readonly setUp: boolean;
|
|
7
|
+
readonly state?: KeyringState;
|
|
8
|
+
}
|
|
9
|
+
export declare const readKeyringSummary: () => Promise<KeyringSummary>;
|
|
10
|
+
export interface AskpassAnswer {
|
|
11
|
+
readonly installed: boolean;
|
|
12
|
+
readonly path?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const readAskpassAnswer: () => Promise<AskpassAnswer>;
|
|
15
|
+
export interface KeyringStatusAnswer extends KeyringSummary {
|
|
16
|
+
readonly ok: true;
|
|
17
|
+
readonly askpass: AskpassAnswer;
|
|
18
|
+
readonly hardened: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare const readKeyringStatus: () => Promise<KeyringStatusAnswer>;
|
|
21
|
+
export declare const clock: (ms: number) => string;
|
|
22
|
+
export declare const keyringLine: (line: KeyringStatusLine) => Item;
|
|
23
|
+
export interface KeyringStatusLine {
|
|
24
|
+
readonly installed: boolean;
|
|
25
|
+
readonly running: boolean;
|
|
26
|
+
readonly setUp: boolean;
|
|
27
|
+
readonly locked?: boolean;
|
|
28
|
+
readonly unlockedUntil?: number;
|
|
29
|
+
readonly version?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare const keyringStatusLine: (summary: KeyringSummary) => KeyringStatusLine;
|
|
32
|
+
//# sourceMappingURL=keyring-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyring-status.d.ts","sourceRoot":"","sources":["../../src/keyring/keyring-status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAQ/E,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;CACjC;AAED,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,cAAc,CAKjE,CAAC;AAGF,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,aAAa,CAG/D,CAAC;AAGF,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACvD,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAEhC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,mBAAmB,CAGrE,CAAC;AAGF,eAAO,MAAM,KAAK,OAAQ,MAAM,KAAG,MAAsC,CAAC;AAG1E,eAAO,MAAM,WAAW,SAAU,iBAAiB,KAAG,IAYrD,CAAC;AAGF,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,iBAAiB,YAAa,cAAc,KAAG,iBAO3D,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { KeyringUnavailable } from "@intentic/keyring";
|
|
2
|
+
import { localZone, wallClockIn } from "@intentic/sandbox-contract/time/zone";
|
|
3
|
+
import { askpassStatus } from "./askpass.js";
|
|
4
|
+
import { hardenedHere, keyringInstalled, keyringState } from "./service.js";
|
|
5
|
+
export const readKeyringSummary = async () => {
|
|
6
|
+
const state = await keyringState();
|
|
7
|
+
const running = !(state instanceof KeyringUnavailable);
|
|
8
|
+
const summary = { installed: keyringInstalled(), running, setUp: running && state.ok && state.setUp };
|
|
9
|
+
return running && state.ok ? { ...summary, state: state.state } : summary;
|
|
10
|
+
};
|
|
11
|
+
export const readAskpassAnswer = async () => {
|
|
12
|
+
const status = await askpassStatus();
|
|
13
|
+
return status.path === undefined ? { installed: status.installed } : { installed: status.installed, path: status.path };
|
|
14
|
+
};
|
|
15
|
+
export const readKeyringStatus = async () => {
|
|
16
|
+
const [summary, askpass, hardened] = await Promise.all([readKeyringSummary(), readAskpassAnswer(), hardenedHere()]);
|
|
17
|
+
return { ok: true, ...summary, askpass, hardened };
|
|
18
|
+
};
|
|
19
|
+
export const clock = (ms) => wallClockIn(ms, localZone());
|
|
20
|
+
export const keyringLine = (line) => {
|
|
21
|
+
if (!line.installed) {
|
|
22
|
+
return { tone: "skip", name: "keyring", meta: "not installed (`intentic-machine keyring setup`)" };
|
|
23
|
+
}
|
|
24
|
+
if (!line.running) {
|
|
25
|
+
return { tone: "fail", name: "keyring", meta: "installed, not running (`intentic-machine keyring setup` starts it)" };
|
|
26
|
+
}
|
|
27
|
+
if (!line.setUp) {
|
|
28
|
+
return { tone: "warn", name: "keyring", meta: "running, not set up (`intentic-machine keyring setup`)" };
|
|
29
|
+
}
|
|
30
|
+
const lockWords = line.locked === false ? `unlocked${line.unlockedUntil === undefined ? "" : ` until ${clock(line.unlockedUntil)}`}` : "locked";
|
|
31
|
+
return { tone: "ok", name: "keyring", meta: `running${line.version === undefined ? "" : ` ${line.version}`} · ${lockWords}` };
|
|
32
|
+
};
|
|
33
|
+
export const keyringStatusLine = (summary) => {
|
|
34
|
+
const line = { installed: summary.installed, running: summary.running, setUp: summary.setUp };
|
|
35
|
+
if (summary.state === undefined) {
|
|
36
|
+
return line;
|
|
37
|
+
}
|
|
38
|
+
const known = { ...line, locked: summary.state.locked, version: summary.state.version };
|
|
39
|
+
return summary.state.unlockedUntil === undefined ? known : { ...known, unlockedUntil: summary.state.unlockedUntil };
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=keyring-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyring-status.js","sourceRoot":"","sources":["../../src/keyring/keyring-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { KeyringCopies, KeyringInboxItem, KeyringInboxResult, KeyringReleaseResult, KeyringShares, KeyringSyncDeliverResultSchema, KeyringSyncDeliverSchema, KeyringSyncOutboxSchema, KeyringSyncPairResultSchema, KeyringSyncPairSchema, KeyringSyncState, KeyringTypeInput, KeyringTypeResult, SignedKeyringGrant } from "@intentic/sandbox-contract/schemas/keyring";
|
|
2
|
+
import type { z } from "zod";
|
|
3
|
+
type SyncPair = z.infer<typeof KeyringSyncPairSchema>;
|
|
4
|
+
type SyncPairResult = z.infer<typeof KeyringSyncPairResultSchema>;
|
|
5
|
+
type SyncOutbox = z.infer<typeof KeyringSyncOutboxSchema>;
|
|
6
|
+
type SyncDeliver = z.infer<typeof KeyringSyncDeliverSchema>;
|
|
7
|
+
type SyncDeliverResult = z.infer<typeof KeyringSyncDeliverResultSchema>;
|
|
8
|
+
export interface KeyringLink {
|
|
9
|
+
readonly sandboxUrl: string;
|
|
10
|
+
readonly address?: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
export declare const keyringShares: (link: KeyringLink) => Promise<KeyringShares>;
|
|
13
|
+
export declare const keyringRelease: (link: KeyringLink, grant: SignedKeyringGrant) => Promise<KeyringReleaseResult>;
|
|
14
|
+
export declare const keyringType: (link: KeyringLink, input: KeyringTypeInput) => Promise<KeyringTypeResult>;
|
|
15
|
+
export declare const keyringInbox: (link: KeyringLink, item: KeyringInboxItem) => Promise<KeyringInboxResult>;
|
|
16
|
+
export declare const keyringCopies: (link: KeyringLink) => Promise<KeyringCopies>;
|
|
17
|
+
export declare const keyringSyncState: (link: KeyringLink) => Promise<KeyringSyncState>;
|
|
18
|
+
export declare const keyringSyncPair: (link: KeyringLink, pair: SyncPair) => Promise<SyncPairResult>;
|
|
19
|
+
export declare const keyringSyncOutbox: (link: KeyringLink) => Promise<SyncOutbox>;
|
|
20
|
+
export declare const keyringSyncDeliver: (link: KeyringLink, deliver: SyncDeliver) => Promise<SyncDeliverResult>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=relay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/keyring/relay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAElB,oBAAoB,EACpB,aAAa,EACb,8BAA8B,EAC9B,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EACrB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,KAAK,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtD,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAClE,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC1D,KAAK,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC5D,KAAK,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAYxE,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAwCD,eAAO,MAAM,aAAa,SAAgB,WAAW,KAAG,OAAO,CAAC,aAAa,CAkB5E,CAAC;AAEF,eAAO,MAAM,cAAc,SAAgB,WAAW,SAAS,kBAAkB,KAAG,OAAO,CAAC,oBAAoB,CAG/G,CAAC;AAEF,eAAO,MAAM,WAAW,SAAgB,WAAW,SAAS,gBAAgB,KAAG,OAAO,CAAC,iBAAiB,CAGvG,CAAC;AAIF,eAAO,MAAM,YAAY,SAAgB,WAAW,QAAQ,gBAAgB,KAAG,OAAO,CAAC,kBAAkB,CAUxG,CAAC;AAIF,eAAO,MAAM,aAAa,SAAgB,WAAW,KAAG,OAAO,CAAC,aAAa,CAS5E,CAAC;AAGF,eAAO,MAAM,gBAAgB,SAAgB,WAAW,KAAG,OAAO,CAAC,gBAAgB,CASlF,CAAC;AAEF,eAAO,MAAM,eAAe,SAAgB,WAAW,QAAQ,QAAQ,KAAG,OAAO,CAAC,cAAc,CAG/F,CAAC;AAEF,eAAO,MAAM,iBAAiB,SAAgB,WAAW,KAAG,OAAO,CAAC,UAAU,CAS7E,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAgB,WAAW,WAAW,WAAW,KAAG,OAAO,CAAC,iBAAiB,CAS3G,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { askKeyring, keyringPaths, KeyringUnavailable } from "@intentic/keyring";
|
|
2
|
+
import { ORPCError } from "@orpc/server";
|
|
3
|
+
const addressOf = (link) => link.address ?? keyringPaths().address;
|
|
4
|
+
const noKeyring = (error) => ({ ok: false, code: "no-keyring", refusal: `No keyring answers on this computer: ${error.message}.` });
|
|
5
|
+
const ask = async (link, request) => {
|
|
6
|
+
try {
|
|
7
|
+
return await askKeyring({ address: addressOf(link) }, request);
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
if (error instanceof KeyringUnavailable) {
|
|
11
|
+
return error;
|
|
12
|
+
}
|
|
13
|
+
throw error;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const refusedAsError = (answer) => new ORPCError("SERVICE_UNAVAILABLE", { message: answer.refusal, data: { code: answer.code } });
|
|
17
|
+
const sameSandbox = (a, b) => {
|
|
18
|
+
const left = URL.parse(a);
|
|
19
|
+
const right = URL.parse(b);
|
|
20
|
+
return left !== null && right !== null && left.origin === right.origin && left.pathname.replace(/\/+$/u, "") === right.pathname.replace(/\/+$/u, "");
|
|
21
|
+
};
|
|
22
|
+
export const keyringShares = async (link) => {
|
|
23
|
+
const [state, shares] = await Promise.all([ask(link, { op: "state" }), ask(link, { op: "shares", sandbox: link.sandboxUrl })]);
|
|
24
|
+
if (state instanceof KeyringUnavailable) {
|
|
25
|
+
return { pointers: [], reason: noKeyring(state).refusal };
|
|
26
|
+
}
|
|
27
|
+
if (!state.ok) {
|
|
28
|
+
return { pointers: [], reason: state.refusal };
|
|
29
|
+
}
|
|
30
|
+
if (!state.setUp) {
|
|
31
|
+
return { pointers: [], reason: "The keyring on this computer is installed but not set up yet: `intentic-machine keyring setup` on it sets it up." };
|
|
32
|
+
}
|
|
33
|
+
if (shares instanceof KeyringUnavailable) {
|
|
34
|
+
return { keyring: state.state, pointers: [], reason: noKeyring(shares).refusal };
|
|
35
|
+
}
|
|
36
|
+
if (!shares.ok) {
|
|
37
|
+
return { keyring: state.state, pointers: [], reason: shares.refusal };
|
|
38
|
+
}
|
|
39
|
+
return { keyring: state.state, pointers: shares.pointers };
|
|
40
|
+
};
|
|
41
|
+
export const keyringRelease = async (link, grant) => {
|
|
42
|
+
const answer = await ask(link, { op: "release", grant });
|
|
43
|
+
return answer instanceof KeyringUnavailable ? noKeyring(answer) : answer;
|
|
44
|
+
};
|
|
45
|
+
export const keyringType = async (link, input) => {
|
|
46
|
+
const answer = await ask(link, { op: "type", input });
|
|
47
|
+
return answer instanceof KeyringUnavailable ? noKeyring(answer) : answer;
|
|
48
|
+
};
|
|
49
|
+
export const keyringInbox = async (link, item) => {
|
|
50
|
+
if (!sameSandbox(item.sandbox, link.sandboxUrl)) {
|
|
51
|
+
return {
|
|
52
|
+
ok: false,
|
|
53
|
+
code: "not-shared",
|
|
54
|
+
refusal: `This item names ${item.sandbox} as where it came from, but it arrived from ${link.sandboxUrl}: a sandbox can only send a value to be kept for itself.`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const answer = await ask(link, { op: "inbox", item });
|
|
58
|
+
return answer instanceof KeyringUnavailable ? noKeyring(answer) : answer;
|
|
59
|
+
};
|
|
60
|
+
export const keyringCopies = async (link) => {
|
|
61
|
+
const answer = await ask(link, { op: "copies", sandbox: link.sandboxUrl });
|
|
62
|
+
if (answer instanceof KeyringUnavailable) {
|
|
63
|
+
return { copies: [] };
|
|
64
|
+
}
|
|
65
|
+
if (!answer.ok) {
|
|
66
|
+
throw refusedAsError(answer);
|
|
67
|
+
}
|
|
68
|
+
return { copies: answer.copies };
|
|
69
|
+
};
|
|
70
|
+
export const keyringSyncState = async (link) => {
|
|
71
|
+
const answer = await ask(link, { op: "sync-state" });
|
|
72
|
+
if (answer instanceof KeyringUnavailable) {
|
|
73
|
+
throw refusedAsError(noKeyring(answer));
|
|
74
|
+
}
|
|
75
|
+
if (!answer.ok) {
|
|
76
|
+
throw refusedAsError(answer);
|
|
77
|
+
}
|
|
78
|
+
return answer.sync;
|
|
79
|
+
};
|
|
80
|
+
export const keyringSyncPair = async (link, pair) => {
|
|
81
|
+
const answer = await ask(link, { op: "sync-pair", pair });
|
|
82
|
+
return answer instanceof KeyringUnavailable ? noKeyring(answer) : answer;
|
|
83
|
+
};
|
|
84
|
+
export const keyringSyncOutbox = async (link) => {
|
|
85
|
+
const answer = await ask(link, { op: "sync-outbox" });
|
|
86
|
+
if (answer instanceof KeyringUnavailable) {
|
|
87
|
+
return { items: [] };
|
|
88
|
+
}
|
|
89
|
+
if (!answer.ok) {
|
|
90
|
+
throw refusedAsError(answer);
|
|
91
|
+
}
|
|
92
|
+
return { items: answer.items };
|
|
93
|
+
};
|
|
94
|
+
export const keyringSyncDeliver = async (link, deliver) => {
|
|
95
|
+
const answer = await ask(link, { op: "sync-deliver", deliver });
|
|
96
|
+
if (answer instanceof KeyringUnavailable) {
|
|
97
|
+
return { accepted: 0 };
|
|
98
|
+
}
|
|
99
|
+
if (!answer.ok) {
|
|
100
|
+
throw refusedAsError(answer);
|
|
101
|
+
}
|
|
102
|
+
return { accepted: answer.accepted };
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=relay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../../src/keyring/relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const VALUE_MAX_BYTES: number;
|
|
2
|
+
export interface SecretTerminal {
|
|
3
|
+
readonly input: NodeJS.ReadableStream & {
|
|
4
|
+
readonly isTTY?: boolean;
|
|
5
|
+
setRawMode?: (raw: boolean) => void;
|
|
6
|
+
};
|
|
7
|
+
readonly output: {
|
|
8
|
+
write: (chunk: string) => void;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare const readHidden: (prompt: string, terminal?: SecretTerminal) => Promise<string>;
|
|
12
|
+
export declare const readConfirmed: (what: string, terminal?: SecretTerminal) => Promise<string>;
|
|
13
|
+
export declare const readStdin: (input?: NodeJS.ReadableStream) => Promise<string>;
|
|
14
|
+
//# sourceMappingURL=secret-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-input.d.ts","sourceRoot":"","sources":["../../src/keyring/secret-input.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,eAAe,QAAY,CAAC;AAGzC,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,GAAG;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,CAAC;IAC1G,QAAQ,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACvD;AASD,eAAO,MAAM,UAAU,WAAkB,MAAM,aAAY,cAAc,KAAoB,OAAO,CAAC,MAAM,CAuC1G,CAAC;AAGF,eAAO,MAAM,aAAa,SAAgB,MAAM,aAAY,cAAc,KAAoB,OAAO,CAAC,MAAM,CAU3G,CAAC;AAGF,eAAO,MAAM,SAAS,WAAiB,MAAM,CAAC,cAAc,KAAmB,OAAO,CAAC,MAAM,CAiB5F,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { KeyringCliError } from "./flags.js";
|
|
2
|
+
export const VALUE_MAX_BYTES = 32 * 1024;
|
|
3
|
+
const realTerminal = () => ({ input: process.stdin, output: process.stderr });
|
|
4
|
+
const CTRL_C = "\u0003";
|
|
5
|
+
const CTRL_D = "\u0004";
|
|
6
|
+
const BACKSPACE = new Set(["\u007f", "\b"]);
|
|
7
|
+
export const readHidden = async (prompt, terminal = realTerminal()) => {
|
|
8
|
+
const { input, output } = terminal;
|
|
9
|
+
if (input.isTTY !== true || input.setRawMode === undefined) {
|
|
10
|
+
throw new KeyringCliError("usage", "There is no terminal here to type it into without it showing: pipe it in and pass --stdin.");
|
|
11
|
+
}
|
|
12
|
+
const setRawMode = input.setRawMode.bind(input);
|
|
13
|
+
output.write(prompt);
|
|
14
|
+
setRawMode(true);
|
|
15
|
+
input.setEncoding("utf8");
|
|
16
|
+
input.resume();
|
|
17
|
+
try {
|
|
18
|
+
return await new Promise((resolve, reject) => {
|
|
19
|
+
const typed = [];
|
|
20
|
+
const onData = (chunk) => {
|
|
21
|
+
for (const character of String(chunk)) {
|
|
22
|
+
if (character === "\r" || character === "\n" || (character === CTRL_D && typed.length === 0)) {
|
|
23
|
+
input.off("data", onData);
|
|
24
|
+
resolve(typed.join(""));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (character === CTRL_C) {
|
|
28
|
+
input.off("data", onData);
|
|
29
|
+
reject(new KeyringCliError("declined", "Cancelled: nothing was typed in."));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (BACKSPACE.has(character)) {
|
|
33
|
+
typed.pop();
|
|
34
|
+
}
|
|
35
|
+
else if (character >= " ") {
|
|
36
|
+
typed.push(character);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
input.on("data", onData);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
setRawMode(false);
|
|
45
|
+
input.pause();
|
|
46
|
+
output.write("\n");
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
export const readConfirmed = async (what, terminal = realTerminal()) => {
|
|
50
|
+
const first = await readHidden(`${what}: `, terminal);
|
|
51
|
+
if (first === "") {
|
|
52
|
+
throw new KeyringCliError("usage", `Nothing was typed for ${what.toLowerCase()}.`);
|
|
53
|
+
}
|
|
54
|
+
const again = await readHidden(`${what}, again to confirm: `, terminal);
|
|
55
|
+
if (again !== first) {
|
|
56
|
+
throw new KeyringCliError("usage", "The two did not match, so nothing was kept: run the same command again.");
|
|
57
|
+
}
|
|
58
|
+
return first;
|
|
59
|
+
};
|
|
60
|
+
export const readStdin = async (input = process.stdin) => {
|
|
61
|
+
const chunks = [];
|
|
62
|
+
let size = 0;
|
|
63
|
+
for await (const chunk of input) {
|
|
64
|
+
const bytes = Buffer.from(chunk);
|
|
65
|
+
size += bytes.byteLength;
|
|
66
|
+
if (size > VALUE_MAX_BYTES) {
|
|
67
|
+
throw new KeyringCliError("usage", `What came on stdin is longer than ${VALUE_MAX_BYTES / 1024} KiB, more than any value the keyring keeps.`);
|
|
68
|
+
}
|
|
69
|
+
chunks.push(bytes);
|
|
70
|
+
}
|
|
71
|
+
const text = Buffer.concat(chunks).toString("utf8");
|
|
72
|
+
const value = text.endsWith("\r\n") ? text.slice(0, -2) : text.endsWith("\n") ? text.slice(0, -1) : text;
|
|
73
|
+
if (value === "") {
|
|
74
|
+
throw new KeyringCliError("usage", "Nothing came on stdin.");
|
|
75
|
+
}
|
|
76
|
+
return value;
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=secret-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-input.js","sourceRoot":"","sources":["../../src/keyring/secret-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type KeyringResponse, KeyringUnavailable } from "@intentic/keyring";
|
|
2
|
+
import { type AutostartKind, type Log } from "@intentic/local-agent";
|
|
3
|
+
import type { KeyringRefusalCode } from "@intentic/sandbox-contract/schemas/keyring";
|
|
4
|
+
export declare const keyringInstalled: () => boolean;
|
|
5
|
+
export type KeyringStateAnswer = KeyringResponse<"state">;
|
|
6
|
+
export declare const keyringState: (timeoutMs?: number) => Promise<KeyringStateAnswer | KeyringUnavailable>;
|
|
7
|
+
export declare const localKeyringBuild: (from?: string) => string | undefined;
|
|
8
|
+
export declare const stageKeyring: (version: string, log: Log) => Promise<string>;
|
|
9
|
+
export declare const linkAskpass: () => Promise<"linked" | "copied">;
|
|
10
|
+
export declare const KEYRING_SERVICE = "IntenticKeyring";
|
|
11
|
+
export declare const hardenedHere: () => Promise<boolean>;
|
|
12
|
+
export declare const keyringPid: () => Promise<number | undefined>;
|
|
13
|
+
export declare const startKeyring: (log: Log) => Promise<{
|
|
14
|
+
readonly autostart: AutostartKind;
|
|
15
|
+
readonly state: KeyringStateAnswer;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const stopKeyring: () => Promise<number | undefined>;
|
|
18
|
+
export interface KeyringInstalled {
|
|
19
|
+
readonly path: string;
|
|
20
|
+
readonly fresh: boolean;
|
|
21
|
+
readonly askpass: "linked" | "copied";
|
|
22
|
+
}
|
|
23
|
+
export declare const installKeyring: (version: string, log: Log) => Promise<KeyringInstalled>;
|
|
24
|
+
export type KeyringUpgrade = {
|
|
25
|
+
readonly ok: true;
|
|
26
|
+
readonly upgraded: boolean;
|
|
27
|
+
readonly from: string;
|
|
28
|
+
readonly to: string;
|
|
29
|
+
} | {
|
|
30
|
+
readonly ok: false;
|
|
31
|
+
readonly code: KeyringRefusalCode;
|
|
32
|
+
readonly refusal: string;
|
|
33
|
+
};
|
|
34
|
+
export declare const upgradeKeyring: (version: string, log: Log) => Promise<KeyringUpgrade>;
|
|
35
|
+
export declare const hardenKeyring: (log: Log) => Promise<{
|
|
36
|
+
readonly service: string;
|
|
37
|
+
readonly autostart: AutostartKind;
|
|
38
|
+
}>;
|
|
39
|
+
export declare const uninstallKeyring: (log: Log) => Promise<{
|
|
40
|
+
readonly removed: readonly string[];
|
|
41
|
+
readonly vault: string;
|
|
42
|
+
readonly hardened: boolean;
|
|
43
|
+
}>;
|
|
44
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/keyring/service.ts"],"names":[],"mappings":"AAQA,OAAO,EAAoD,KAAK,eAAe,EAAE,kBAAkB,EAAc,MAAM,mBAAmB,CAAC;AAC3I,OAAO,EAAE,KAAK,aAAa,EAAiD,KAAK,GAAG,EAA8B,MAAM,uBAAuB,CAAC;AAEhJ,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAyBrF,eAAO,MAAM,gBAAgB,QAAO,OAAkC,CAAC;AAEvE,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAG1D,eAAO,MAAM,YAAY,eAAqB,MAAM,KAAsB,OAAO,CAAC,kBAAkB,GAAG,kBAAkB,CASxH,CAAC;AAoBF,eAAO,MAAM,iBAAiB,UAAU,MAAM,KAAqB,MAAM,GAAG,SAU3E,CAAC;AAmBF,eAAO,MAAM,YAAY,YAAmB,MAAM,OAAO,GAAG,KAAG,OAAO,CAAC,MAAM,CAyC5E,CAAC;AAOF,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAa/D,CAAC;AAKF,eAAO,MAAM,eAAe,oBAAoB,CAAC;AAMjD,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,OAAO,CAUpD,CAAC;AA4BF,eAAO,MAAM,UAAU,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAAsC,CAAC;AAMrG,eAAO,MAAM,YAAY,QAAe,GAAG,KAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,CAsB9H,CAAC;AAGF,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAM9D,CAAC;AAIF,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACzC;AAMD,eAAO,MAAM,cAAc,YAAmB,MAAM,OAAO,GAAG,KAAG,OAAO,CAAC,gBAAgB,CAOxF,CAAC;AAIF,MAAM,MAAM,cAAc,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7F;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAS1F,eAAO,MAAM,cAAc,YAAmB,MAAM,OAAO,GAAG,KAAG,OAAO,CAAC,cAAc,CA0CtF,CAAC;AAQF,eAAO,MAAM,aAAa,QAAe,GAAG,KAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;CAAE,CA0BrH,CAAC;AAQF,eAAO,MAAM,gBAAgB,QAAe,GAAG,KAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CA2BpJ,CAAC"}
|