@inhuman.tools/policy 0.0.0-stage → 0.1.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/authorize.scm +4 -0
- package/dist/acknowledge.d.ts +70 -0
- package/dist/acknowledge.d.ts.map +1 -0
- package/dist/acknowledge.js +162 -0
- package/dist/acknowledge.js.map +1 -0
- package/dist/authorize.d.ts +8 -0
- package/dist/authorize.d.ts.map +1 -0
- package/dist/authorize.js +39 -0
- package/dist/authorize.js.map +1 -0
- package/dist/bind.d.ts +6 -0
- package/dist/bind.d.ts.map +1 -0
- package/dist/bind.js +45 -0
- package/dist/bind.js.map +1 -0
- package/dist/check.d.ts +30 -0
- package/dist/check.d.ts.map +1 -0
- package/dist/check.js +389 -0
- package/dist/check.js.map +1 -0
- package/dist/classes.d.ts +23 -0
- package/dist/classes.d.ts.map +1 -0
- package/dist/classes.js +139 -0
- package/dist/classes.js.map +1 -0
- package/dist/compile.d.ts +40 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +311 -0
- package/dist/compile.js.map +1 -0
- package/dist/deadline.d.ts +5 -0
- package/dist/deadline.d.ts.map +1 -0
- package/dist/deadline.js +17 -0
- package/dist/deadline.js.map +1 -0
- package/dist/decide.d.ts +64 -0
- package/dist/decide.d.ts.map +1 -0
- package/dist/decide.js +482 -0
- package/dist/decide.js.map +1 -0
- package/dist/error-with-invariant.d.ts +9 -0
- package/dist/error-with-invariant.d.ts.map +1 -0
- package/dist/error-with-invariant.js +12 -0
- package/dist/error-with-invariant.js.map +1 -0
- package/dist/floor.d.ts +9 -0
- package/dist/floor.d.ts.map +1 -0
- package/dist/floor.js +9 -0
- package/dist/floor.js.map +1 -0
- package/dist/glob-expand.d.ts +10 -0
- package/dist/glob-expand.d.ts.map +1 -0
- package/dist/glob-expand.js +132 -0
- package/dist/glob-expand.js.map +1 -0
- package/dist/guards.d.ts +26 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +419 -0
- package/dist/guards.js.map +1 -0
- package/dist/identity.d.ts +11 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +23 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/license-law.d.ts +43 -0
- package/dist/license-law.d.ts.map +1 -0
- package/dist/license-law.js +129 -0
- package/dist/license-law.js.map +1 -0
- package/dist/license.d.ts +3 -0
- package/dist/license.d.ts.map +1 -0
- package/dist/license.js +2 -0
- package/dist/license.js.map +1 -0
- package/dist/lift.d.ts +4 -0
- package/dist/lift.d.ts.map +1 -0
- package/dist/lift.js +14 -0
- package/dist/lift.js.map +1 -0
- package/dist/path-policy.d.ts +53 -0
- package/dist/path-policy.d.ts.map +1 -0
- package/dist/path-policy.js +248 -0
- package/dist/path-policy.js.map +1 -0
- package/dist/peel-cwd.d.ts +8 -0
- package/dist/peel-cwd.d.ts.map +1 -0
- package/dist/peel-cwd.js +120 -0
- package/dist/peel-cwd.js.map +1 -0
- package/dist/prep.d.ts +58 -0
- package/dist/prep.d.ts.map +1 -0
- package/dist/prep.js +690 -0
- package/dist/prep.js.map +1 -0
- package/dist/processor.d.ts +71 -0
- package/dist/processor.d.ts.map +1 -0
- package/dist/processor.js +132 -0
- package/dist/processor.js.map +1 -0
- package/dist/reasonable-defaults.d.ts +1448 -0
- package/dist/reasonable-defaults.d.ts.map +1 -0
- package/dist/reasonable-defaults.js +6 -0
- package/dist/reasonable-defaults.js.map +1 -0
- package/dist/reasonable-defaults.json +1662 -0
- package/dist/run-authorization.d.ts +8 -0
- package/dist/run-authorization.d.ts.map +1 -0
- package/dist/run-authorization.js +16 -0
- package/dist/run-authorization.js.map +1 -0
- package/dist/schemas/tirith.d.ts +58 -0
- package/dist/schemas/tirith.d.ts.map +1 -0
- package/dist/schemas/tirith.js +23 -0
- package/dist/schemas/tirith.js.map +1 -0
- package/dist/tirith-units.d.ts +2 -0
- package/dist/tirith-units.d.ts.map +1 -0
- package/dist/tirith-units.js +227 -0
- package/dist/tirith-units.js.map +1 -0
- package/dist/tirith.d.ts +24 -0
- package/dist/tirith.d.ts.map +1 -0
- package/dist/tirith.js +311 -0
- package/dist/tirith.js.map +1 -0
- package/dist/tool-path.d.ts +8 -0
- package/dist/tool-path.d.ts.map +1 -0
- package/dist/tool-path.js +38 -0
- package/dist/tool-path.js.map +1 -0
- package/dist/types.d.ts +87 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +14 -0
- package/dist/types.js.map +1 -0
- package/dist/verdict.d.ts +15 -0
- package/dist/verdict.d.ts.map +1 -0
- package/dist/verdict.js +55 -0
- package/dist/verdict.js.map +1 -0
- package/package.json +62 -3
- package/src/acknowledge.ts +206 -0
- package/src/authorize.ts +38 -0
- package/src/bind.ts +58 -0
- package/src/check.ts +552 -0
- package/src/classes.ts +156 -0
- package/src/compile.ts +370 -0
- package/src/deadline.ts +15 -0
- package/src/floor.ts +16 -0
- package/src/glob-expand.ts +137 -0
- package/src/guards.ts +428 -0
- package/src/identity.ts +26 -0
- package/src/index.ts +24 -0
- package/src/lift.ts +15 -0
- package/src/path-policy.ts +280 -0
- package/src/processor.ts +187 -0
- package/src/reasonable-defaults.json +1662 -0
- package/src/reasonable-defaults.ts +8 -0
- package/src/run-authorization.ts +23 -0
- package/src/tool-path.ts +43 -0
- package/src/types.ts +102 -0
- package/src/verdict.ts +63 -0
- package/README.md +0 -3
package/dist/peel-cwd.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Peel a leading cwd-only `cd` off a shell command into the `cwd` arg.
|
|
3
|
+
* Unbash AST, not regex. Quoted `;` is not a splitter. Remainder stays
|
|
4
|
+
* one `/bin/sh -c` — this is not execute-split.
|
|
5
|
+
*
|
|
6
|
+
* Peel only the first top-level list element (`&&` or `;` / newline).
|
|
7
|
+
* `||`, pipes, subshells, brace groups, `cd` that is not first, and
|
|
8
|
+
* `cd` with flags/extra operands stay on the command string.
|
|
9
|
+
*/
|
|
10
|
+
import { parse } from "unbash";
|
|
11
|
+
const PARTLESS_FORBIDDEN = /[*?[\\$`]/;
|
|
12
|
+
export function peelLeadingCd(source) {
|
|
13
|
+
const script = parse(source);
|
|
14
|
+
if (script.errors !== undefined && script.errors.length > 0)
|
|
15
|
+
return null;
|
|
16
|
+
const statements = script.commands;
|
|
17
|
+
if (statements.length === 0)
|
|
18
|
+
return null;
|
|
19
|
+
const first = statements[0];
|
|
20
|
+
if (first === undefined || first.background === true || first.redirects.length > 0)
|
|
21
|
+
return null;
|
|
22
|
+
const node = first.command;
|
|
23
|
+
const simple = asSimpleCommand(node);
|
|
24
|
+
if (simple !== null) {
|
|
25
|
+
const cwd = cwdOnlyPath(simple);
|
|
26
|
+
if (cwd === null)
|
|
27
|
+
return null;
|
|
28
|
+
if (statements.length === 1)
|
|
29
|
+
return { cwd, command: "" };
|
|
30
|
+
return { cwd, command: source.slice(statements[1].pos).trim() };
|
|
31
|
+
}
|
|
32
|
+
if (node.type !== "AndOr" || node.operators[0] !== "&&")
|
|
33
|
+
return null;
|
|
34
|
+
const head = asSimpleCommand(node.commands[0]);
|
|
35
|
+
if (head === null)
|
|
36
|
+
return null;
|
|
37
|
+
const cwd = cwdOnlyPath(head);
|
|
38
|
+
if (cwd === null)
|
|
39
|
+
return null;
|
|
40
|
+
const rest = node.commands[1];
|
|
41
|
+
if (rest === undefined)
|
|
42
|
+
return { cwd, command: "" };
|
|
43
|
+
return { cwd, command: source.slice(rest.pos).trim() };
|
|
44
|
+
}
|
|
45
|
+
/** Keep an explicit `cwd` arg when it names the same leaf; never override a disagreement. */
|
|
46
|
+
export function peelShellCwd(command, cwdArg) {
|
|
47
|
+
const peeled = peelLeadingCd(command);
|
|
48
|
+
if (peeled === null)
|
|
49
|
+
return null;
|
|
50
|
+
if (cwdArg !== undefined && cwdArg !== "" && normalizeCwdToken(cwdArg) !== normalizeCwdToken(peeled.cwd)) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
cwd: cwdArg !== undefined && cwdArg !== "" ? cwdArg : peeled.cwd,
|
|
55
|
+
command: peeled.command,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function normalizeCwdToken(raw) {
|
|
59
|
+
let token = raw.replaceAll("\\", "/").replace(/\/+$/, "");
|
|
60
|
+
if (token.startsWith("./"))
|
|
61
|
+
token = token.slice(2);
|
|
62
|
+
return token === "" ? "." : token;
|
|
63
|
+
}
|
|
64
|
+
function asSimpleCommand(node) {
|
|
65
|
+
if (node === undefined)
|
|
66
|
+
return null;
|
|
67
|
+
if (node.type === "Command")
|
|
68
|
+
return node;
|
|
69
|
+
if (node.type !== "Pipeline")
|
|
70
|
+
return null;
|
|
71
|
+
if (node.commands.length !== 1 || (node.operators?.length ?? 0) > 0)
|
|
72
|
+
return null;
|
|
73
|
+
if (node.negated === true || node.time === true)
|
|
74
|
+
return null;
|
|
75
|
+
return asSimpleCommand(node.commands[0]);
|
|
76
|
+
}
|
|
77
|
+
function cwdOnlyPath(command) {
|
|
78
|
+
if (command.prefix.length > 0 || command.redirects.length > 0)
|
|
79
|
+
return null;
|
|
80
|
+
if (command.name === undefined || !isLiteralWord(command.name))
|
|
81
|
+
return null;
|
|
82
|
+
let argv0 = command.name.value;
|
|
83
|
+
let suffix = command.suffix;
|
|
84
|
+
if (argv0 === "builtin" || argv0 === "command") {
|
|
85
|
+
const inner = suffix[0];
|
|
86
|
+
if (inner === undefined || !isLiteralWord(inner) || inner.value !== "cd")
|
|
87
|
+
return null;
|
|
88
|
+
argv0 = "cd";
|
|
89
|
+
suffix = suffix.slice(1);
|
|
90
|
+
}
|
|
91
|
+
if (argv0 !== "cd" || suffix.length !== 1)
|
|
92
|
+
return null;
|
|
93
|
+
const dest = suffix[0];
|
|
94
|
+
if (dest === undefined || !isLiteralWord(dest))
|
|
95
|
+
return null;
|
|
96
|
+
const value = dest.value;
|
|
97
|
+
if (value === "" || value === "-" || value === "--" || value.startsWith("-"))
|
|
98
|
+
return null;
|
|
99
|
+
return value;
|
|
100
|
+
}
|
|
101
|
+
function isLiteralWord(word) {
|
|
102
|
+
if (word.parts === undefined) {
|
|
103
|
+
return !PARTLESS_FORBIDDEN.test(word.text) && !word.text.startsWith("~");
|
|
104
|
+
}
|
|
105
|
+
return word.parts.every(partIsLiteral);
|
|
106
|
+
}
|
|
107
|
+
function partIsLiteral(part) {
|
|
108
|
+
switch (part.type) {
|
|
109
|
+
case "Literal":
|
|
110
|
+
case "SingleQuoted":
|
|
111
|
+
return true;
|
|
112
|
+
case "AnsiCQuoted":
|
|
113
|
+
return !part.value.includes("\0");
|
|
114
|
+
case "DoubleQuoted":
|
|
115
|
+
return part.parts.every((child) => child.type === "Literal");
|
|
116
|
+
default:
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=peel-cwd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peel-cwd.js","sourceRoot":"","sources":["../src/peel-cwd.ts"],"names":[],"mappings":"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"}
|
package/dist/prep.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Question prep: unbash AST → prepared questions + unparsed acts.
|
|
3
|
+
* Hermetic — no PATH, no process.env, no execution. Word.parts is a lazy
|
|
4
|
+
* getter; this file always reads it. Nested parse errors live on the nested
|
|
5
|
+
* script, not the root.
|
|
6
|
+
*
|
|
7
|
+
* Partition builds I: a known value-flag attaches; an unknown flag followed
|
|
8
|
+
* by a non-dash, non-`--` token forks attached and boolean readings.
|
|
9
|
+
* `valueFlagsFor(argv0, suffix)` sees the leading positional spine — not
|
|
10
|
+
* every descendant under argv0. `=value` and glued shorts stay one reading.
|
|
11
|
+
* `--` never attaches as a value. Cap 16 is open ruling 5; overflow is ⊤I.
|
|
12
|
+
* A nameless command still emits its redirects. `xargs -a FILE` is a read
|
|
13
|
+
* of FILE as well as the inner command.
|
|
14
|
+
*/
|
|
15
|
+
import { type ParseError } from "unbash";
|
|
16
|
+
import { type Which } from "./identity.js";
|
|
17
|
+
import type { Question, Reading } from "./types.js";
|
|
18
|
+
export type UnparsedVia = "parse-error" | "control-flow" | "function" | "source" | "test" | "arithmetic" | "coproc" | "find-expression" | "non-literal-argv0" | "script-string";
|
|
19
|
+
export type UnparsedAct = {
|
|
20
|
+
readonly via: UnparsedVia;
|
|
21
|
+
readonly source: string;
|
|
22
|
+
};
|
|
23
|
+
export type RedirectEmit = {
|
|
24
|
+
readonly operator: string;
|
|
25
|
+
readonly target: string;
|
|
26
|
+
};
|
|
27
|
+
export type PreparedQuestion = Question & {
|
|
28
|
+
readonly wrapChain: readonly string[];
|
|
29
|
+
readonly elevated: boolean;
|
|
30
|
+
readonly envDelta: Readonly<Record<string, string>>;
|
|
31
|
+
readonly redirects: readonly RedirectEmit[];
|
|
32
|
+
readonly background: boolean;
|
|
33
|
+
readonly stdinIsPipe: boolean;
|
|
34
|
+
};
|
|
35
|
+
export type PrepResult = {
|
|
36
|
+
readonly questions: readonly PreparedQuestion[];
|
|
37
|
+
readonly unparsed: readonly UnparsedAct[];
|
|
38
|
+
readonly errors: readonly ParseError[];
|
|
39
|
+
/** File effects from commands that have no argv0 (`> .env`). */
|
|
40
|
+
readonly redirects: readonly RedirectEmit[];
|
|
41
|
+
};
|
|
42
|
+
export type PrepOpts = {
|
|
43
|
+
readonly valueFlags?: ReadonlySet<string>;
|
|
44
|
+
readonly valueFlagsFor?: (argv0: string, suffix: readonly string[]) => ReadonlySet<string> | undefined;
|
|
45
|
+
/** Path-form peelers are transparent only when this agrees. */
|
|
46
|
+
readonly which?: Which;
|
|
47
|
+
};
|
|
48
|
+
export declare function prep(source: string, opts?: PrepOpts): PrepResult;
|
|
49
|
+
/**
|
|
50
|
+
* Tokenize argv into positionals + flag bag.
|
|
51
|
+
* `closed`: only those names are flags; other dash tokens are positionals.
|
|
52
|
+
* Used when a `"--"` field reopens the suffix — undeclared `-file` stays a path.
|
|
53
|
+
*/
|
|
54
|
+
export declare function partition(words: readonly string[], valueFlags: ReadonlySet<string> | undefined, closed?: ReadonlySet<string>): {
|
|
55
|
+
readings: Reading[];
|
|
56
|
+
overflow: boolean;
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=prep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prep.d.ts","sourceRoot":"","sources":["../src/prep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAML,KAAK,UAAU,EAOhB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAgB,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,cAAc,GACd,UAAU,GACV,QAAQ,GACR,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,iBAAiB,GACjB,mBAAmB,GACnB,eAAe,CAAC;AAEpB,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;CAC7C,CAAC;AAoBF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,KAAK,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACvG,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CACxB,CAAC;AAEF,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAqBhE;AAsUD;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,EAC3C,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CA+C5C"}
|