@corenel/tools-node 0.9.0 → 0.11.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/dist/fileService.d.ts +5 -0
- package/dist/fileService.d.ts.map +1 -1
- package/dist/fileService.js +9 -0
- package/dist/fileService.js.map +1 -1
- package/dist/registryTokenExchange.d.ts +59 -0
- package/dist/registryTokenExchange.d.ts.map +1 -0
- package/dist/registryTokenExchange.js +140 -0
- package/dist/registryTokenExchange.js.map +1 -0
- package/dist/workflowPackage.d.ts +25 -0
- package/dist/workflowPackage.d.ts.map +1 -0
- package/dist/workflowPackage.js +77 -0
- package/dist/workflowPackage.js.map +1 -0
- package/package.json +4 -4
package/dist/fileService.d.ts
CHANGED
|
@@ -39,6 +39,9 @@ export declare class NodeFileService implements FileService {
|
|
|
39
39
|
/** An OUTER bound: the approved root this folder sits inside (a project
|
|
40
40
|
* inside an operator's --root). See the constructor. */
|
|
41
41
|
private readonly confineTo;
|
|
42
|
+
/** The absolute folder this service is rooted at (read-only), so a host can
|
|
43
|
+
* tell which folder a definition was loaded from. */
|
|
44
|
+
get rootDir(): string;
|
|
42
45
|
/** `confineTo`: when `root` is a folder INSIDE an approved root, name that
|
|
43
46
|
* approved root here. Every per-operation symlink check recomputes
|
|
44
47
|
* realpath(root), so without it, swapping `root` itself for a link after
|
|
@@ -71,6 +74,8 @@ export declare class NodeFileService implements FileService {
|
|
|
71
74
|
private realAbs;
|
|
72
75
|
list(dir?: string): Promise<FileNode[]>;
|
|
73
76
|
read(path: string): Promise<string>;
|
|
77
|
+
/** Raw bytes, confined exactly as `read` is (lexical bound + symlink check). */
|
|
78
|
+
readBytes(path: string): Promise<Uint8Array>;
|
|
74
79
|
stat(path: string): Promise<FileStat | null>;
|
|
75
80
|
/** Atomic (writeFileAtomic): a crash or a full disk mid-write leaves the
|
|
76
81
|
* previous content, never a torn file for sync to copy to the other side. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileService.d.ts","sourceRoot":"","sources":["../fileService.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAuE1F;;;;;;;;;;uBAUuB;AACvB,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,MAAY,GAAG,OAAO,CAgB3E;AAED;;;;;;;;;;;;uDAYuD;AACvD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,MAAY,GAAG,OAAO,CAa7E;AAED;;;4EAG4E;AAC5E,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7F;AAED,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAe;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B;4DACwD;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAE1C;;;;;6DAKyD;gBAC7C,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAO/E;;;4DAGwD;YAC1C,WAAW;IAoBzB,yEAAyE;IACzE,OAAO,CAAC,MAAM;IAId;sFACkF;IAClF,OAAO,CAAC,GAAG;IAMX;;uFAEmF;YACrE,UAAU;IAqBxB;;qCAEiC;YACnB,WAAW;IAOzB,mFAAmF;YACrE,OAAO;IAMf,IAAI,CAAC,GAAG,SAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IA8BnC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"fileService.d.ts","sourceRoot":"","sources":["../fileService.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAuE1F;;;;;;;;;;uBAUuB;AACvB,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,MAAY,GAAG,OAAO,CAgB3E;AAED;;;;;;;;;;;;uDAYuD;AACvD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,MAAY,GAAG,OAAO,CAa7E;AAED;;;4EAG4E;AAC5E,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7F;AAED,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAe;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B;4DACwD;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAE1C;yDACqD;IACrD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;;;6DAKyD;gBAC7C,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAO/E;;;4DAGwD;YAC1C,WAAW;IAoBzB,yEAAyE;IACzE,OAAO,CAAC,MAAM;IAId;sFACkF;IAClF,OAAO,CAAC,GAAG;IAMX;;uFAEmF;YACrE,UAAU;IAqBxB;;qCAEiC;YACnB,WAAW;IAOzB,mFAAmF;YACrE,OAAO;IAMf,IAAI,CAAC,GAAG,SAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IA8BnC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzC,gFAAgF;IAC1E,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI5C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAclD;iFAC6E;IACvE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhE;;uDAEmD;IAC7C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU9C,QAAQ,IAAI,MAAM,IAAI;CAGvB"}
|
package/dist/fileService.js
CHANGED
|
@@ -172,6 +172,11 @@ export async function assertNotGitDir(root, abs, shown) {
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
export class NodeFileService {
|
|
175
|
+
/** The absolute folder this service is rooted at (read-only), so a host can
|
|
176
|
+
* tell which folder a definition was loaded from. */
|
|
177
|
+
get rootDir() {
|
|
178
|
+
return this.root;
|
|
179
|
+
}
|
|
175
180
|
/** `confineTo`: when `root` is a folder INSIDE an approved root, name that
|
|
176
181
|
* approved root here. Every per-operation symlink check recomputes
|
|
177
182
|
* realpath(root), so without it, swapping `root` itself for a link after
|
|
@@ -350,6 +355,10 @@ export class NodeFileService {
|
|
|
350
355
|
async read(path) {
|
|
351
356
|
return fs.readFile(await this.realAbs(path), 'utf8');
|
|
352
357
|
}
|
|
358
|
+
/** Raw bytes, confined exactly as `read` is (lexical bound + symlink check). */
|
|
359
|
+
async readBytes(path) {
|
|
360
|
+
return new Uint8Array(await fs.readFile(await this.realAbs(path)));
|
|
361
|
+
}
|
|
353
362
|
async stat(path) {
|
|
354
363
|
// A lexical escape reads as absent, as it always has; a symlink escape
|
|
355
364
|
// past the approved root (confineTo) is a refusal, never "does not exist".
|
package/dist/fileService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileService.js","sourceRoot":"","sources":["../fileService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fileService.js","sourceRoot":"","sources":["../fileService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export declare const TOKEN_EXCHANGE_PATH = "/auth/token-exchange";
|
|
2
|
+
export declare const TOKEN_EXCHANGE_TTL_SECONDS = 60;
|
|
3
|
+
export declare const TOKEN_EXCHANGE_UNSUPPORTED = "the registry does not support token exchange; private packages cannot be pulled";
|
|
4
|
+
export declare const TOKEN_EXCHANGE_RATE_LIMITED = "the registry refused the token exchange: too many failed exchanges for this key in the last minute";
|
|
5
|
+
/** An exchange that has not answered by then is abandoned (a hung registry must not stall every reconcile pass). */
|
|
6
|
+
export declare const TOKEN_EXCHANGE_TIMEOUT_MS = 30000;
|
|
7
|
+
/** expiresAt is epoch milliseconds. */
|
|
8
|
+
export interface ExchangedToken {
|
|
9
|
+
token: string;
|
|
10
|
+
expiresAt: number;
|
|
11
|
+
}
|
|
12
|
+
export type ExchangeFetch = (url: string, init: {
|
|
13
|
+
method: 'POST';
|
|
14
|
+
headers: Record<string, string>;
|
|
15
|
+
body: string;
|
|
16
|
+
signal: AbortSignal;
|
|
17
|
+
redirect: 'error';
|
|
18
|
+
}) => Promise<{
|
|
19
|
+
ok: boolean;
|
|
20
|
+
status: number;
|
|
21
|
+
json(): Promise<unknown>;
|
|
22
|
+
}>;
|
|
23
|
+
/** The anonymous read check: no headers, so no credential can ride along. */
|
|
24
|
+
export type ProbeFetch = (url: string, init: {
|
|
25
|
+
method: 'GET';
|
|
26
|
+
signal: AbortSignal;
|
|
27
|
+
}) => Promise<{
|
|
28
|
+
ok: boolean;
|
|
29
|
+
status: number;
|
|
30
|
+
}>;
|
|
31
|
+
export declare function exchangeRegistryToken(o: {
|
|
32
|
+
/** Set: the token reads only this exact version (the fleet always sets it). */
|
|
33
|
+
registryUrl: string;
|
|
34
|
+
orgKey: string;
|
|
35
|
+
packageName: string;
|
|
36
|
+
version?: string;
|
|
37
|
+
fetch?: ExchangeFetch;
|
|
38
|
+
timeoutMs?: number;
|
|
39
|
+
}): Promise<ExchangedToken>;
|
|
40
|
+
/** True when anyone may read the package (the registry answers its lookup with no credential at all); false when
|
|
41
|
+
* it is private or absent to an anonymous caller (401, 403, 404). Anything else is an error, never a guess. */
|
|
42
|
+
export declare function publiclyReadable(o: {
|
|
43
|
+
registryUrl: string;
|
|
44
|
+
packageName: string;
|
|
45
|
+
fetch?: ProbeFetch;
|
|
46
|
+
timeoutMs?: number;
|
|
47
|
+
}): Promise<boolean>;
|
|
48
|
+
/** The pull credential for one package: null when the package is public (nothing is sent), otherwise a short
|
|
49
|
+
* read token from the exchange. The org key is used only for a package an anonymous caller cannot read. */
|
|
50
|
+
export declare function registryPullToken(o: {
|
|
51
|
+
registryUrl: string;
|
|
52
|
+
orgKey: string;
|
|
53
|
+
packageName: string;
|
|
54
|
+
version?: string;
|
|
55
|
+
fetch?: ExchangeFetch;
|
|
56
|
+
probe?: ProbeFetch;
|
|
57
|
+
timeoutMs?: number;
|
|
58
|
+
}): Promise<string | null>;
|
|
59
|
+
//# sourceMappingURL=registryTokenExchange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registryTokenExchange.d.ts","sourceRoot":"","sources":["../registryTokenExchange.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAC1D,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,0BAA0B,oFAAoF,CAAC;AAC5H,eAAO,MAAM,2BAA2B,uGAAuG,CAAC;AAGhJ,oHAAoH;AACpH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AACpE,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,KAC5G,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;AACxE,6EAA6E;AAC7E,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AA4BjI,wBAAsB,qBAAqB,CAAC,CAAC,EAAE;IAC7C,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CACvH,GAAG,OAAO,CAAC,cAAc,CAAC,CA+B1B;AAED;+GAC+G;AAC/G,wBAAsB,gBAAgB,CAAC,CAAC,EAAE;IACxC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAClF,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBnB;AAED;2GAC2G;AAC3G,wBAAsB,iBAAiB,CAAC,CAAC,EAAE;IACzC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC3I,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWzB"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/* The one way a node or the fleet server turns an org registry key into a
|
|
2
|
+
* pull token (owner ruling R26). POST <registry>/auth/token-exchange with the
|
|
3
|
+
* org key as the bearer and `{ package, version?, ttlSeconds }`, asking for a
|
|
4
|
+
* read token on ONE package (one exact version when `version` is set) for 60 s;
|
|
5
|
+
* the registry answers 201 `{ token, expiresAt }`
|
|
6
|
+
* with expiresAt an ISO date. The org key goes only to that endpoint, never on
|
|
7
|
+
* a pull, and there is no fallback: a registry without the endpoint cannot
|
|
8
|
+
* serve private pulls and says so. A package anyone can read needs no token:
|
|
9
|
+
* `registryPullToken` checks that first, anonymously, so a public package
|
|
10
|
+
* never costs an exchange (the registry counts a refused exchange against the
|
|
11
|
+
* key and blocks it after ten a minute). No error message ever carries the
|
|
12
|
+
* key. */
|
|
13
|
+
import { encodePackageName } from '@prompd/core';
|
|
14
|
+
export const TOKEN_EXCHANGE_PATH = '/auth/token-exchange';
|
|
15
|
+
export const TOKEN_EXCHANGE_TTL_SECONDS = 60;
|
|
16
|
+
export const TOKEN_EXCHANGE_UNSUPPORTED = 'the registry does not support token exchange; private packages cannot be pulled';
|
|
17
|
+
export const TOKEN_EXCHANGE_RATE_LIMITED = 'the registry refused the token exchange: too many failed exchanges for this key in the last minute';
|
|
18
|
+
/** The body the registry answers a package this key may not read with (404). Any other 404 is a missing endpoint. */
|
|
19
|
+
const PACKAGE_NOT_FOUND = 'Package not found';
|
|
20
|
+
/** An exchange that has not answered by then is abandoned (a hung registry must not stall every reconcile pass). */
|
|
21
|
+
export const TOKEN_EXCHANGE_TIMEOUT_MS = 30000;
|
|
22
|
+
const trimBase = (u) => u.replace(/\/+$/, '');
|
|
23
|
+
/** Runs `work` under one timer that covers every await in it, the body included: a registry that sends headers
|
|
24
|
+
* and then stalls must be abandoned too (Review Focus 5). `race` wraps each await so a reader that ignores the
|
|
25
|
+
* signal cannot hang it either. */
|
|
26
|
+
async function withDeadline(timeoutMs, timedOut, work) {
|
|
27
|
+
const ac = new AbortController();
|
|
28
|
+
let onAbort = () => { };
|
|
29
|
+
const aborted = new Promise((_resolve, reject) => { onAbort = () => reject(timedOut()); });
|
|
30
|
+
aborted.catch(() => { });
|
|
31
|
+
ac.signal.addEventListener('abort', () => onAbort(), { once: true });
|
|
32
|
+
const timer = setTimeout(() => ac.abort(), timeoutMs);
|
|
33
|
+
try {
|
|
34
|
+
return await work(ac.signal, (p) => Promise.race([p, aborted]));
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
if (ac.signal.aborted)
|
|
38
|
+
throw timedOut();
|
|
39
|
+
throw e;
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
clearTimeout(timer);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export async function exchangeRegistryToken(o) {
|
|
46
|
+
const doFetch = o.fetch ?? ((url, init) => fetch(url, init));
|
|
47
|
+
const url = `${trimBase(o.registryUrl)}${TOKEN_EXCHANGE_PATH}`;
|
|
48
|
+
const timeoutMs = o.timeoutMs ?? TOKEN_EXCHANGE_TIMEOUT_MS;
|
|
49
|
+
return withDeadline(timeoutMs, () => new Error(`the registry token exchange did not answer within ${timeoutMs} ms`), async (signal, race) => {
|
|
50
|
+
let res;
|
|
51
|
+
try {
|
|
52
|
+
res = await race(doFetch(url, {
|
|
53
|
+
method: 'POST',
|
|
54
|
+
headers: { authorization: `Bearer ${o.orgKey}`, 'content-type': 'application/json' },
|
|
55
|
+
body: JSON.stringify({ package: o.packageName, ...(o.version !== undefined ? { version: o.version } : {}), ttlSeconds: TOKEN_EXCHANGE_TTL_SECONDS }),
|
|
56
|
+
signal,
|
|
57
|
+
// The org key goes to this origin only: a redirect is a failure, not a hop to wherever it points.
|
|
58
|
+
redirect: 'error',
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
if (signal.aborted)
|
|
63
|
+
throw e;
|
|
64
|
+
throw new Error(`the registry token exchange could not be reached (${e instanceof Error ? e.message : String(e)})`);
|
|
65
|
+
}
|
|
66
|
+
const body = async () => {
|
|
67
|
+
try {
|
|
68
|
+
return await race(res.json());
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
if (signal.aborted)
|
|
72
|
+
throw e;
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
if (res.status === 405)
|
|
77
|
+
throw new Error(TOKEN_EXCHANGE_UNSUPPORTED);
|
|
78
|
+
if (res.status === 404) {
|
|
79
|
+
if (record(await body()).error === PACKAGE_NOT_FOUND)
|
|
80
|
+
throw new Error(`the registry has no package ${o.packageName} that this org key can read`);
|
|
81
|
+
throw new Error(TOKEN_EXCHANGE_UNSUPPORTED);
|
|
82
|
+
}
|
|
83
|
+
if (res.status === 429)
|
|
84
|
+
throw new Error(TOKEN_EXCHANGE_RATE_LIMITED);
|
|
85
|
+
if (!res.ok)
|
|
86
|
+
throw new Error(`the registry refused the token exchange (HTTP ${res.status})`);
|
|
87
|
+
return usableToken(await body());
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/** True when anyone may read the package (the registry answers its lookup with no credential at all); false when
|
|
91
|
+
* it is private or absent to an anonymous caller (401, 403, 404). Anything else is an error, never a guess. */
|
|
92
|
+
export async function publiclyReadable(o) {
|
|
93
|
+
const doFetch = o.fetch ?? ((url, init) => fetch(url, init));
|
|
94
|
+
const url = `${trimBase(o.registryUrl)}/packages/${encodePackageName(o.packageName)}`;
|
|
95
|
+
const timeoutMs = o.timeoutMs ?? TOKEN_EXCHANGE_TIMEOUT_MS;
|
|
96
|
+
return withDeadline(timeoutMs, () => new Error(`the registry did not answer the lookup of ${o.packageName} within ${timeoutMs} ms`), async (signal, race) => {
|
|
97
|
+
let res;
|
|
98
|
+
try {
|
|
99
|
+
res = await race(doFetch(url, { method: 'GET', signal }));
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
if (signal.aborted)
|
|
103
|
+
throw e;
|
|
104
|
+
throw new Error(`the registry could not be reached (${e instanceof Error ? e.message : String(e)})`);
|
|
105
|
+
}
|
|
106
|
+
if (res.ok)
|
|
107
|
+
return true;
|
|
108
|
+
if (res.status === 401 || res.status === 403 || res.status === 404)
|
|
109
|
+
return false;
|
|
110
|
+
throw new Error(`the registry lookup of ${o.packageName} failed (HTTP ${res.status})`);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/** The pull credential for one package: null when the package is public (nothing is sent), otherwise a short
|
|
114
|
+
* read token from the exchange. The org key is used only for a package an anonymous caller cannot read. */
|
|
115
|
+
export async function registryPullToken(o) {
|
|
116
|
+
const timeouts = o.timeoutMs !== undefined ? { timeoutMs: o.timeoutMs } : {};
|
|
117
|
+
const isPublic = await publiclyReadable({
|
|
118
|
+
registryUrl: o.registryUrl, packageName: o.packageName, ...(o.probe ? { fetch: o.probe } : {}), ...timeouts,
|
|
119
|
+
});
|
|
120
|
+
if (isPublic)
|
|
121
|
+
return null;
|
|
122
|
+
const t = await exchangeRegistryToken({
|
|
123
|
+
registryUrl: o.registryUrl, orgKey: o.orgKey, packageName: o.packageName,
|
|
124
|
+
...(o.version !== undefined ? { version: o.version } : {}), ...(o.fetch ? { fetch: o.fetch } : {}), ...timeouts,
|
|
125
|
+
});
|
|
126
|
+
return t.token;
|
|
127
|
+
}
|
|
128
|
+
function record(v) {
|
|
129
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v) ? v : {};
|
|
130
|
+
}
|
|
131
|
+
/** expiresAt arrives as an ISO date (the registry's contract); epoch milliseconds are accepted too. */
|
|
132
|
+
function usableToken(body) {
|
|
133
|
+
const b = record(body);
|
|
134
|
+
const expiresAt = typeof b.expiresAt === 'string' ? Date.parse(b.expiresAt) : typeof b.expiresAt === 'number' ? b.expiresAt : NaN;
|
|
135
|
+
if (typeof b.token !== 'string' || b.token.length === 0 || !Number.isFinite(expiresAt)) {
|
|
136
|
+
throw new Error('the registry answered the token exchange with no usable token');
|
|
137
|
+
}
|
|
138
|
+
return { token: b.token, expiresAt };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=registryTokenExchange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registryTokenExchange.js","sourceRoot":"","sources":["../registryTokenExchange.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ParsedWorkflow, type Trigger, type VerifiedPackage, type WorkflowParameter } from '@prompd/core';
|
|
2
|
+
/** What a verified workflow package says about itself. */
|
|
3
|
+
export interface WorkflowPackageFacts {
|
|
4
|
+
/** The .pdflow to run: manifest.main, a path inside the package. */
|
|
5
|
+
main: string;
|
|
6
|
+
parsed: ParsedWorkflow;
|
|
7
|
+
description: string;
|
|
8
|
+
/** Trigger types in the trigger node the daemon fires for a package (SIDECAR_WORKFLOW_TRIGGERS less file-change,
|
|
9
|
+
* which fires only for a workflow in a sidecar folder), sorted, unique. What the fleet stores and the console shows. */
|
|
10
|
+
triggers: string[];
|
|
11
|
+
/** The workflow's declared parameters, as typed for run_workflow. */
|
|
12
|
+
parameters: WorkflowParameter[];
|
|
13
|
+
}
|
|
14
|
+
/** The trigger node's triggers that fire on the sidecar (spec 5.2). Only the
|
|
15
|
+
* `triggers` list is read: core 0.6.0 keeps the legacy trigger-node fields
|
|
16
|
+
* (`triggerType`, `schedule*`, ...) as @deprecated, and the daemon ignores them. */
|
|
17
|
+
export declare function sidecarTriggersOf(parsed: ParsedWorkflow): Trigger[];
|
|
18
|
+
/** Why `parameters` is not a list of named parameters, or null when it is (or
|
|
19
|
+
* is absent). The browser's rule, word for word. */
|
|
20
|
+
export declare function parametersProblem(params: unknown): string | null;
|
|
21
|
+
/** True when the .pdflow holds a node of type user-input (C13). */
|
|
22
|
+
export declare function hasUserInputNode(parsed: ParsedWorkflow): boolean;
|
|
23
|
+
/** Throws Error with a reason a person can read. */
|
|
24
|
+
export declare function inspectWorkflowPackage(pkg: Pick<VerifiedPackage, 'manifest' | 'files'>): WorkflowPackageFacts;
|
|
25
|
+
//# sourceMappingURL=workflowPackage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflowPackage.d.ts","sourceRoot":"","sources":["../workflowPackage.ts"],"names":[],"mappings":"AAQA,OAAO,EAAqB,KAAK,cAAc,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAMlI,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB;4HACwH;IACxH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qEAAqE;IACrE,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED;;oFAEoF;AACpF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,EAAE,CAYnE;AAED;oDACoD;AACpD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKhE;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAGhE;AAED,oDAAoD;AACpD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,oBAAoB,CAwB7G"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/* The ONE rule for a deployable workflow package. The fleet resolver applies it at deploy time and the sidecar
|
|
2
|
+
* reconciler and loader apply it on every load, so a package either passes everywhere or nowhere. Node-free:
|
|
3
|
+
* it reads only the bytes @prompd/core already verified (VerifiedPackage.files) and imports only
|
|
4
|
+
* @prompd/core and @corenel/protocol.
|
|
5
|
+
*
|
|
6
|
+
* A deployable workflow names its .pdflow in the manifest's `main`, parses (invalid JSON never runs, and
|
|
7
|
+
* `parameters` must be a list of named parameters: the browser's rule), carries a description agents can read,
|
|
8
|
+
* and has no user-input node, since a workflow the fleet deploys runs unattended and could never answer it. */
|
|
9
|
+
import { parseWorkflowJson } from '@prompd/core';
|
|
10
|
+
import { SIDECAR_WORKFLOW_TRIGGERS } from '@corenel/protocol';
|
|
11
|
+
/** A package has no folder to watch, so its file-change trigger never fires (workflowSchedule.ts never arms it). */
|
|
12
|
+
const PACKAGE_NEVER_FIRES = 'file-change';
|
|
13
|
+
/** The trigger node's triggers that fire on the sidecar (spec 5.2). Only the
|
|
14
|
+
* `triggers` list is read: core 0.6.0 keeps the legacy trigger-node fields
|
|
15
|
+
* (`triggerType`, `schedule*`, ...) as @deprecated, and the daemon ignores them. */
|
|
16
|
+
export function sidecarTriggersOf(parsed) {
|
|
17
|
+
const nodes = parsed.file?.nodes;
|
|
18
|
+
if (!Array.isArray(nodes))
|
|
19
|
+
return [];
|
|
20
|
+
const node = nodes.find((n) => !!n && typeof n === 'object' && n.type === 'trigger');
|
|
21
|
+
const data = node && typeof node === 'object' ? node.data : undefined;
|
|
22
|
+
const raw = data && typeof data === 'object' ? data.triggers : undefined;
|
|
23
|
+
if (!Array.isArray(raw))
|
|
24
|
+
return [];
|
|
25
|
+
return raw.filter((t) => {
|
|
26
|
+
if (!t || typeof t !== 'object')
|
|
27
|
+
return false;
|
|
28
|
+
const type = t.type;
|
|
29
|
+
return typeof type === 'string' && SIDECAR_WORKFLOW_TRIGGERS.includes(type);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/** Why `parameters` is not a list of named parameters, or null when it is (or
|
|
33
|
+
* is absent). The browser's rule, word for word. */
|
|
34
|
+
export function parametersProblem(params) {
|
|
35
|
+
if (params === undefined)
|
|
36
|
+
return null;
|
|
37
|
+
if (!Array.isArray(params))
|
|
38
|
+
return 'parameters must be a list';
|
|
39
|
+
const i = params.findIndex((p) => !p || typeof p !== 'object' || Array.isArray(p) || typeof p.name !== 'string');
|
|
40
|
+
return i === -1 ? null : `parameters item ${i + 1} is not a parameter with a name`;
|
|
41
|
+
}
|
|
42
|
+
/** True when the .pdflow holds a node of type user-input (C13). */
|
|
43
|
+
export function hasUserInputNode(parsed) {
|
|
44
|
+
const nodes = parsed.file?.nodes;
|
|
45
|
+
return Array.isArray(nodes) && nodes.some((n) => !!n && typeof n === 'object' && n.type === 'user-input');
|
|
46
|
+
}
|
|
47
|
+
/** Throws Error with a reason a person can read. */
|
|
48
|
+
export function inspectWorkflowPackage(pkg) {
|
|
49
|
+
const ref = `${pkg.manifest.name}@${pkg.manifest.version}`;
|
|
50
|
+
const main = pkg.manifest.main;
|
|
51
|
+
if (typeof main !== 'string' || main.trim() === '')
|
|
52
|
+
throw new Error(`${ref} names no .pdflow to run (main)`);
|
|
53
|
+
const bytes = main.toLowerCase().endsWith('.pdflow') ? pkg.files.get(main) : undefined;
|
|
54
|
+
if (!bytes)
|
|
55
|
+
throw new Error(`${ref}: main ${main} is not a .pdflow in the package`);
|
|
56
|
+
const r = parseWorkflowJson(new TextDecoder().decode(bytes));
|
|
57
|
+
// parseWorkflow does not throw on bad JSON: it returns a placeholder file
|
|
58
|
+
// plus an INVALID_JSON error, which must never run.
|
|
59
|
+
if (!r.parsed || r.parsed.errors?.some((e) => e.code === 'INVALID_JSON')) {
|
|
60
|
+
throw new Error(`${ref}: ${main} is not a valid workflow (${r.errors.join('; ') || 'it is not a workflow'})`);
|
|
61
|
+
}
|
|
62
|
+
const parsed = r.parsed;
|
|
63
|
+
const badParams = parametersProblem(parsed.file.parameters);
|
|
64
|
+
if (badParams)
|
|
65
|
+
throw new Error(`${ref}: ${main} is not a valid workflow (${badParams})`);
|
|
66
|
+
const meta = parsed.file.metadata;
|
|
67
|
+
const rawDescription = meta && typeof meta === 'object' ? meta.description : undefined;
|
|
68
|
+
const description = typeof rawDescription === 'string' ? rawDescription.trim() : '';
|
|
69
|
+
if (!description)
|
|
70
|
+
throw new Error(`${ref} is a workflow without a description; agents need one to know when to call it.`);
|
|
71
|
+
if (hasUserInputNode(parsed)) {
|
|
72
|
+
throw new Error(`${ref} has a user-input node, which waits for a person; a workflow the fleet deploys runs unattended and could never answer it.`);
|
|
73
|
+
}
|
|
74
|
+
const triggers = [...new Set(sidecarTriggersOf(parsed).map((t) => t.type))].filter((t) => t !== PACKAGE_NEVER_FIRES).sort();
|
|
75
|
+
return { main, parsed, description, triggers, parameters: parsed.file.parameters ?? [] };
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=workflowPackage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflowPackage.js","sourceRoot":"","sources":["../workflowPackage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@corenel/tools-node",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"license": "Elastic-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Corenel node capabilities — the tools-web twin. A disk-backed FileService (the harness file tools + node PromptHost workspace) over node:fs, confined to a root. Shell/secrets/~/.corenel to follow.",
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@prompd/core": "0.
|
|
19
|
-
"@corenel/protocol": "0.
|
|
20
|
-
"@corenel/harness": "0.
|
|
18
|
+
"@prompd/core": "0.7.0",
|
|
19
|
+
"@corenel/protocol": "0.19.0",
|
|
20
|
+
"@corenel/harness": "0.21.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/node": "^24.13.1",
|