@fnndsc/brasa 0.15.0 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/buildinfo.json +1 -1
- package/dist/builtins/feedTotals.d.ts +24 -0
- package/dist/builtins/feedTotals.js +46 -0
- package/dist/builtins/feedTotals.js.map +1 -0
- package/dist/builtins/fs/acl.args.d.ts +69 -0
- package/dist/builtins/fs/acl.args.js +125 -0
- package/dist/builtins/fs/acl.args.js.map +1 -0
- package/dist/builtins/fs/acl.d.ts +27 -0
- package/dist/builtins/fs/acl.js +79 -0
- package/dist/builtins/fs/acl.js.map +1 -0
- package/dist/builtins/fs/cd.d.ts +8 -0
- package/dist/builtins/fs/cd.js +28 -0
- package/dist/builtins/fs/cd.js.map +1 -1
- package/dist/builtins/fs/upload.js +8 -0
- package/dist/builtins/fs/upload.js.map +1 -1
- package/dist/builtins/help.js +25 -0
- package/dist/builtins/help.js.map +1 -1
- package/dist/builtins/index.d.ts +2 -0
- package/dist/builtins/index.js +2 -0
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/proc.js +2 -0
- package/dist/builtins/proc.js.map +1 -1
- package/dist/builtins/res/feed.diagram.js +5 -0
- package/dist/builtins/res/feed.diagram.js.map +1 -1
- package/dist/core/dispatch.js +5 -1
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/promptContext.d.ts +9 -0
- package/dist/core/promptContext.js +19 -2
- package/dist/core/promptContext.js.map +1 -1
- package/dist/core/warmupFailures.d.ts +44 -0
- package/dist/core/warmupFailures.js +45 -0
- package/dist/core/warmupFailures.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/announceIndent.d.ts +28 -0
- package/dist/lib/announceIndent.js +32 -0
- package/dist/lib/announceIndent.js.map +1 -0
- package/dist/lib/prefetch.d.ts +3 -1
- package/dist/lib/prefetch.js +18 -5
- package/dist/lib/prefetch.js.map +1 -1
- package/package.json +4 -4
package/dist/buildinfo.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"hash":"
|
|
1
|
+
{"hash":"0422da"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file A feed's totals, derived from resident nodes: the roster's SIZE and
|
|
3
|
+
* TIME. Pure over the cache, no wire, no imports beyond types — so a test
|
|
4
|
+
* can load it without the proc builtin's whole graph.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import type { ProcCache } from '@fnndsc/cumin';
|
|
9
|
+
/** A feed's totals as the roster reports them. */
|
|
10
|
+
export interface FeedTotals {
|
|
11
|
+
sizeBytes?: number;
|
|
12
|
+
wallSeconds?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Derives a feed's totals from its resident nodes — no wire: the sum of
|
|
16
|
+
* output bytes, and the wall span from the first start to the last end
|
|
17
|
+
* (to now while a node still runs). A feed whose topology is not resident
|
|
18
|
+
* has no totals, and says so by their absence — never a zero.
|
|
19
|
+
*
|
|
20
|
+
* @param cache - The process cache.
|
|
21
|
+
* @param feedID - The feed.
|
|
22
|
+
* @returns The totals that could be derived.
|
|
23
|
+
*/
|
|
24
|
+
export declare function feedTotals_derive(cache: Pick<ProcCache, 'topologyLoaded_has' | 'feedInstanceIDs_get' | 'instance_get'>, feedID: number): FeedTotals;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derives a feed's totals from its resident nodes — no wire: the sum of
|
|
3
|
+
* output bytes, and the wall span from the first start to the last end
|
|
4
|
+
* (to now while a node still runs). A feed whose topology is not resident
|
|
5
|
+
* has no totals, and says so by their absence — never a zero.
|
|
6
|
+
*
|
|
7
|
+
* @param cache - The process cache.
|
|
8
|
+
* @param feedID - The feed.
|
|
9
|
+
* @returns The totals that could be derived.
|
|
10
|
+
*/
|
|
11
|
+
export function feedTotals_derive(cache, feedID) {
|
|
12
|
+
if (!cache.topologyLoaded_has(feedID))
|
|
13
|
+
return {};
|
|
14
|
+
let bytes = 0;
|
|
15
|
+
let hasBytes = false;
|
|
16
|
+
let start;
|
|
17
|
+
let end;
|
|
18
|
+
let allEnded = true;
|
|
19
|
+
for (const id of cache.feedInstanceIDs_get(feedID)) {
|
|
20
|
+
const inst = cache.instance_get(id);
|
|
21
|
+
if (!inst)
|
|
22
|
+
continue;
|
|
23
|
+
if (inst.outputBytes !== undefined) {
|
|
24
|
+
bytes += inst.outputBytes;
|
|
25
|
+
hasBytes = true;
|
|
26
|
+
}
|
|
27
|
+
if (inst.startedAt && (start === undefined || inst.startedAt < start))
|
|
28
|
+
start = inst.startedAt;
|
|
29
|
+
if (inst.finishedAt) {
|
|
30
|
+
if (end === undefined || inst.finishedAt > end)
|
|
31
|
+
end = inst.finishedAt;
|
|
32
|
+
}
|
|
33
|
+
else if (inst.startedAt) {
|
|
34
|
+
allEnded = false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const totals = {};
|
|
38
|
+
if (hasBytes)
|
|
39
|
+
totals.sizeBytes = bytes;
|
|
40
|
+
if (start !== undefined) {
|
|
41
|
+
const until = allEnded && end !== undefined ? Date.parse(end) : Date.now();
|
|
42
|
+
totals.wallSeconds = Math.max(0, Math.round((until - Date.parse(start)) / 1000));
|
|
43
|
+
}
|
|
44
|
+
return totals;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=feedTotals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedTotals.js","sourceRoot":"","sources":["../../src/builtins/feedTotals.ts"],"names":[],"mappings":"AAeA;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAqF,EACrF,MAAc;IAEd,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACjD,IAAI,KAAK,GAAW,CAAC,CAAC;IACtB,IAAI,QAAQ,GAAY,KAAK,CAAC;IAC9B,IAAI,KAAyB,CAAC;IAC9B,IAAI,GAAuB,CAAC;IAC5B,IAAI,QAAQ,GAAY,IAAI,CAAC;IAC7B,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAA6B,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC;QAAC,CAAC;QACnF,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAAE,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9F,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG;gBAAE,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QACxE,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,IAAI,QAAQ;QAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,KAAK,GAAW,QAAQ,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACnF,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared `setfacl` / `getfacl` command-line grammar.
|
|
3
|
+
*
|
|
4
|
+
* A feed shared with another identity is, in POSIX terms, an access
|
|
5
|
+
* control entry: `setfacl -m u:someone:r <path>`. That is the verb a
|
|
6
|
+
* terminal already knows. "Share X with Y" is a sentence — it belongs to
|
|
7
|
+
* a natural-language assist, not to a shell.
|
|
8
|
+
*
|
|
9
|
+
* Dependency-free, as `cat.args.ts` is: the engine graph cannot be loaded
|
|
10
|
+
* under jest, so a grammar inside the builtin is a grammar nothing tests.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
/** One access control entry, as `setfacl -m` spells it. */
|
|
15
|
+
export interface AclEntry {
|
|
16
|
+
/** Identity the entry names. Only user entries are supported. */
|
|
17
|
+
username: string;
|
|
18
|
+
/** Permission letters, in `rwx` order, minus omitted. */
|
|
19
|
+
perms: string;
|
|
20
|
+
}
|
|
21
|
+
/** A parsed `setfacl` invocation. */
|
|
22
|
+
export interface SetfaclArgs {
|
|
23
|
+
/** The entry to add or modify, when `-m` was given. */
|
|
24
|
+
modify: AclEntry | null;
|
|
25
|
+
/** The identity to strip, when `-x` was given. */
|
|
26
|
+
remove: string | null;
|
|
27
|
+
/** Paths the entry applies to. */
|
|
28
|
+
paths: string[];
|
|
29
|
+
/** What was wrong with the invocation, when something was. */
|
|
30
|
+
error: string | null;
|
|
31
|
+
}
|
|
32
|
+
/** How `setfacl` is spelled, for help and for errors. */
|
|
33
|
+
export declare const SETFACL_USAGE: string;
|
|
34
|
+
/** How `getfacl` is spelled. */
|
|
35
|
+
export declare const GETFACL_USAGE: string;
|
|
36
|
+
/**
|
|
37
|
+
* Reads an access control entry of the form `u:<user>:<perms>`.
|
|
38
|
+
*
|
|
39
|
+
* @param spec - The entry as typed.
|
|
40
|
+
* @returns The entry, or null when it is not a user entry.
|
|
41
|
+
*/
|
|
42
|
+
export declare function aclEntry_parse(spec: string): AclEntry | null;
|
|
43
|
+
/**
|
|
44
|
+
* Reads a `setfacl` invocation.
|
|
45
|
+
*
|
|
46
|
+
* @param args - Raw argument tokens.
|
|
47
|
+
* @returns The requested change and its targets, or the reason it cannot
|
|
48
|
+
* be read.
|
|
49
|
+
*/
|
|
50
|
+
export declare function setfaclArgs_parse(args: string[]): SetfaclArgs;
|
|
51
|
+
/**
|
|
52
|
+
* Resolves a feed id from an id, a `feed_N` name, or a path holding one.
|
|
53
|
+
*
|
|
54
|
+
* The path form matches `/feeds/feed_<id>/` wherever it appears, so a path
|
|
55
|
+
* under `/SHARED` resolves by the same rule as one under a home folder.
|
|
56
|
+
*
|
|
57
|
+
* @param target - What the operator typed.
|
|
58
|
+
* @returns The feed id, or null when nothing in it names a feed.
|
|
59
|
+
*/
|
|
60
|
+
export declare function aclTarget_resolve(target: string): number | null;
|
|
61
|
+
/**
|
|
62
|
+
* Renders an access list the way `getfacl` does.
|
|
63
|
+
*
|
|
64
|
+
* @param path - The path as the operator named it.
|
|
65
|
+
* @param owner - The owning identity, when known.
|
|
66
|
+
* @param usernames - Identities granted access.
|
|
67
|
+
* @returns The rendered block, without a trailing newline.
|
|
68
|
+
*/
|
|
69
|
+
export declare function acl_render(path: string, owner: string | null, usernames: readonly string[]): string;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared `setfacl` / `getfacl` command-line grammar.
|
|
3
|
+
*
|
|
4
|
+
* A feed shared with another identity is, in POSIX terms, an access
|
|
5
|
+
* control entry: `setfacl -m u:someone:r <path>`. That is the verb a
|
|
6
|
+
* terminal already knows. "Share X with Y" is a sentence — it belongs to
|
|
7
|
+
* a natural-language assist, not to a shell.
|
|
8
|
+
*
|
|
9
|
+
* Dependency-free, as `cat.args.ts` is: the engine graph cannot be loaded
|
|
10
|
+
* under jest, so a grammar inside the builtin is a grammar nothing tests.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
/** How `setfacl` is spelled, for help and for errors. */
|
|
15
|
+
export const SETFACL_USAGE = 'setfacl: usage: setfacl -m u:<user>:<perms> <path>...';
|
|
16
|
+
/** How `getfacl` is spelled. */
|
|
17
|
+
export const GETFACL_USAGE = 'getfacl: usage: getfacl <path>...';
|
|
18
|
+
/**
|
|
19
|
+
* Reads an access control entry of the form `u:<user>:<perms>`.
|
|
20
|
+
*
|
|
21
|
+
* @param spec - The entry as typed.
|
|
22
|
+
* @returns The entry, or null when it is not a user entry.
|
|
23
|
+
*/
|
|
24
|
+
export function aclEntry_parse(spec) {
|
|
25
|
+
const parts = spec.split(':');
|
|
26
|
+
// `u:name:perms` and the long `user:name:perms` both read; group and
|
|
27
|
+
// other entries are not something CUBE models, so they are refused
|
|
28
|
+
// rather than silently treated as a user.
|
|
29
|
+
if (parts.length !== 3)
|
|
30
|
+
return null;
|
|
31
|
+
const kind = parts[0] ?? '';
|
|
32
|
+
if (kind !== 'u' && kind !== 'user')
|
|
33
|
+
return null;
|
|
34
|
+
const username = parts[1] ?? '';
|
|
35
|
+
const perms = parts[2] ?? '';
|
|
36
|
+
if (username === '')
|
|
37
|
+
return null;
|
|
38
|
+
if (!/^[rwx-]*$/.test(perms))
|
|
39
|
+
return null;
|
|
40
|
+
return { username, perms };
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Reads a `setfacl` invocation.
|
|
44
|
+
*
|
|
45
|
+
* @param args - Raw argument tokens.
|
|
46
|
+
* @returns The requested change and its targets, or the reason it cannot
|
|
47
|
+
* be read.
|
|
48
|
+
*/
|
|
49
|
+
export function setfaclArgs_parse(args) {
|
|
50
|
+
const empty = { modify: null, remove: null, paths: [], error: null };
|
|
51
|
+
let modify = null;
|
|
52
|
+
let remove = null;
|
|
53
|
+
const paths = [];
|
|
54
|
+
for (let index = 0; index < args.length; index++) {
|
|
55
|
+
const token = args[index] ?? '';
|
|
56
|
+
if (token === '-m' || token === '--modify') {
|
|
57
|
+
const spec = args[++index];
|
|
58
|
+
if (spec === undefined)
|
|
59
|
+
return { ...empty, error: SETFACL_USAGE };
|
|
60
|
+
const entry = aclEntry_parse(spec);
|
|
61
|
+
if (entry === null) {
|
|
62
|
+
return { ...empty, error: `setfacl: '${spec}' is not a user entry (want u:<user>:<perms>)` };
|
|
63
|
+
}
|
|
64
|
+
modify = entry;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (token === '-x' || token === '--remove') {
|
|
68
|
+
const spec = args[++index];
|
|
69
|
+
if (spec === undefined)
|
|
70
|
+
return { ...empty, error: SETFACL_USAGE };
|
|
71
|
+
const named = spec.startsWith('u:') ? spec.slice(2) : spec.startsWith('user:') ? spec.slice(5) : spec;
|
|
72
|
+
if (named === '')
|
|
73
|
+
return { ...empty, error: SETFACL_USAGE };
|
|
74
|
+
remove = named.split(':')[0] ?? named;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (token.startsWith('-')) {
|
|
78
|
+
return { ...empty, error: `setfacl: unsupported option '${token}'` };
|
|
79
|
+
}
|
|
80
|
+
paths.push(token);
|
|
81
|
+
}
|
|
82
|
+
if (modify === null && remove === null)
|
|
83
|
+
return { ...empty, error: SETFACL_USAGE };
|
|
84
|
+
if (paths.length === 0)
|
|
85
|
+
return { ...empty, error: SETFACL_USAGE };
|
|
86
|
+
return { modify, remove, paths, error: null };
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Resolves a feed id from an id, a `feed_N` name, or a path holding one.
|
|
90
|
+
*
|
|
91
|
+
* The path form matches `/feeds/feed_<id>/` wherever it appears, so a path
|
|
92
|
+
* under `/SHARED` resolves by the same rule as one under a home folder.
|
|
93
|
+
*
|
|
94
|
+
* @param target - What the operator typed.
|
|
95
|
+
* @returns The feed id, or null when nothing in it names a feed.
|
|
96
|
+
*/
|
|
97
|
+
export function aclTarget_resolve(target) {
|
|
98
|
+
const bare = Number(target);
|
|
99
|
+
if (Number.isInteger(bare) && bare > 0)
|
|
100
|
+
return bare;
|
|
101
|
+
const named = target.match(/^feed_(\d+)$/);
|
|
102
|
+
if (named !== null)
|
|
103
|
+
return Number(named[1]);
|
|
104
|
+
const inPath = target.match(/\/feeds\/feed_(\d+)(?:\/|$)/);
|
|
105
|
+
return inPath !== null ? Number(inPath[1]) : null;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Renders an access list the way `getfacl` does.
|
|
109
|
+
*
|
|
110
|
+
* @param path - The path as the operator named it.
|
|
111
|
+
* @param owner - The owning identity, when known.
|
|
112
|
+
* @param usernames - Identities granted access.
|
|
113
|
+
* @returns The rendered block, without a trailing newline.
|
|
114
|
+
*/
|
|
115
|
+
export function acl_render(path, owner, usernames) {
|
|
116
|
+
const name = path.replace(/^\//, '');
|
|
117
|
+
const lines = [`# file: ${name}`];
|
|
118
|
+
if (owner !== null)
|
|
119
|
+
lines.push(`# owner: ${owner}`);
|
|
120
|
+
lines.push('user::rw-');
|
|
121
|
+
for (const username of usernames)
|
|
122
|
+
lines.push(`user:${username}:r--`);
|
|
123
|
+
return lines.join('\n');
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=acl.args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acl.args.js","sourceRoot":"","sources":["../../../src/builtins/fs/acl.args.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file `setfacl` and `getfacl` — a feed's access list.
|
|
3
|
+
*
|
|
4
|
+
* Sharing a feed is, in POSIX terms, an access control entry, and a shell
|
|
5
|
+
* already has the verbs for it. `share X with Y` is a sentence; it reads
|
|
6
|
+
* as a natural-language assist and lands nowhere in a terminal.
|
|
7
|
+
*
|
|
8
|
+
* The capability itself lives in the kernel (`feed_share`,
|
|
9
|
+
* `feedShares_list`). This is its shell face.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import { CommandEnvelope } from '@fnndsc/cumin';
|
|
14
|
+
/**
|
|
15
|
+
* Adds or modifies an access control entry on a feed.
|
|
16
|
+
*
|
|
17
|
+
* @param args - Raw argument tokens.
|
|
18
|
+
* @returns An envelope naming what was granted.
|
|
19
|
+
*/
|
|
20
|
+
export declare function builtin_setfacl(args: string[]): Promise<CommandEnvelope>;
|
|
21
|
+
/**
|
|
22
|
+
* Reports a feed's access list, in `getfacl`'s own shape.
|
|
23
|
+
*
|
|
24
|
+
* @param args - Raw argument tokens.
|
|
25
|
+
* @returns An envelope carrying the rendered list.
|
|
26
|
+
*/
|
|
27
|
+
export declare function builtin_getfacl(args: string[]): Promise<CommandEnvelope>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file `setfacl` and `getfacl` — a feed's access list.
|
|
3
|
+
*
|
|
4
|
+
* Sharing a feed is, in POSIX terms, an access control entry, and a shell
|
|
5
|
+
* already has the verbs for it. `share X with Y` is a sentence; it reads
|
|
6
|
+
* as a natural-language assist and lands nowhere in a terminal.
|
|
7
|
+
*
|
|
8
|
+
* The capability itself lives in the kernel (`feed_share`,
|
|
9
|
+
* `feedShares_list`). This is its shell face.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import { envelope_ok, envelope_error, errorStack, feed_share, feedShares_list, } from '@fnndsc/cumin';
|
|
14
|
+
import { aclTarget_resolve, acl_render, setfaclArgs_parse, GETFACL_USAGE, } from './acl.args.js';
|
|
15
|
+
/**
|
|
16
|
+
* Adds or modifies an access control entry on a feed.
|
|
17
|
+
*
|
|
18
|
+
* @param args - Raw argument tokens.
|
|
19
|
+
* @returns An envelope naming what was granted.
|
|
20
|
+
*/
|
|
21
|
+
export async function builtin_setfacl(args) {
|
|
22
|
+
const parsed = setfaclArgs_parse(args);
|
|
23
|
+
if (parsed.error !== null)
|
|
24
|
+
return envelope_error(parsed.error);
|
|
25
|
+
if (parsed.remove !== null) {
|
|
26
|
+
// Refused by name rather than silently ignored: CUBE models the grant
|
|
27
|
+
// but mise has no revocation to offer yet, and a shell that appears to
|
|
28
|
+
// strip an entry it cannot strip is worse than one that says so.
|
|
29
|
+
return envelope_error('setfacl: -x is not supported yet — mise cannot revoke a feed grant');
|
|
30
|
+
}
|
|
31
|
+
const entry = parsed.modify;
|
|
32
|
+
if (entry === null)
|
|
33
|
+
return envelope_error(parsed.error ?? 'setfacl: nothing to do');
|
|
34
|
+
if (!entry.perms.includes('r')) {
|
|
35
|
+
return envelope_error(`setfacl: '${entry.perms}' grants no read — CUBE shares a feed for reading`);
|
|
36
|
+
}
|
|
37
|
+
const granted = [];
|
|
38
|
+
for (const path of parsed.paths) {
|
|
39
|
+
const feedID = aclTarget_resolve(path);
|
|
40
|
+
if (feedID === null) {
|
|
41
|
+
return envelope_error(`setfacl: '${path}' does not name a feed`);
|
|
42
|
+
}
|
|
43
|
+
const outcome = await feed_share(feedID, entry.username);
|
|
44
|
+
if (!outcome.ok) {
|
|
45
|
+
const error = errorStack.stack_pop();
|
|
46
|
+
return envelope_error(error?.message ?? `setfacl: could not grant ${entry.username} access to feed ${feedID}`);
|
|
47
|
+
}
|
|
48
|
+
granted.push(`feed_${feedID}`);
|
|
49
|
+
}
|
|
50
|
+
return envelope_ok(`${entry.username} granted read on ${granted.join(' ')}`, { kind: 'fs.acl', data: { usernames: [entry.username], targets: granted } });
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Reports a feed's access list, in `getfacl`'s own shape.
|
|
54
|
+
*
|
|
55
|
+
* @param args - Raw argument tokens.
|
|
56
|
+
* @returns An envelope carrying the rendered list.
|
|
57
|
+
*/
|
|
58
|
+
export async function builtin_getfacl(args) {
|
|
59
|
+
const paths = args.filter((token) => !token.startsWith('-'));
|
|
60
|
+
if (paths.length === 0)
|
|
61
|
+
return envelope_error(GETFACL_USAGE);
|
|
62
|
+
const blocks = [];
|
|
63
|
+
const model = [];
|
|
64
|
+
for (const path of paths) {
|
|
65
|
+
const feedID = aclTarget_resolve(path);
|
|
66
|
+
if (feedID === null) {
|
|
67
|
+
return envelope_error(`getfacl: '${path}' does not name a feed`);
|
|
68
|
+
}
|
|
69
|
+
const held = await feedShares_list(feedID);
|
|
70
|
+
if (!held.ok) {
|
|
71
|
+
const error = errorStack.stack_pop();
|
|
72
|
+
return envelope_error(error?.message ?? `getfacl: could not read the access list of feed ${feedID}`);
|
|
73
|
+
}
|
|
74
|
+
blocks.push(acl_render(path, null, held.value));
|
|
75
|
+
model.push({ path, usernames: held.value });
|
|
76
|
+
}
|
|
77
|
+
return envelope_ok(blocks.join('\n\n'), { kind: 'fs.acl', data: model });
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=acl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acl.js","sourceRoot":"","sources":["../../../src/builtins/fs/acl.ts"],"names":[],"mappings":"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"}
|
package/dist/builtins/fs/cd.d.ts
CHANGED
|
@@ -31,6 +31,14 @@ export declare function vfsPath_isStructural(cleanPath: string): boolean;
|
|
|
31
31
|
* @returns True if the folder path exactly matches validationPath, false otherwise.
|
|
32
32
|
*/
|
|
33
33
|
export declare function folder_verifyPathMatch(folder: FileBrowserFolder | null | undefined, validationPath: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* The target of a CFS link at a path, from its parent's listing; null when
|
|
36
|
+
* the path is not a link (or its parent cannot be listed).
|
|
37
|
+
*
|
|
38
|
+
* @param cleanPath - The normalized absolute path.
|
|
39
|
+
* @returns The absolute target path, or null.
|
|
40
|
+
*/
|
|
41
|
+
export declare function cfsLink_target(cleanPath: string): Promise<string | null>;
|
|
34
42
|
/**
|
|
35
43
|
* Changes the current working directory in the ChRIS filesystem context.
|
|
36
44
|
* Validates the existence of the target path before setting it.
|
package/dist/builtins/fs/cd.js
CHANGED
|
@@ -48,6 +48,24 @@ export function folder_verifyPathMatch(folder, validationPath) {
|
|
|
48
48
|
const cleanValidation = validationPath.replace(/^\/+|\/+$/g, '');
|
|
49
49
|
return cleanFolder === cleanValidation;
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* The target of a CFS link at a path, from its parent's listing; null when
|
|
53
|
+
* the path is not a link (or its parent cannot be listed).
|
|
54
|
+
*
|
|
55
|
+
* @param cleanPath - The normalized absolute path.
|
|
56
|
+
* @returns The absolute target path, or null.
|
|
57
|
+
*/
|
|
58
|
+
export async function cfsLink_target(cleanPath) {
|
|
59
|
+
if (cleanPath === '/' || !cleanPath.startsWith('/'))
|
|
60
|
+
return null;
|
|
61
|
+
const { vfsDispatcher } = await import('@fnndsc/salsa');
|
|
62
|
+
const parentResult = await vfsDispatcher.list(path.posix.dirname(cleanPath));
|
|
63
|
+
if (!parentResult.ok)
|
|
64
|
+
return null;
|
|
65
|
+
const entryName = path.posix.basename(cleanPath);
|
|
66
|
+
const entry = parentResult.value.find((item) => item.name === entryName);
|
|
67
|
+
return entry?.type === 'link' && entry.target ? entry.target : null;
|
|
68
|
+
}
|
|
51
69
|
/**
|
|
52
70
|
* Builds the success envelope for a completed directory change.
|
|
53
71
|
*
|
|
@@ -229,6 +247,16 @@ export async function cd_run(options) {
|
|
|
229
247
|
if (isVirtual) {
|
|
230
248
|
return cdVirtual_handle(cleanPath, pathArg);
|
|
231
249
|
}
|
|
250
|
+
// A CFS link names a place: entering it moves to its target. The link's
|
|
251
|
+
// own path is not a folder CUBE would validate, so it must be followed
|
|
252
|
+
// here, and a refusal names the target the link points at.
|
|
253
|
+
const linkTarget = await cfsLink_target(cleanPath);
|
|
254
|
+
if (linkTarget !== null) {
|
|
255
|
+
const followed = await cdReal_handle(linkTarget, pathArg);
|
|
256
|
+
if (followed.status === 'ok')
|
|
257
|
+
return followed;
|
|
258
|
+
return envelope_error('', undefined, `${chalk.red(`cd: ${pathArg}: link target ${linkTarget}: No such file or directory`)}\n`);
|
|
259
|
+
}
|
|
232
260
|
return cdReal_handle(logicalPath, pathArg);
|
|
233
261
|
}
|
|
234
262
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cd.js","sourceRoot":"","sources":["../../../src/builtins/fs/cd.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cd.js","sourceRoot":"","sources":["../../../src/builtins/fs/cd.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,14 @@ export async function builtin_upload(args) {
|
|
|
34
34
|
}
|
|
35
35
|
const localPath = args[0];
|
|
36
36
|
const remotePath = args[1];
|
|
37
|
+
// The local path is read by the ENGINE: under a daemon that is the daemon
|
|
38
|
+
// host's disk, which belongs to nobody attending the session unless the
|
|
39
|
+
// operator declared it theirs (--host-control=files). Without that, refuse
|
|
40
|
+
// — as download already refuses to write there.
|
|
41
|
+
if (!surface_get().capabilities.engineFilesystem) {
|
|
42
|
+
process.exitCode = 1;
|
|
43
|
+
return envelope_error('', undefined, `${chalk.red("upload: the daemon host's disk is nobody's; start the daemon with --host-control=files, or upload from a surface that can supply the bytes.")}\n`);
|
|
44
|
+
}
|
|
37
45
|
const localGlob = shellArguments_pathnameExpansion(args, 0);
|
|
38
46
|
const targetRemote = await path_resolve(remotePath);
|
|
39
47
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/builtins/fs/upload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,wBAAwB,IAAI,gBAAgB,EAAiB,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAChI,OAAO,EAAE,aAAa,EAAwB,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;;;;;GAMG;AACH,KAAK,UAAU,0BAA0B,CAAC,OAAe;IACvD,MAAM,MAAM,GAAW,MAAM,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,SAAS,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,UAAU,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAY,gCAAgC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAErE,MAAM,YAAY,GAAW,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,OAAO,GAAkB,MAAM,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE;YAC7E,eAAe,EAAE,SAAS;YAC1B,OAAO,EAAE,0BAA0B;YACnC,QAAQ,EAAE,CAAC,OAAe,EAAE,OAAyB,EAAQ,EAAE;gBAC7D,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,QAAQ;oBAAE,IAAI,CAAC,YAAY,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;;oBACvD,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;YACtC,CAAC;YACD,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC;SACtD,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAW,IAAI,CAAC;QAC5B,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YAC9B,QAAQ,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,2BAA2B,OAAO,CAAC,gBAAgB,UAAU,CAAC,IAAI,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,QAAQ,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,OAAO,CAAC,gBAAgB,aAAa,OAAO,CAAC,WAAW,SAAS,CAAC,IAAI,CAAC;QACnH,CAAC;QACD,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QAEtJ,0EAA0E;QAC1E,0EAA0E;QAC1E,yEAAyE;QACzE,IAAI,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,SAAS,CAAC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACzD,gDAAgD;YAChD,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAW,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/builtins/fs/upload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,wBAAwB,IAAI,gBAAgB,EAAiB,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAChI,OAAO,EAAE,aAAa,EAAwB,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;;;;;GAMG;AACH,KAAK,UAAU,0BAA0B,CAAC,OAAe;IACvD,MAAM,MAAM,GAAW,MAAM,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,SAAS,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,UAAU,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,0EAA0E;IAC1E,wEAAwE;IACxE,2EAA2E;IAC3E,gDAAgD;IAChD,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;QACjD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EACjC,GAAG,KAAK,CAAC,GAAG,CAAC,6IAA6I,CAAC,IAAI,CAAC,CAAC;IACrK,CAAC;IACD,MAAM,SAAS,GAAY,gCAAgC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAErE,MAAM,YAAY,GAAW,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,OAAO,GAAkB,MAAM,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE;YAC7E,eAAe,EAAE,SAAS;YAC1B,OAAO,EAAE,0BAA0B;YACnC,QAAQ,EAAE,CAAC,OAAe,EAAE,OAAyB,EAAQ,EAAE;gBAC7D,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,QAAQ;oBAAE,IAAI,CAAC,YAAY,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;;oBACvD,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;YACtC,CAAC;YACD,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC;SACtD,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAW,IAAI,CAAC;QAC5B,IAAI,OAAO,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YAC9B,QAAQ,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,2BAA2B,OAAO,CAAC,gBAAgB,UAAU,CAAC,IAAI,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,QAAQ,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,OAAO,CAAC,gBAAgB,aAAa,OAAO,CAAC,WAAW,SAAS,CAAC,IAAI,CAAC;QACnH,CAAC;QACD,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QAEtJ,0EAA0E;QAC1E,0EAA0E;QAC1E,yEAAyE;QACzE,IAAI,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;YAClC,SAAS,CAAC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACzD,gDAAgD;YAChD,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAW,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;AACH,CAAC"}
|
package/dist/builtins/help.js
CHANGED
|
@@ -136,6 +136,31 @@ export const helpText = {
|
|
|
136
136
|
'EDITOR=nano edit report.json',
|
|
137
137
|
],
|
|
138
138
|
},
|
|
139
|
+
setfacl: {
|
|
140
|
+
usage: 'setfacl -m u:<user>:<perms> <path>...',
|
|
141
|
+
summary: 'Grant another identity access to a feed',
|
|
142
|
+
description: 'Grant another identity access to a feed. A feed is named by id, by the feed_N a '
|
|
143
|
+
+ 'listing shows, or by any path holding one, so a path under /SHARED resolves by the '
|
|
144
|
+
+ 'same rule as one under a home folder. Only user entries exist: CUBE grants to an '
|
|
145
|
+
+ 'identity, not to a group.',
|
|
146
|
+
options: [
|
|
147
|
+
'-m u:<user>:<perms> Add or modify a user entry; the perms must include r',
|
|
148
|
+
'-x u:<user> Remove an entry (not supported: mise cannot revoke a grant)',
|
|
149
|
+
],
|
|
150
|
+
examples: [
|
|
151
|
+
'setfacl -m u:someone:r /home/me/feeds/feed_12',
|
|
152
|
+
'setfacl -m u:someone:r feed_12 feed_13',
|
|
153
|
+
],
|
|
154
|
+
},
|
|
155
|
+
getfacl: {
|
|
156
|
+
usage: 'getfacl <path>...',
|
|
157
|
+
summary: 'Show which identities a feed is shared with',
|
|
158
|
+
description: 'Show which identities a feed is shared with, in the familiar block: a # file: line, '
|
|
159
|
+
+ 'then one user: line per identity holding access.',
|
|
160
|
+
examples: [
|
|
161
|
+
'getfacl /home/me/feeds/feed_12',
|
|
162
|
+
],
|
|
163
|
+
},
|
|
139
164
|
rm: {
|
|
140
165
|
usage: 'rm [options] <path> [path...]',
|
|
141
166
|
description: 'Remove files or directories',
|