@intentius/chant-lexicon-k3s 0.44.3

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.
Files changed (110) hide show
  1. package/README.md +36 -0
  2. package/dist/codegen/docs.d.ts +7 -0
  3. package/dist/codegen/docs.d.ts.map +1 -0
  4. package/dist/codegen/generate-cli.d.ts +3 -0
  5. package/dist/codegen/generate-cli.d.ts.map +1 -0
  6. package/dist/codegen/generate-lexicon.d.ts +19 -0
  7. package/dist/codegen/generate-lexicon.d.ts.map +1 -0
  8. package/dist/codegen/generate-typescript.d.ts +11 -0
  9. package/dist/codegen/generate-typescript.d.ts.map +1 -0
  10. package/dist/codegen/generate.d.ts +15 -0
  11. package/dist/codegen/generate.d.ts.map +1 -0
  12. package/dist/codegen/naming.d.ts +13 -0
  13. package/dist/codegen/naming.d.ts.map +1 -0
  14. package/dist/codegen/package.d.ts +17 -0
  15. package/dist/codegen/package.d.ts.map +1 -0
  16. package/dist/codegen/parse.d.ts +93 -0
  17. package/dist/codegen/parse.d.ts.map +1 -0
  18. package/dist/generated/index.d.ts +8 -0
  19. package/dist/generated/index.d.ts.map +1 -0
  20. package/dist/generated/runtime.d.ts +5 -0
  21. package/dist/generated/runtime.d.ts.map +1 -0
  22. package/dist/index.d.ts +5 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/integrity.json +10 -0
  25. package/dist/lint/audit-catalog.d.ts +13 -0
  26. package/dist/lint/audit-catalog.d.ts.map +1 -0
  27. package/dist/lint/post-synth/index.d.ts +3 -0
  28. package/dist/lint/post-synth/index.d.ts.map +1 -0
  29. package/dist/lint/post-synth/k3s-helpers.d.ts +19 -0
  30. package/dist/lint/post-synth/k3s-helpers.d.ts.map +1 -0
  31. package/dist/lint/post-synth/k3s101.d.ts +13 -0
  32. package/dist/lint/post-synth/k3s101.d.ts.map +1 -0
  33. package/dist/lint/post-synth/k3s102.d.ts +11 -0
  34. package/dist/lint/post-synth/k3s102.d.ts.map +1 -0
  35. package/dist/lint/post-synth/k3s103.d.ts +11 -0
  36. package/dist/lint/post-synth/k3s103.d.ts.map +1 -0
  37. package/dist/lint/post-synth/k3s104.d.ts +12 -0
  38. package/dist/lint/post-synth/k3s104.d.ts.map +1 -0
  39. package/dist/lint/post-synth/k3s105.d.ts +11 -0
  40. package/dist/lint/post-synth/k3s105.d.ts.map +1 -0
  41. package/dist/lint/rules/index.d.ts +5 -0
  42. package/dist/lint/rules/index.d.ts.map +1 -0
  43. package/dist/lint/rules/token-literal.d.ts +17 -0
  44. package/dist/lint/rules/token-literal.d.ts.map +1 -0
  45. package/dist/lsp/completions.d.ts +7 -0
  46. package/dist/lsp/completions.d.ts.map +1 -0
  47. package/dist/lsp/hover.d.ts +6 -0
  48. package/dist/lsp/hover.d.ts.map +1 -0
  49. package/dist/manifest.json +6 -0
  50. package/dist/meta.json +37 -0
  51. package/dist/okf/index.md +9 -0
  52. package/dist/okf/types/Agent.md +55 -0
  53. package/dist/okf/types/Registries.md +14 -0
  54. package/dist/okf/types/Server.md +122 -0
  55. package/dist/package-cli.d.ts +3 -0
  56. package/dist/package-cli.d.ts.map +1 -0
  57. package/dist/plugin.d.ts +8 -0
  58. package/dist/plugin.d.ts.map +1 -0
  59. package/dist/serializer.d.ts +37 -0
  60. package/dist/serializer.d.ts.map +1 -0
  61. package/dist/skills/chant-k3s.md +90 -0
  62. package/dist/spec/fetch.d.ts +39 -0
  63. package/dist/spec/fetch.d.ts.map +1 -0
  64. package/dist/types/index.d.ts +370 -0
  65. package/dist/validate-cli.d.ts +3 -0
  66. package/dist/validate-cli.d.ts.map +1 -0
  67. package/dist/validate.d.ts +15 -0
  68. package/dist/validate.d.ts.map +1 -0
  69. package/package.json +68 -0
  70. package/src/codegen/docs.ts +25 -0
  71. package/src/codegen/generate-cli.ts +8 -0
  72. package/src/codegen/generate-lexicon.ts +58 -0
  73. package/src/codegen/generate-typescript.ts +63 -0
  74. package/src/codegen/generate.test.ts +157 -0
  75. package/src/codegen/generate.ts +116 -0
  76. package/src/codegen/naming.ts +42 -0
  77. package/src/codegen/package.ts +28 -0
  78. package/src/codegen/parse.ts +386 -0
  79. package/src/generated/.gitkeep +0 -0
  80. package/src/generated/index.d.ts +370 -0
  81. package/src/generated/index.ts +13 -0
  82. package/src/generated/lexicon-k3s.json +37 -0
  83. package/src/generated/runtime.ts +4 -0
  84. package/src/index.ts +11 -0
  85. package/src/lint/audit-catalog.ts +53 -0
  86. package/src/lint/post-synth/index.ts +15 -0
  87. package/src/lint/post-synth/k3s-helpers.ts +34 -0
  88. package/src/lint/post-synth/k3s101.ts +58 -0
  89. package/src/lint/post-synth/k3s102.ts +59 -0
  90. package/src/lint/post-synth/k3s103.ts +38 -0
  91. package/src/lint/post-synth/k3s104.ts +44 -0
  92. package/src/lint/post-synth/k3s105.ts +52 -0
  93. package/src/lint/post-synth/post-synth.test.ts +137 -0
  94. package/src/lint/rules/index.ts +7 -0
  95. package/src/lint/rules/token-literal.test.ts +53 -0
  96. package/src/lint/rules/token-literal.ts +87 -0
  97. package/src/lsp/completions.test.ts +10 -0
  98. package/src/lsp/completions.ts +25 -0
  99. package/src/lsp/hover.test.ts +10 -0
  100. package/src/lsp/hover.ts +43 -0
  101. package/src/package-cli.ts +24 -0
  102. package/src/plugin.test.ts +17 -0
  103. package/src/plugin.ts +129 -0
  104. package/src/serializer.acceptance.test.ts +137 -0
  105. package/src/serializer.test.ts +172 -0
  106. package/src/serializer.ts +191 -0
  107. package/src/skills/chant-k3s.md +90 -0
  108. package/src/spec/fetch.ts +80 -0
  109. package/src/validate-cli.ts +5 -0
  110. package/src/validate.ts +41 -0
