Repository navigation
Telo v0.100.0
Packages
| Package | Version |
|---|---|
@telorun/cli |
0.100.0 |
@telorun/analyzer |
0.82.0 |
@telorun/ide-support |
0.22.2 |
@telorun/k8s-runner |
0.16.2 |
@telorun/kernel |
0.100.0 |
@telorun/sdk |
0.100.0 |
Minor
Added: a root Application reads its command line through declared bindings. A variables: or ports: entry may carry arg: beside env: — a flag name, { flag, short? }, or { position } — and needs one of the two. Precedence is a value supplied by name, then the command line, then the environment, then default:. A repeated flag fills an array-typed entry, each token read by items.type; a boolean is --x / --no-x; -- ends options. An argument nothing declares, a missing flag value, a surplus positional or a value failing its type is refused before boot in ERR_MANIFEST_VALIDATION_FAILED, naming what the application declares, and --help prints the usage the bindings describe instead of running — a synopsis ([<name>] [--tag|-t <string>]... [--[no-]verbose]) then one line per argument; the analyzer exports the same rendering (renderArgumentSynopsis, renderApplicationUsage) for other hosts. telo check reports a conflicting or malformed binding as ARG_BINDING_INVALID, a secret bound to the command line as ARG_BINDING_ON_SECRET, and arg: in a library as LIBRARY_ARG_KEY_REJECTED. — cli, analyzer, k8s-runner, kernel, sdk
Changed: every argument after the manifest path now belongs to the application — telo run [options] <path> [application arguments], as node [options] app.js [args] — so telo run app.yaml --watch becomes telo run --watch app.yaml. Before the path, --inspect reads a following [host:]port; a bare host is written --inspect=<host>. Controllers no longer receive the command line: ctx.args, ParsedArgs and a controller's args export are removed from the SDK (the kernel still hands an already-published controller an empty args).
Added: a Telo.Abstract may declare throws: { codes }, and an ancestor's throws: list is now a ceiling every descendant's codes must fall within. The kernel used to refuse throws: on an abstract at boot while telo check accepted it. A descendant declaring a code its nearest ancestor with a literal throws: list does not is reported as THROWS_NOT_SUBSTITUTABLE and refused at registration with ERR_THROWS_NOT_SUBSTITUTABLE, for a dependency's definition too. On an abstract, inherit / passthrough are refused, and THROWS_ON_NON_DISPATCH_CAPABILITY now covers abstracts. The shape of a throws: block and the capabilities allowed to declare one are now one rule both halves read: telo check reports a malformed block (SCHEMA_VIOLATION) that used to fail only at boot, and the kernel now refuses throws: on a declared capability outside Telo.Invocable / Telo.Runnable, a third party's included, as telo check already did. A ceiling above an inherit / passthrough ancestor still bounds the descendants below it. A dispatch through a library's kind-only resources: input now resolves to that kind's nearest declared list, and to an unbounded union when none is declared, where it used to read as throwing nothing — so a library's catches: against such an input is checked against the codes the real implementation may throw, and one over an abstract with no list needs a catch-all (UNBOUNDED_UNION_NEEDS_CATCHALL). — analyzer, kernel
Added: a resource rule may declare resolve:, a list of JSON Pointers to its kind's own reference slots. Inside the condition each one reads as the declaration it references, one level deep: a single slot as that declaration, a collection of references as the same collection with each entry resolved. This lets a rule state a relation across the resources a slot lists, such as distinct language codes. When a reference cannot be resolved, or names a library's kind-only resources: input, the rule reports RESOURCE_RULE_SKIPPED for that resource instead of running over a partial set. The same kind-only case now skips a referrer rule's peers: binding too, where it used to bind a declaration with no fields. A !module-path inside a bound declaration now compares as the path its author wrote; it used to make every rule binding that declaration skip. — analyzer
Patch
Fixed: telo release status and telo release check no longer fail with MODULE_PATH_NOT_FOUND for a !module-path naming a file the module's own sources: block stages as a module file (an entry an assets: pattern selects, or a source's notice), or a directory such a file lies beneath, when that file is not yet staged on disk. Release commands digest staged files from their pins, so such a file ships from its pin, and a directory claim covers every staged file beneath it as well as what is on disk. telo publish and telo package, which read staged files from disk, still refuse a path with nothing there (MODULE_PATH_NOT_FOUND) and an empty directory (MODULE_PATH_EMPTY). The analyzer exports the shared rule (stagedModuleFiles, pathsAtOrBeneath) that telo check applies to the same question. — cli, analyzer
Fixed: telo check no longer reports MODULE_PATH_NOT_FOUND for a !module-path naming a file the module's own sources: block stages as a module file (an entry an assets: pattern selects, or a source's notice), or a directory such a file lies beneath. The kernel stages that file on first use, so in a fresh checkout the check failed a module that runs. A path no entry stages, a staged native file, and any path while the sources: block cannot be read are still reported. — analyzer
- @telorun/templating@0.23.0
Changelogs: cli · analyzer · ide-support · k8s-runner · kernel · sdk