@telorun/cli 0.21.0 → 0.23.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 +2 -2
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/cel.d.ts +3 -0
- package/dist/commands/cel.d.ts.map +1 -0
- package/dist/commands/cel.js +74 -0
- package/dist/commands/cel.js.map +1 -0
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -123,7 +123,7 @@ Per-manifest scope means the whole `.telo/` tree is naturally portable: `COPY` t
|
|
|
123
123
|
|
|
124
124
|
```
|
|
125
125
|
Installing 20 controllers for apps/my-app/telo.yaml
|
|
126
|
-
✓ pkg:npm/@telorun/http-server@0.8.
|
|
126
|
+
✓ pkg:npm/@telorun/http-server@0.8.1?local_path=./nodejs#http-server
|
|
127
127
|
✓ pkg:npm/@telorun/http-client@0.6.0?local_path=./nodejs#http-client
|
|
128
128
|
...
|
|
129
129
|
|
|
@@ -234,7 +234,7 @@ kind: Telo.Application
|
|
|
234
234
|
metadata:
|
|
235
235
|
name: Example
|
|
236
236
|
imports:
|
|
237
|
-
HttpServer: std/http-server@0.
|
|
237
|
+
HttpServer: std/http-server@0.9.0
|
|
238
238
|
JavaScript: std/javascript@0.4.1
|
|
239
239
|
targets:
|
|
240
240
|
- Server
|
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import yargs from "yargs";
|
|
3
3
|
import { hideBin } from "yargs/helpers";
|
|
4
|
+
import { celCommand } from "./commands/cel.js";
|
|
4
5
|
import { checkCommand } from "./commands/check.js";
|
|
5
6
|
import { installCommand } from "./commands/install.js";
|
|
6
7
|
import { publishCommand } from "./commands/publish.js";
|
|
@@ -9,6 +10,7 @@ import { upgradeCommand } from "./commands/upgrade.js";
|
|
|
9
10
|
let cli = yargs(hideBin(process.argv))
|
|
10
11
|
.scriptName("telo")
|
|
11
12
|
.usage("$0 <command> [options]");
|
|
13
|
+
cli = celCommand(cli);
|
|
12
14
|
cli = checkCommand(cli);
|
|
13
15
|
cli = installCommand(cli);
|
|
14
16
|
cli = publishCommand(cli);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACnC,UAAU,CAAC,MAAM,CAAC;KAClB,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAEnC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAe,CAAC;AACtC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAe,CAAC;AACxC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAe,CAAC;AACxC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAe,CAAC;AACpC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAe,CAAC;AAExC,GAAG;KACA,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,wBAAwB;CACnC,CAAC;KACD,MAAM,CAAC,OAAO,EAAE;IACf,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,8BAA8B;CACzC,CAAC;KACD,MAAM,CAAC,kBAAkB,EAAE;IAC1B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,4BAA4B;CACvC,CAAC;KACD,MAAM,CAAC,OAAO,EAAE;IACf,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,2CAA2C;CACtD,CAAC;KACD,aAAa,CAAC,CAAC,EAAE,yCAAyC,CAAC;KAC3D,MAAM,EAAE;KACR,IAAI,EAAE;KACN,OAAO,EAAE;KACT,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACnC,UAAU,CAAC,MAAM,CAAC;KAClB,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAEnC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAe,CAAC;AACpC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAe,CAAC;AACtC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAe,CAAC;AACxC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAe,CAAC;AACxC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAe,CAAC;AACpC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAe,CAAC;AAExC,GAAG;KACA,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,wBAAwB;CACnC,CAAC;KACD,MAAM,CAAC,OAAO,EAAE;IACf,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,8BAA8B;CACzC,CAAC;KACD,MAAM,CAAC,kBAAkB,EAAE;IAC1B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,4BAA4B;CACvC,CAAC;KACD,MAAM,CAAC,OAAO,EAAE;IACf,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,2CAA2C;CACtD,CAAC;KACD,aAAa,CAAC,CAAC,EAAE,yCAAyC,CAAC;KAC3D,MAAM,EAAE;KACR,IAAI,EAAE;KACN,OAAO,EAAE;KACT,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cel.d.ts","sourceRoot":"","sources":["../../src/commands/cel.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AA6DlC,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAkC5C"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { buildCelEnvironment, celFunctionCatalog } from "@telorun/templating";
|
|
2
|
+
import { nodeCelHandlers } from "@telorun/kernel";
|
|
3
|
+
/** JSON.stringify replacer: cel-js ints are BigInt, which JSON can't serialize. */
|
|
4
|
+
const bigintReplacer = (_k, v) => (typeof v === "bigint" ? Number(v) : v);
|
|
5
|
+
function printFunctions(asJson) {
|
|
6
|
+
const catalog = celFunctionCatalog();
|
|
7
|
+
if (asJson) {
|
|
8
|
+
console.log(JSON.stringify(catalog, null, 2));
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const byCategory = new Map();
|
|
12
|
+
for (const fn of catalog) {
|
|
13
|
+
const list = byCategory.get(fn.category) ?? [];
|
|
14
|
+
list.push(fn);
|
|
15
|
+
byCategory.set(fn.category, list);
|
|
16
|
+
}
|
|
17
|
+
for (const [category, fns] of byCategory) {
|
|
18
|
+
console.log(`\n${category}`);
|
|
19
|
+
for (const fn of fns) {
|
|
20
|
+
const tags = [
|
|
21
|
+
fn.hostBacked ? "host" : null,
|
|
22
|
+
fn.deterministic ? null : "non-deterministic",
|
|
23
|
+
].filter(Boolean);
|
|
24
|
+
const suffix = tags.length ? ` [${tags.join(", ")}]` : "";
|
|
25
|
+
console.log(` ${fn.signature}${suffix}`);
|
|
26
|
+
console.log(` ${fn.summary}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
console.log();
|
|
30
|
+
}
|
|
31
|
+
function evalExpression(expr, contextJson, asJson) {
|
|
32
|
+
let context;
|
|
33
|
+
try {
|
|
34
|
+
context = contextJson ? JSON.parse(contextJson) : {};
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
console.error(`Invalid --context JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
// Real Node handlers so host-backed functions (sha256, base64, …) behave
|
|
41
|
+
// exactly as they would at runtime.
|
|
42
|
+
const env = buildCelEnvironment(nodeCelHandlers);
|
|
43
|
+
let result;
|
|
44
|
+
try {
|
|
45
|
+
result = env.parse(expr)(context);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
if (asJson) {
|
|
52
|
+
console.log(JSON.stringify(result, bigintReplacer, 2));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
console.log(typeof result === "bigint" ? result.toString() : result);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function celCommand(yargs) {
|
|
59
|
+
return yargs.command("cel", "Inspect and evaluate Telo's CEL environment", (cel) => cel
|
|
60
|
+
.command("functions", "List the CEL standard-library functions available in manifests", (y) => y.option("json", { type: "boolean", default: false, describe: "Output as JSON" }), (argv) => printFunctions(Boolean(argv.json)))
|
|
61
|
+
.command("eval <expression>", "Evaluate a CEL expression (the body of a !cel scalar)", (y) => y
|
|
62
|
+
.positional("expression", {
|
|
63
|
+
describe: "CEL expression, e.g. \"now()\" or \"1 + 2\"",
|
|
64
|
+
type: "string",
|
|
65
|
+
demandOption: true,
|
|
66
|
+
})
|
|
67
|
+
.option("context", {
|
|
68
|
+
type: "string",
|
|
69
|
+
describe: 'JSON object of in-scope variables, e.g. \'{"variables":{"x":1}}\'',
|
|
70
|
+
})
|
|
71
|
+
.option("json", { type: "boolean", default: false, describe: "Output as JSON" }), (argv) => evalExpression(String(argv.expression), argv.context, Boolean(argv.json)))
|
|
72
|
+
.demandCommand(1, "Specify a cel subcommand: functions or eval"));
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=cel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cel.js","sourceRoot":"","sources":["../../src/commands/cel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telorun/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "Telo CLI - Command-line interface for the Telo runtime.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"telo",
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
"dist"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@telorun/analyzer": "0.
|
|
38
|
-
"@telorun/ide-support": "0.4.
|
|
39
|
-
"@telorun/kernel": "0.
|
|
40
|
-
"@telorun/sdk": "0.
|
|
41
|
-
"@telorun/templating": "0.
|
|
37
|
+
"@telorun/analyzer": "0.21.0",
|
|
38
|
+
"@telorun/ide-support": "0.4.21",
|
|
39
|
+
"@telorun/kernel": "0.23.0",
|
|
40
|
+
"@telorun/sdk": "0.23.0",
|
|
41
|
+
"@telorun/templating": "0.7.0",
|
|
42
42
|
"dotenv": "^17.4.0",
|
|
43
43
|
"minimatch": "^10.2.5",
|
|
44
44
|
"packageurl-js": "^2.0.1",
|