package/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # @intentius/chant-lexicon-k3s
2
+
3
+ k3s lexicon for [chant](https://github.com/intentius/chant) — the k3s
4
+ distro's host configuration as declarable data.
5
+
6
+ Declares the files k3s itself consumes: `config.yaml` for `k3s server` /
7
+ `k3s agent` (every CLI flag as a YAML key, typed from the pinned release's
8
+ own flag definitions), and `registries.yaml` for the embedded containerd.
9
+ The emitted files are exactly what the native tool accepts.
10
+
11
+ The join token is deliberately not declarable: the surface carries only the
12
+ reference forms (`token-file`, `agent-token-file`), and K3S001/K3S101 fail
13
+ a literal that arrives anyway.
14
+
15
+ ## Getting started
16
+
17
+ ```bash
18
+ # Generate types from the pinned k3s release (v1.36.3+k3s1)
19
+ npm run generate
20
+
21
+ # Validate generated artifacts
22
+ npm run validate
23
+
24
+ # Tests (the Docker-gated acceptance test boots rancher/k3s on the emitted config)
25
+ npx vitest run lexicons/k3s
26
+ ```
27
+
28
+ ## Project structure
29
+
30
+ - `src/plugin.ts` — LexiconPlugin with all lifecycle methods
31
+ - `src/serializer.ts` — config.yaml / registries.yaml emitter
32
+ - `src/spec/fetch.ts` — pinned upstream sources (the CLI flag definitions)
33
+ - `src/codegen/parse.ts` — Go flag-definition parser
34
+ - `src/lint/` — K3S001 pre-synth rule, K3S101–K3S105 post-synth checks
35
+ - `src/lsp/` — completions and hover from the generated registry
36
+ - `src/generated/` — generated artifacts (do not edit)
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Generate documentation site for the k3s lexicon.
3
+ */
4
+ export declare function generateDocs(options?: {
5
+ verbose?: boolean;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/codegen/docs.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBjF"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export {};
3
+ //# sourceMappingURL=generate-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-cli.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Lexicon JSON generator — produces lexicon-k3s.json with metadata
3
+ * for all k3s entities.
4
+ */
5
+ import type { PropertyConstraints } from "@intentius/chant/codegen/json-schema";
6
+ import type { K3sParseResult } from "./parse.js";
7
+ import type { NamingStrategy } from "./naming.js";
8
+ export interface LexiconEntry {
9
+ resourceType: string;
10
+ kind: "resource" | "property";
11
+ lexicon: "k3s";
12
+ deprecatedProperties?: string[];
13
+ constraints?: Record<string, PropertyConstraints>;
14
+ }
15
+ /**
16
+ * Generate the lexicon-k3s.json content.
17
+ */
18
+ export declare function generateLexiconJSON(results: K3sParseResult[], naming: NamingStrategy): string;
19
+ //# sourceMappingURL=generate-lexicon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-lexicon.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-lexicon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAO/C,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CA+B7F"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * TypeScript declaration file generator — produces index.d.ts with all
3
+ * k3s entity classes.
4
+ */
5
+ import type { K3sParseResult } from "./parse.js";
6
+ import type { NamingStrategy } from "./naming.js";
7
+ /**
8
+ * Generate the complete .d.ts file content.
9
+ */
10
+ export declare function generateTypeScriptDeclarations(results: K3sParseResult[], naming: NamingStrategy): string;
11
+ //# sourceMappingURL=generate-typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-typescript.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-typescript.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAc/C;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,cAAc,EAAE,EACzB,MAAM,EAAE,cAAc,GACrB,MAAM,CAoCR"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * k3s generation pipeline — uses core generatePipeline with k3s-specific
3
+ * fetch, parse, naming, and generation callbacks.
4
+ */
5
+ import { type GenerateOptions, type GenerateResult } from "@intentius/chant/codegen/generate";
6
+ export type { GenerateResult };
7
+ /**
8
+ * Run the full k3s generation pipeline.
9
+ */
10
+ export declare function generate(opts?: GenerateOptions): Promise<GenerateResult>;
11
+ /**
12
+ * Write generated artifacts to disk.
13
+ */
14
+ export declare function writeGeneratedFiles(result: GenerateResult, pkgDir?: string): void;
15
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,mCAAmC,CAAC;AAc3C,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CA6ClF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAWjF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * k3s naming strategy — flat namespace, one short name per entity.
3
+ */
4
+ import { NamingStrategy as CoreNamingStrategy } from "@intentius/chant/codegen/naming";
5
+ import { type K3sParseResult } from "./parse.js";
6
+ export { propertyTypeName, extractDefName } from "@intentius/chant/codegen/naming";
7
+ /**
8
+ * k3s naming strategy.
9
+ */
10
+ export declare class NamingStrategy extends CoreNamingStrategy {
11
+ constructor(results: K3sParseResult[]);
12
+ }
13
+ //# sourceMappingURL=naming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../src/codegen/naming.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,IAAI,kBAAkB,EAGrC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAmBnF;;GAEG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;gBACxC,OAAO,EAAE,cAAc,EAAE;CAOtC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Package the k3s lexicon for distribution.
3
+ */
4
+ export declare function packageLexicon(options?: {
5
+ verbose?: boolean;
6
+ force?: boolean;
7
+ }): Promise<{
8
+ spec: import("packages/core/src").BundleSpec;
9
+ stats: {
10
+ resources: number;
11
+ properties: number;
12
+ enums: number;
13
+ ruleCount: number;
14
+ skillCount: number;
15
+ };
16
+ }>;
17
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/codegen/package.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;;;;;GAiBpF"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * k3s CLI flag-definition parser.
3
+ *
4
+ * The spec is the pinned Go source of pkg/cli/cmds (#1599): urfave/cli
5
+ * struct literals carrying Name, Usage, Value and Hidden. This parser
6
+ * extracts the server and agent flag lists, resolves shared flag-var
7
+ * references across the fetched files, and produces one entity per config
8
+ * document k3s consumes:
9
+ *
10
+ * K3s::Server — /etc/rancher/k3s/config.yaml for `k3s server`
11
+ * K3s::Agent — /etc/rancher/k3s/config.yaml for `k3s agent`
12
+ * K3s::Registries — /etc/rancher/k3s/registries.yaml
13
+ *
14
+ * registries.yaml has no flag surface; its shape is hand-typed from the
15
+ * documented structure (docs.k3s.io/installation/private-registry) and
16
+ * pinned by the same release constant.
17
+ *
18
+ * ## The token boundary (#1601)
19
+ *
20
+ * `token`, `agent-token` and the deprecated `cluster-secret` are excluded
21
+ * from the typed surface on purpose. A literal shared secret in an emitted
22
+ * config.yaml is the #1365 wall; the reference forms (`token-file`,
23
+ * `agent-token-file`, and the K3S_TOKEN/K3S_TOKEN_FILE env vars at install
24
+ * time) stay. K3SC001 catches a literal that arrives through a raw prop
25
+ * anyway.
26
+ */
27
+ import type { PropertyConstraints } from "@intentius/chant/codegen/json-schema";
28
+ export interface ParsedProperty {
29
+ name: string;
30
+ tsType: string;
31
+ required: boolean;
32
+ description?: string;
33
+ enum?: string[];
34
+ constraints: PropertyConstraints;
35
+ }
36
+ export interface ParsedPropertyType {
37
+ name: string;
38
+ defType: string;
39
+ properties: ParsedProperty[];
40
+ }
41
+ export interface ParsedResource {
42
+ typeName: string;
43
+ description?: string;
44
+ properties: ParsedProperty[];
45
+ attributes: Array<{
46
+ name: string;
47
+ tsType: string;
48
+ }>;
49
+ deprecatedProperties: string[];
50
+ }
51
+ export interface K3sParseResult {
52
+ resource: ParsedResource;
53
+ propertyTypes: ParsedPropertyType[];
54
+ enums: Array<{
55
+ name: string;
56
+ values: string[];
57
+ }>;
58
+ isProperty?: boolean;
59
+ warnings?: string[];
60
+ }
61
+ interface FlagDef {
62
+ varName?: string;
63
+ flagType: string;
64
+ name?: string;
65
+ usage?: string;
66
+ value?: string;
67
+ hidden: boolean;
68
+ }
69
+ /**
70
+ * Extract every `&cli.<T>Flag{...}` literal in a Go source text, keyed by
71
+ * the variable name it is assigned to when there is one.
72
+ */
73
+ export declare function extractFlagLiterals(text: string): {
74
+ byVar: Map<string, FlagDef>;
75
+ all: FlagDef[];
76
+ };
77
+ /**
78
+ * Extract the ordered item list of a `[]cli.Flag{...}` block starting at
79
+ * `startIndex` (the index of the opening brace + 1). Items are either
80
+ * bare identifiers (shared flag vars) or inline `&cli.*Flag{...}` literals.
81
+ */
82
+ export declare function extractFlagList(text: string, marker: string | RegExp): Array<string | FlagDef>;
83
+ /**
84
+ * Parse the fetched spec envelope (filename → Go source) into the k3s
85
+ * entity results.
86
+ */
87
+ export declare function parseSpecFiles(data: string | Buffer): K3sParseResult[];
88
+ /** Extract short name: "K3s::Server" → "Server" */
89
+ export declare function k3sShortName(typeName: string): string;
90
+ /** Extract service name: always "K3s" — the lexicon is a single flat service. */
91
+ export declare function k3sServiceName(_typeName: string): string;
92
+ export {};
93
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/codegen/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAIhF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAID,UAAU,OAAO;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAaD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,GAAG,EAAE,OAAO,EAAE,CAAA;CAAE,CAkBjG;AAsDD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAuB9F;AAkID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,EAAE,CAkDtE;AAID,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,8 @@
1
+ export declare const Agent: new (props: Record<string, unknown>, attributes?: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, string>;
2
+ export declare const Registries: new (props: Record<string, unknown>, attributes?: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, string>;
3
+ export declare const Server: new (props: Record<string, unknown>, attributes?: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, string>;
4
+ export declare const Mirror: new (props: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, unknown>;
5
+ export declare const RegistryAuth: new (props: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, unknown>;
6
+ export declare const RegistryConfig: new (props: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, unknown>;
7
+ export declare const RegistryTLS: new (props: Record<string, unknown>) => import("packages/core/src").Declarable & Record<string, unknown>;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,+IAA0C,CAAC;AAC7D,eAAO,MAAM,UAAU,+IAA+C,CAAC;AACvE,eAAO,MAAM,MAAM,+IAA2C,CAAC;AAE/D,eAAO,MAAM,MAAM,0GAAuC,CAAC;AAC3D,eAAO,MAAM,YAAY,0GAA6C,CAAC;AACvE,eAAO,MAAM,cAAc,0GAA+C,CAAC;AAC3E,eAAO,MAAM,WAAW,0GAA4C,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Runtime factory constructors — re-exported from core.
3
+ */
4
+ export { createResource, createProperty } from "@intentius/chant/runtime";
5
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/generated/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { k3sPlugin } from "./plugin.js";
2
+ export { k3sSerializer } from "./serializer.js";
3
+ export * from "./generated/index.js";
4
+ export { K3S_VERSION, K3S_IMAGE_TAG } from "./spec/fetch.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ {
2
+ "algorithm": "sha256",
3
+ "artifacts": {
4
+ "manifest.json": "5208bf3cb7308fcf74bcfae5cd70e1e4c73b0b567e71ac0f593246f1d72eaef2",
5
+ "meta.json": "5988c37e9e93d52828d34fa043b0804fec7eb833153d387a9711333bcdff4bff",
6
+ "types/index.d.ts": "98f3f3175d38aa2979c57577512c554eafed49b9125967c8617c137c01358e26",
7
+ "skills/chant-k3s.md": "05b322cae62541204bc737ae5e8aacdb689e0ebcc0b551844c907573ea62b945"
8
+ },
9
+ "composite": "ccdbd6b6b747df56c8d6c9db11cd2ee6ee5ddff042b9e8438a88a1f667a98db6"
10
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The k3s lexicon's chant audit catalog — metadata for its post-synth
3
+ * checks, contributed via k3sPlugin.auditCatalog() (#687, #1346). Every
4
+ * post-synth check has an entry, or the check contributes nothing to
5
+ * `chant audit`, silently.
6
+ *
7
+ * All five checks read the chant model (`ctx.entities`) rather than the
8
+ * emitted YAML — an emitted config.yaml carries no marker naming its own
9
+ * role — so every entry is constructed directly with `yamlBased: false`.
10
+ */
11
+ import type { RuleMeta } from "@intentius/chant/audit/catalog";
12
+ export declare const k3sAuditCatalog: Record<string, RuleMeta>;
13
+ //# sourceMappingURL=audit-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-catalog.d.ts","sourceRoot":"","sources":["../../src/lint/audit-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAW/D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA+BpD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
2
+ export declare const postSynthChecks: PostSynthCheck[];
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAOvE,eAAO,MAAM,eAAe,EAAE,cAAc,EAM3C,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Shared helpers for the k3s post-synth checks.
3
+ *
4
+ * These checks read the chant model (`ctx.entities`), not the emitted
5
+ * YAML: an emitted config.yaml carries no marker naming its own role, so
6
+ * the entity type is the only honest way to know a document is a server
7
+ * config, an agent config, or a registries file. The audit catalog marks
8
+ * every entity-based check `yamlBased: false` accordingly.
9
+ */
10
+ import type { PostSynthContext } from "@intentius/chant/lint/post-synth";
11
+ export interface K3sEntity {
12
+ name: string;
13
+ entityType: string;
14
+ props: Record<string, unknown>;
15
+ }
16
+ /** Every declared k3s entity of one type, with its props. */
17
+ export declare function entitiesOfType(ctx: PostSynthContext, entityType: string): K3sEntity[];
18
+ export declare function configEntities(ctx: PostSynthContext): K3sEntity[];
19
+ //# sourceMappingURL=k3s-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k3s-helpers.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/k3s-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,CAUrF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,EAAE,CAEjE"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * K3S101: a literal join token reached the build.
3
+ *
4
+ * The typed surface omits `token` / `agent-token` (#1601) and K3S001
5
+ * catches the literal at source. This is the backstop for the path both
6
+ * miss: a raw prop object built at runtime, spread in, or emitted by a
7
+ * composite. If the key is present with a non-empty string value in the
8
+ * entity the build serialized, the emitted config.yaml carries the
9
+ * cluster's join secret, and the build fails.
10
+ */
11
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
12
+ export declare const k3s101: PostSynthCheck;
13
+ //# sourceMappingURL=k3s101.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k3s101.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/k3s101.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,kCAAkC,CAAC;AAiB1C,eAAO,MAAM,MAAM,EAAE,cAyBpB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * K3S102: registry credentials as literals.
3
+ *
4
+ * registries.yaml supports inline `auth.password` / `auth.token`, and a
5
+ * committed estate that uses them has published its registry credentials.
6
+ * The TLS file paths beside them are host paths — those are fine; it is
7
+ * the credential values that must come from somewhere else.
8
+ */
9
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
10
+ export declare const k3s102: PostSynthCheck;
11
+ //# sourceMappingURL=k3s102.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k3s102.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/k3s102.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,kCAAkC,CAAC;AAG1C,eAAO,MAAM,MAAM,EAAE,cAgCpB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * K3S103: an agent that joins nothing.
3
+ *
4
+ * An agent config without `server` is a node with no cluster to join —
5
+ * `k3s agent` refuses to start without it (or K3S_URL in the service
6
+ * environment). Declaring the agent while leaving the join out of band
7
+ * defeats the declaration, so this asks for it in the config.
8
+ */
9
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
10
+ export declare const k3s103: PostSynthCheck;
11
+ //# sourceMappingURL=k3s103.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k3s103.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/k3s103.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,kCAAkC,CAAC;AAG1C,eAAO,MAAM,MAAM,EAAE,cAqBpB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * K3S104: kubeconfig written wider than 0644.
3
+ *
4
+ * `write-kubeconfig-mode` widens /etc/rancher/k3s/k3s.yaml — the file
5
+ * carrying the cluster's admin credential. k3s's own default is 0600;
6
+ * 0644 is the documented convenience for a single-user host. Anything
7
+ * granting write to group/other, or beyond read to other, hands the
8
+ * admin kubeconfig to every local account.
9
+ */
10
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
11
+ export declare const k3s104: PostSynthCheck;
12
+ //# sourceMappingURL=k3s104.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k3s104.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/k3s104.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,kCAAkC,CAAC;AAG1C,eAAO,MAAM,MAAM,EAAE,cA0BpB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * K3S105: a registry mirror that skips TLS verification.
3
+ *
4
+ * `insecure_skip_verify: true` in registries.yaml turns every image pull
5
+ * through that registry into an unauthenticated trust decision. Legitimate
6
+ * for a lab pull-through cache; worth a flag anywhere, because the estate
7
+ * that sets it for the lab keeps it when the registry moves.
8
+ */
9
+ import type { PostSynthCheck } from "@intentius/chant/lint/post-synth";
10
+ export declare const k3s105: PostSynthCheck;
11
+ //# sourceMappingURL=k3s105.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k3s105.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/k3s105.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,kCAAkC,CAAC;AAG1C,eAAO,MAAM,MAAM,EAAE,cA0BpB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { LintRule } from "@intentius/chant/lint/rule";
2
+ export { tokenLiteralRule } from "./token-literal.js";
3
+ /** All lint rules provided by this lexicon (imported by plugin.ts's lintRules()). */
4
+ export declare const rules: LintRule[];
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,qFAAqF;AACrF,eAAO,MAAM,KAAK,EAAE,QAAQ,EAAuB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { LintRule } from "@intentius/chant/lint/rule";
2
+ /**
3
+ * K3S001: literal join token in source.
4
+ *
5
+ * `token` / `agent-token` are the cluster's shared join secret, and a
6
+ * committed config declaration is exactly the file that leaks it. The
7
+ * typed surface deliberately carries only the reference forms
8
+ * (`token-file`, `agent-token-file` — #1601), but nothing stops a raw
9
+ * object literal from writing the key anyway; this rule does.
10
+ *
11
+ * Flags a non-empty string-literal `token` / `agent-token` (identifier or
12
+ * quoted) inside a `Server(...)` / `Agent(...)` construction, with or
13
+ * without `new`. A bare `token:` elsewhere in the file is someone else's
14
+ * business.
15
+ */
16
+ export declare const tokenLiteralRule: LintRule;
17
+ //# sourceMappingURL=token-literal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-literal.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/token-literal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,4BAA4B,CAAC;AAExF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAqE9B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { CompletionContext, CompletionItem } from "@intentius/chant/lsp/types";
2
+ /**
3
+ * Provide k3s completions based on context — Server, Agent, Registries and
4
+ * the registry property entities, from the generated registry.
5
+ */
6
+ export declare function completions(ctx: CompletionContext): CompletionItem[];
7
+ //# sourceMappingURL=completions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../../src/lsp/completions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAiBpF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc,EAAE,CAEpE"}
@@ -0,0 +1,6 @@
1
+ import type { HoverContext, HoverInfo } from "@intentius/chant/lsp/types";
2
+ /**
3
+ * Provide hover information for k3s entity types.
4
+ */
5
+ export declare function hover(ctx: HoverContext): HoverInfo | undefined;
6
+ //# sourceMappingURL=hover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../../src/lsp/hover.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAiB1E;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAE9D"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "k3s",
3
+ "version": "0.0.1",
4
+ "chantVersion": ">=0.1.0",
5
+ "namespace": "K3s"
6
+ }
package/dist/meta.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "Agent": {
3
+ "resourceType": "K3s::Agent",
4
+ "kind": "resource",
5
+ "lexicon": "k3s"
6
+ },
7
+ "Mirror": {
8
+ "resourceType": "K3s::Mirror",
9
+ "kind": "property",
10
+ "lexicon": "k3s"
11
+ },
12
+ "Registries": {
13
+ "resourceType": "K3s::Registries",
14
+ "kind": "resource",
15
+ "lexicon": "k3s"
16
+ },
17
+ "RegistryAuth": {
18
+ "resourceType": "K3s::RegistryAuth",
19
+ "kind": "property",
20
+ "lexicon": "k3s"
21
+ },
22
+ "RegistryConfig": {
23
+ "resourceType": "K3s::RegistryConfig",
24
+ "kind": "property",
25
+ "lexicon": "k3s"
26
+ },
27
+ "RegistryTLS": {
28
+ "resourceType": "K3s::RegistryTLS",
29
+ "kind": "property",
30
+ "lexicon": "k3s"
31
+ },
32
+ "Server": {
33
+ "resourceType": "K3s::Server",
34
+ "kind": "resource",
35
+ "lexicon": "k3s"
36
+ }
37
+ }
@@ -0,0 +1,9 @@
1
+ ---
2
+ okf_version: '0.2'
3
+ ---
4
+
5
+ # Resource types
6
+
7
+ * [Agent](/types/Agent.md) - K3s::Agent
8
+ * [Registries](/types/Registries.md) - K3s::Registries
9
+ * [Server](/types/Server.md) - K3s::Server
@@ -0,0 +1,55 @@
1
+ ---
2
+ type: resource-type
3
+ title: Agent
4
+ description: k3s resource type K3s::Agent
5
+ name: Agent
6
+ lexicon: k3s
7
+ resource_type: K3s::Agent
8
+ ---
9
+ `K3s::Agent`, a resource type of the k3s lexicon.
10
+
11
+ ## Properties
12
+
13
+ - `server` (`string`, required): (cluster) Server to connect to
14
+ - `alsologtostderr` (`boolean`, optional): (logging) Log to standard error as well as file (if set)
15
+ - `bind-address` (`string`, optional): (listener) bind address (default: 0.0.0.0)
16
+ - `container-runtime-endpoint` (`string`, optional): (agent/runtime) Disable embedded containerd and use the CRI socket at the given path; when used with --docker this sets the docker socket path
17
+ - `data-dir` (`string`, optional): (agent/data) Folder to hold state
18
+ - `debug` (`boolean`, optional): (logging) Turn on debug logs
19
+ - `default-runtime` (`string`, optional): (agent/runtime) Set the default runtime in containerd
20
+ - `disable-apiserver-lb` (`boolean`, optional): (agent/networking) (experimental) Disable the agent's client-side load-balancer and connect directly to the configured server address
21
+ - `disable-default-registry-endpoint` (`boolean`, optional): (agent/containerd) Disables containerd's fallback default registry endpoint when a mirror is configured for that registry
22
+ - `docker` (`boolean`, optional): (agent/runtime) (experimental) Use cri-dockerd instead of containerd
23
+ - `enable-pprof` (`boolean`, optional): (experimental) Enable pprof endpoint on supervisor port
24
+ - `flannel-cni-conf` (`string`, optional): (agent/networking) Override default flannel cni config file
25
+ - `flannel-conf` (`string`, optional): (agent/networking) Override default flannel config file
26
+ - `flannel-iface` (`string`, optional): (agent/networking) Override default flannel interface
27
+ - `image-credential-provider-bin-dir` (`string`, optional): (agent/node) The path to the directory where credential provider plugin binaries are located (default: /var/lib/rancher/credentialprovider/bin)
28
+ - `image-credential-provider-config` (`string`, optional): (agent/node) The path to the credential provider plugin config file (default: /var/lib/rancher/credentialprovider/config.yaml)
29
+ - `image-service-endpoint` (`string`, optional): (agent/runtime) Disable embedded containerd image service and use remote image service socket at the given path. If not specified, defaults to --container-runtime-endpoint.
30
+ - `kube-proxy-arg` (`string | string[]`, optional): (agent/flags) Customized flag for kube-proxy process
31
+ - `kubelet-arg` (`string | string[]`, optional): (agent/flags) Customized flag for kubelet process
32
+ - `lb-server-port` (`number`, optional): (agent/node) Local port for supervisor client load-balancer. If the supervisor and apiserver are not colocated an additional port 1 less than this port will also be used for the apiserver client load-balancer. (default: 6444)
33
+ - `log` (`string`, optional): (logging) Log to file
34
+ - `node-external-dns` (`string | string[]`, optional): (agent/networking) external DNS addresses to advertise for node
35
+ - `node-external-ip` (`string | string[]`, optional): (agent/networking) IPv4/IPv6 external IP addresses to advertise for node
36
+ - `node-internal-dns` (`string | string[]`, optional): (agent/networking) internal DNS addresses to advertise for node
37
+ - `node-ip` (`string | string[]`, optional): (agent/networking) IPv4/IPv6 addresses to advertise for node
38
+ - `node-label` (`string | string[]`, optional): (agent/node) Registering and starting kubelet with set of labels
39
+ - `node-name` (`string`, optional): (agent/node) Node name
40
+ - `node-taint` (`string | string[]`, optional): (agent/node) Registering kubelet with set of taints
41
+ - `nonroot-devices` (`boolean`, optional): (agent/containerd) Allows non-root pods to access devices by setting device_ownership_from_security_context=true in the containerd CRI config
42
+ - `pause-image` (`string`, optional): (agent/runtime) Customized pause image for containerd or docker sandbox (default: rancher/mirrored-pause:3.10.2)
43
+ - `prefer-bundled-bin` (`boolean`, optional): (experimental) Prefer bundled userspace binaries over host binaries
44
+ - `private-registry` (`string`, optional): (agent/runtime) Private registry configuration file
45
+ - `protect-kernel-defaults` (`boolean`, optional): (agent/node) Kernel tuning behavior. If set, error if kernel tunables are different than kubelet defaults.
46
+ - `resolv-conf` (`string`, optional): (agent/networking) Kubelet resolv.conf file
47
+ - `rootless` (`boolean`, optional): (experimental) Run rootless
48
+ - `selinux` (`boolean`, optional): (agent/node) Enable SELinux in containerd
49
+ - `snapshotter` (`string`, optional): (agent/runtime) Override default containerd snapshotter
50
+ - `token-file` (`string`, optional): (cluster) Token file to use for authentication
51
+ - `v` (`number`, optional): (logging) Number for the log level verbosity
52
+ - `vmodule` (`string`, optional): (logging) Comma-separated list of FILE_PATTERN=LOG_LEVEL settings for file-filtered logging
53
+ - `vpn-auth` (`string`, optional): (agent/networking) (experimental) Credentials for the VPN provider. It must include the provider name and join key in the format name=<vpn-provider>,joinKey=<key>[,controlServerURL=<url>][,extraArgs=<args>]
54
+ - `vpn-auth-file` (`string`, optional): (agent/networking) (experimental) File containing credentials for the VPN provider. It must include the provider name and join key in the format name=<vpn-provider>,joinKey=<key>[,controlServerURL=<url>][,extraArgs=<args>]
55
+ - `with-node-id` (`boolean`, optional): (agent/node) Append id to node name