@camunda8/cli 2.8.0-alpha.9 → 3.0.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.
Files changed (88) hide show
  1. package/EXAMPLES.md +22 -5
  2. package/PLUGIN-HELP.md +26 -0
  3. package/README.md +37 -4
  4. package/dist/command-dispatch.d.ts.map +1 -1
  5. package/dist/command-dispatch.js +2 -1
  6. package/dist/command-dispatch.js.map +1 -1
  7. package/dist/command-registry.d.ts +30 -0
  8. package/dist/command-registry.d.ts.map +1 -1
  9. package/dist/command-registry.js +34 -1
  10. package/dist/command-registry.js.map +1 -1
  11. package/dist/commands/plugins.d.ts +21 -0
  12. package/dist/commands/plugins.d.ts.map +1 -1
  13. package/dist/commands/plugins.js +74 -1
  14. package/dist/commands/plugins.js.map +1 -1
  15. package/dist/commands/resource-extensions.d.ts +12 -0
  16. package/dist/commands/resource-extensions.d.ts.map +1 -1
  17. package/dist/commands/resource-extensions.js +13 -1
  18. package/dist/commands/resource-extensions.js.map +1 -1
  19. package/dist/commands/run.d.ts.map +1 -1
  20. package/dist/commands/run.js +5 -3
  21. package/dist/commands/run.js.map +1 -1
  22. package/dist/commands/watch.d.ts.map +1 -1
  23. package/dist/commands/watch.js +21 -12
  24. package/dist/commands/watch.js.map +1 -1
  25. package/dist/completion.d.ts.map +1 -1
  26. package/dist/completion.js +140 -13
  27. package/dist/completion.js.map +1 -1
  28. package/dist/default-plugins/bpmn/README.md +69 -0
  29. package/dist/default-plugins/bpmn/c8ctl-plugin.js +125 -0
  30. package/dist/default-plugins/bpmn/c8ctl-plugin.js.map +1 -0
  31. package/dist/default-plugins/bpmn/lint.js +259 -0
  32. package/dist/default-plugins/bpmn/lint.js.map +1 -0
  33. package/dist/default-plugins/bpmn/package.json +8 -0
  34. package/dist/default-plugins/cluster/package.json +1 -1
  35. package/dist/default-plugins/element-template/AGENTS.md +65 -0
  36. package/dist/default-plugins/element-template/README.md +331 -0
  37. package/dist/default-plugins/element-template/c8ctl-plugin.js +247 -0
  38. package/dist/default-plugins/element-template/c8ctl-plugin.js.map +1 -0
  39. package/dist/default-plugins/element-template/commands/apply.js +298 -0
  40. package/dist/default-plugins/element-template/commands/apply.js.map +1 -0
  41. package/dist/default-plugins/element-template/commands/get-properties.js +344 -0
  42. package/dist/default-plugins/element-template/commands/get-properties.js.map +1 -0
  43. package/dist/default-plugins/element-template/commands/get.js +107 -0
  44. package/dist/default-plugins/element-template/commands/get.js.map +1 -0
  45. package/dist/default-plugins/element-template/commands/info.js +189 -0
  46. package/dist/default-plugins/element-template/commands/info.js.map +1 -0
  47. package/dist/default-plugins/element-template/commands/search.js +101 -0
  48. package/dist/default-plugins/element-template/commands/search.js.map +1 -0
  49. package/dist/default-plugins/element-template/commands/sync.js +36 -0
  50. package/dist/default-plugins/element-template/commands/sync.js.map +1 -0
  51. package/dist/default-plugins/element-template/docs/design.md +145 -0
  52. package/dist/default-plugins/element-template/helpers.js +404 -0
  53. package/dist/default-plugins/element-template/helpers.js.map +1 -0
  54. package/dist/default-plugins/element-template/marketplace.js +396 -0
  55. package/dist/default-plugins/element-template/marketplace.js.map +1 -0
  56. package/dist/default-plugins/element-template/package.json +8 -0
  57. package/dist/default-plugins/element-template/template-ref.js +232 -0
  58. package/dist/default-plugins/element-template/template-ref.js.map +1 -0
  59. package/dist/default-plugins/element-template/vendor-src/bundle-entry.js +44 -0
  60. package/dist/default-plugins/feel/README.md +163 -0
  61. package/dist/default-plugins/feel/c8ctl-plugin.js +616 -0
  62. package/dist/default-plugins/feel/c8ctl-plugin.js.map +1 -0
  63. package/dist/default-plugins/feel/package.json +8 -0
  64. package/dist/deployments.d.ts +1 -0
  65. package/dist/deployments.d.ts.map +1 -1
  66. package/dist/deployments.js +89 -20
  67. package/dist/deployments.js.map +1 -1
  68. package/dist/help.d.ts.map +1 -1
  69. package/dist/help.js +156 -5
  70. package/dist/help.js.map +1 -1
  71. package/dist/ignore.d.ts +16 -1
  72. package/dist/ignore.d.ts.map +1 -1
  73. package/dist/ignore.js +55 -3
  74. package/dist/ignore.js.map +1 -1
  75. package/dist/index.d.ts +23 -0
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +294 -25
  78. package/dist/index.js.map +1 -1
  79. package/dist/plugin-loader.d.ts +168 -7
  80. package/dist/plugin-loader.d.ts.map +1 -1
  81. package/dist/plugin-loader.js +284 -21
  82. package/dist/plugin-loader.js.map +1 -1
  83. package/dist/runtime.d.ts +10 -0
  84. package/dist/runtime.d.ts.map +1 -1
  85. package/dist/runtime.js +6 -0
  86. package/dist/runtime.js.map +1 -1
  87. package/dist/vendor/bpmn-element-templates.cjs +59639 -0
  88. package/package.json +20 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-properties.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/get-properties.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * `c8ctl element-template get` — print the raw template JSON to stdout
3
+ * (pipe-friendly).
4
+ *
5
+ * For local paths and URLs we pass the source bytes through unchanged (no
6
+ * parse/stringify round-trip — preserves whitespace, key order, trailing
7
+ * newline). For OOTB ids we don't have the upstream bytes, so we
8
+ * serialize the cached object with a 2-space indent. Designed for shell
9
+ * redirection:
10
+ *
11
+ * c8ctl element-template get <id> > template.json
12
+ *
13
+ * No trailing hints or colored output — they would corrupt the piped
14
+ * payload.
15
+ */
16
+ import { parseTemplateJson, readFileOrUrl } from "../helpers.js";
17
+ import { loadCache } from "../marketplace.js";
18
+ import { parseTemplateRef, resolveOotbTemplate } from "../template-ref.js";
19
+ export async function getSubcommand(args) {
20
+ const usage = "Usage: c8ctl element-template get <template> [--no-icon]";
21
+ let templateArg;
22
+ let noIcon = false;
23
+ for (let i = 0; i < args.length; i++) {
24
+ const arg = args[i];
25
+ if (arg === "--") {
26
+ // All tokens after `--` are literal positionals — not flags.
27
+ for (const rest of args.slice(i + 1)) {
28
+ if (templateArg === undefined) {
29
+ templateArg = rest;
30
+ }
31
+ else {
32
+ throw new Error(`Unexpected argument: ${rest}. ${usage}`);
33
+ }
34
+ }
35
+ break;
36
+ }
37
+ if (arg === "--no-icon") {
38
+ noIcon = true;
39
+ continue;
40
+ }
41
+ if (arg.startsWith("-")) {
42
+ throw new Error(`Unknown flag: ${arg}. ${usage}`);
43
+ }
44
+ if (templateArg === undefined) {
45
+ templateArg = arg;
46
+ continue;
47
+ }
48
+ throw new Error(`Unexpected argument: ${arg}. ${usage}`);
49
+ }
50
+ if (!templateArg) {
51
+ throw new Error(`Missing template argument. ${usage}`);
52
+ }
53
+ const ref = parseTemplateRef(templateArg);
54
+ if (!ref) {
55
+ throw new Error(`Missing template argument. ${usage}`);
56
+ }
57
+ if (ref.kind === "path" || ref.kind === "url") {
58
+ const content = await readFileOrUrl(ref.value);
59
+ // Pass-through preserves whitespace + key order — but --no-icon
60
+ // requires a parse/strip/re-stringify round-trip, which loses
61
+ // that. The user is opting in to the rewrite by asking for it.
62
+ if (noIcon) {
63
+ const template = parseTemplateJson(content);
64
+ const stripped = stripIcon(template);
65
+ process.stdout.write(`${JSON.stringify(stripped, null, 2)}\n`);
66
+ return;
67
+ }
68
+ process.stdout.write(content);
69
+ return;
70
+ }
71
+ // OOTB id: no upstream bytes available — stringify the cached object.
72
+ // We deliberately do NOT auto-bootstrap here: the bootstrap log lines
73
+ // would interleave with the JSON payload on stdout and corrupt any
74
+ // shell redirect (`> template.json`). Surface the missing-cache case
75
+ // as an explicit error pointing at `sync`.
76
+ if (loadCache() === null) {
77
+ throw new Error("Element template cache not found. Run 'c8ctl element-template sync' first.");
78
+ }
79
+ const template = await resolveOotbTemplate(ref);
80
+ // The cache injects `metadata.upstreamRef` (our internal pointer for
81
+ // incremental sync); strip it so the output matches what you'd get
82
+ // from the marketplace, not c8ctl's cache shape.
83
+ let cleaned = stripInternalMetadata(template);
84
+ if (noIcon) {
85
+ cleaned = stripIcon(cleaned);
86
+ }
87
+ process.stdout.write(`${JSON.stringify(cleaned, null, 2)}\n`);
88
+ }
89
+ function stripInternalMetadata(template) {
90
+ if (!template.metadata?.upstreamRef) {
91
+ return template;
92
+ }
93
+ const { metadata, ...rest } = template;
94
+ const { upstreamRef: _ignored, ...metaRest } = metadata;
95
+ if (Object.keys(metaRest).length === 0) {
96
+ return { ...rest, properties: template.properties };
97
+ }
98
+ return { ...rest, properties: template.properties, metadata: metaRest };
99
+ }
100
+ function stripIcon(template) {
101
+ if (!template.icon) {
102
+ return template;
103
+ }
104
+ const { icon: _icon, ...rest } = template;
105
+ return { ...rest, properties: template.properties };
106
+ }
107
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * `c8ctl element-template info` — show a keyed card of template-level
3
+ * metadata.
4
+ *
5
+ * Also hosts the shared inspect-arg parser (used by `info` and
6
+ * `get-properties`), the template-header renderer (used by `info` and
7
+ * `search`), and the generic keyed-card layout used by both header and
8
+ * property-detail cards.
9
+ */
10
+ import { styleText } from "node:util";
11
+ import { loadTemplate } from "../template-ref.js";
12
+ if (!globalThis.c8ctl)
13
+ throw new Error("c8ctl runtime not initialised");
14
+ const c8ctl = globalThis.c8ctl;
15
+ /**
16
+ * Parse the shared inspect args: `<template> [<name>...] [--group <id>...]`.
17
+ * `--group` is repeatable. Comma-separated values are NOT split — pass
18
+ * `--group a --group b` for multiple ids.
19
+ */
20
+ export function parseInspectArgs(args, usage, { allowPropertyNames, allowFilters, }) {
21
+ let templateArg;
22
+ const propertyArgs = [];
23
+ const groups = [];
24
+ let detailed = false;
25
+ let afterDoubleDash = false;
26
+ for (let i = 0; i < args.length; i++) {
27
+ const arg = args[i];
28
+ if (!afterDoubleDash && arg === "--") {
29
+ afterDoubleDash = true;
30
+ continue;
31
+ }
32
+ if (!afterDoubleDash && (arg === "--group" || arg.startsWith("--group="))) {
33
+ if (!allowFilters) {
34
+ throw new Error(`Unknown flag: --group. ${usage}`);
35
+ }
36
+ const value = arg === "--group" ? args[++i] : arg.slice("--group=".length);
37
+ if (value === undefined || value === "") {
38
+ throw new Error(`--group requires a value (group id). ${usage}`);
39
+ }
40
+ groups.push(value);
41
+ continue;
42
+ }
43
+ if (!afterDoubleDash && (arg === "--detailed" || arg === "-d")) {
44
+ if (!allowFilters) {
45
+ throw new Error(`Unknown flag: ${arg}. ${usage}`);
46
+ }
47
+ detailed = true;
48
+ continue;
49
+ }
50
+ if (!afterDoubleDash && arg.startsWith("-")) {
51
+ throw new Error(`Unknown flag: ${arg}. ${usage}`);
52
+ }
53
+ if (templateArg === undefined) {
54
+ templateArg = arg;
55
+ continue;
56
+ }
57
+ if (!allowPropertyNames) {
58
+ throw new Error(`Unexpected argument: ${arg}. ${usage}`);
59
+ }
60
+ propertyArgs.push(arg);
61
+ }
62
+ if (!templateArg) {
63
+ throw new Error(`Missing template argument. ${usage}`);
64
+ }
65
+ return { templateArg, propertyArgs, groups, detailed };
66
+ }
67
+ /**
68
+ * Project a template into the JSON summary shape — only the fields
69
+ * the text output surfaces (name/id/version, description, applies-to,
70
+ * engines, docs link), but using the element-templates JSON schema's
71
+ * own field names. No invented derivations; no full-template dump.
72
+ */
73
+ export function buildTemplateSummary(template) {
74
+ return {
75
+ name: template.name,
76
+ id: template.id,
77
+ version: template.version,
78
+ description: template.description,
79
+ documentationRef: template.documentationRef,
80
+ appliesTo: template.appliesTo,
81
+ elementType: template.elementType,
82
+ engines: template.engines,
83
+ };
84
+ }
85
+ /**
86
+ * Render template-level metadata as a keyed card.
87
+ */
88
+ export function formatTemplateHeaderLines(template, fallbackName, { autoResolvedVersion = false } = {}) {
89
+ const fields = [];
90
+ if (template.id) {
91
+ fields.push(["ID", template.id]);
92
+ }
93
+ if (template.version !== undefined) {
94
+ const versionCell = autoResolvedVersion
95
+ ? `${template.version} ${styleText("dim", "(latest; @<n> to pin)")}`
96
+ : String(template.version);
97
+ fields.push(["Version", versionCell]);
98
+ }
99
+ const appliesValue = formatAppliesToValue(template);
100
+ if (appliesValue) {
101
+ fields.push(["Applies to", appliesValue]);
102
+ }
103
+ if (template.engines?.camunda) {
104
+ fields.push(["Engines", template.engines.camunda]);
105
+ }
106
+ if (template.description) {
107
+ fields.push(["Description", template.description]);
108
+ }
109
+ if (template.documentationRef) {
110
+ fields.push(["Docs", styleText("dim", template.documentationRef)]);
111
+ }
112
+ return formatKeyedCard({
113
+ title: template.name ?? fallbackName ?? "Template",
114
+ fields,
115
+ });
116
+ }
117
+ /**
118
+ * Resolve `appliesTo` and `elementType.value` into a single value cell.
119
+ */
120
+ export function formatAppliesToValue(template) {
121
+ const applies = Array.isArray(template.appliesTo)
122
+ ? template.appliesTo.filter((v) => Boolean(v))
123
+ : [];
124
+ const elementType = template.elementType?.value;
125
+ if (applies.length === 0 && !elementType) {
126
+ return null;
127
+ }
128
+ const left = applies.length === 0
129
+ ? null
130
+ : applies.length === 1
131
+ ? applies[0]
132
+ : applies.length === 2
133
+ ? applies.join(" or ")
134
+ : `${applies.slice(0, -1).join(", ")}, or ${applies[applies.length - 1]}`;
135
+ if (left && elementType && !applies.includes(elementType)) {
136
+ return `${left} → ${elementType}`;
137
+ }
138
+ if (left) {
139
+ return left;
140
+ }
141
+ return elementType ?? null;
142
+ }
143
+ /**
144
+ * Generic keyed-card renderer used by both the template header and the
145
+ * property detail card.
146
+ */
147
+ export function formatKeyedCard({ title, subtitle, fields, }) {
148
+ const lines = [];
149
+ const titleParts = [styleText("bold", title)];
150
+ if (subtitle) {
151
+ titleParts.push(styleText("dim", subtitle));
152
+ }
153
+ lines.push(titleParts.join(" "));
154
+ if (fields.length === 0) {
155
+ return lines;
156
+ }
157
+ const keyWidth = Math.max(0, ...fields.map(([k]) => k.length));
158
+ for (const [key, value] of fields) {
159
+ const paddedKey = key.padEnd(keyWidth);
160
+ const styledKey = key ? styleText("dim", paddedKey) : paddedKey;
161
+ lines.push(` ${styledKey} ${value}`);
162
+ }
163
+ return lines;
164
+ }
165
+ export async function infoSubcommand(args) {
166
+ const logger = c8ctl.getLogger();
167
+ const usage = "Usage: c8ctl element-template info <template>";
168
+ const parsed = parseInspectArgs(args, usage, {
169
+ allowPropertyNames: false,
170
+ allowFilters: false,
171
+ });
172
+ const { template, autoResolvedVersion } = await loadTemplate(parsed.templateArg);
173
+ if (c8ctl.outputMode === "json") {
174
+ logger.json(buildTemplateSummary(template));
175
+ return;
176
+ }
177
+ // Template metadata card. The version row carries a dim parenthetical
178
+ // when the version was auto-resolved from an OOTB id.
179
+ for (const line of formatTemplateHeaderLines(template, parsed.templateArg, {
180
+ autoResolvedVersion,
181
+ })) {
182
+ logger.output(line);
183
+ }
184
+ logger.output("");
185
+ // Trailing hint — point at get-properties for the property listing.
186
+ logger.output(styleText("dim", "For settable properties, run:\n" +
187
+ ` c8ctl element-template get-properties ${parsed.templateArg}`));
188
+ }
189
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * `c8ctl element-template search` — search the local cache of OOTB
3
+ * element templates by name/id, with auto-bootstrap on first run.
4
+ */
5
+ import { styleText } from "node:util";
6
+ import { bootstrapIfNeeded, nudgeIfStale, searchTemplates, } from "../marketplace.js";
7
+ import { buildTemplateSummary, formatTemplateHeaderLines } from "./info.js";
8
+ if (!globalThis.c8ctl)
9
+ throw new Error("c8ctl runtime not initialised");
10
+ const c8ctl = globalThis.c8ctl;
11
+ export async function searchSubcommand(args) {
12
+ const logger = c8ctl.getLogger();
13
+ const usage = "Usage: c8ctl element-template search <query> [--limit N]";
14
+ // Default cap that covers the common "AWS"-shaped query without
15
+ // dumping the whole catalogue. Pass --limit to widen.
16
+ const DEFAULT_LIMIT = 20;
17
+ let limit = DEFAULT_LIMIT;
18
+ const queryParts = [];
19
+ for (let i = 0; i < args.length; i++) {
20
+ const arg = args[i];
21
+ if (arg === "--") {
22
+ queryParts.push(...args.slice(i + 1));
23
+ break;
24
+ }
25
+ if (arg === "--limit" || arg.startsWith("--limit=")) {
26
+ const value = arg === "--limit" ? args[++i] : arg.slice("--limit=".length);
27
+ if (value === undefined || value === "") {
28
+ throw new Error(`--limit requires a value (positive integer). ${usage}`);
29
+ }
30
+ const parsed = Number(value);
31
+ if (!Number.isInteger(parsed) || parsed < 1) {
32
+ throw new Error(`--limit must be a positive integer; got "${value}". ${usage}`);
33
+ }
34
+ limit = parsed;
35
+ continue;
36
+ }
37
+ if (arg.startsWith("-")) {
38
+ throw new Error(`Unknown flag: ${arg}. ${usage}`);
39
+ }
40
+ queryParts.push(arg);
41
+ }
42
+ const query = queryParts.join(" ").trim();
43
+ if (!query) {
44
+ throw new Error(`Missing query. ${usage}`);
45
+ }
46
+ await bootstrapIfNeeded({ logger });
47
+ nudgeIfStale(logger);
48
+ // Deprecated filtering and per-id latest-version reduction are done
49
+ // inside searchTemplates() so the latest non-deprecated version of a
50
+ // connector is still returned when its newest version is deprecated.
51
+ const allMatches = searchTemplates(query);
52
+ const total = allMatches.length;
53
+ const limited = allMatches.slice(0, limit);
54
+ const truncated = total > limited.length;
55
+ if (c8ctl.outputMode === "json") {
56
+ // JSON consumers see `count` (post-limit) and `total` (pre-limit).
57
+ // `count !== total` is the explicit truncation signal — no need to
58
+ // inspect a separate field.
59
+ logger.json({
60
+ query,
61
+ count: limited.length,
62
+ total,
63
+ matches: limited.map(buildTemplateSummary),
64
+ });
65
+ return;
66
+ }
67
+ if (total === 0) {
68
+ logger.output(`No element templates match '${query}'.`);
69
+ logger.output("");
70
+ logger.output(styleText("dim", "Try a broader query, or run 'c8ctl element-template sync' to refresh the cache."));
71
+ return;
72
+ }
73
+ // Header — when truncated, lead with "Showing X of Y" so the elision
74
+ // is visible on the first line; otherwise the plain count is enough.
75
+ // Dim because it's meta-info above the result cards, matching how
76
+ // get-properties styles its "Showing X of Y properties" line.
77
+ const matchWord = total === 1 ? "match" : "matches";
78
+ logger.output(styleText("dim", truncated
79
+ ? `Showing ${limited.length} of ${total} ${matchWord} for '${query}'`
80
+ : `${total} ${matchWord} for '${query}'`));
81
+ logger.output("");
82
+ for (let i = 0; i < limited.length; i++) {
83
+ const t = limited[i];
84
+ for (const line of formatTemplateHeaderLines(t, t.id)) {
85
+ logger.output(line);
86
+ }
87
+ if (i < limited.length - 1) {
88
+ logger.output("");
89
+ }
90
+ }
91
+ // Trailing hint.
92
+ logger.output("");
93
+ if (truncated) {
94
+ logger.output(styleText("dim", `Refine the query or pass --limit ${total} to see them all.`));
95
+ logger.output("");
96
+ }
97
+ const exampleId = limited[0]?.id ?? "<id>";
98
+ logger.output(styleText("dim", "For details on a template:\n" +
99
+ ` c8ctl element-template info ${exampleId}`));
100
+ }
101
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * `c8ctl element-template sync` — refresh the local OOTB element template
3
+ * cache from the marketplace.
4
+ */
5
+ import { syncTemplates } from "../marketplace.js";
6
+ if (!globalThis.c8ctl)
7
+ throw new Error("c8ctl runtime not initialised");
8
+ const c8ctl = globalThis.c8ctl;
9
+ export async function syncSubcommand(args) {
10
+ const logger = c8ctl.getLogger();
11
+ let prune = false;
12
+ for (let i = 0; i < args.length; i++) {
13
+ const arg = args[i];
14
+ if (arg === "--prune") {
15
+ prune = true;
16
+ continue;
17
+ }
18
+ if (arg === "--") {
19
+ // No positional args expected — reject anything after `--`.
20
+ const rest = args.slice(i + 1);
21
+ if (rest.length > 0) {
22
+ throw new Error(`Unexpected argument: ${rest[0]}. Usage: c8ctl element-template sync [--prune]`);
23
+ }
24
+ break;
25
+ }
26
+ if (arg.startsWith("-")) {
27
+ throw new Error(`Unknown flag: ${arg}. Usage: c8ctl element-template sync [--prune]`);
28
+ }
29
+ throw new Error(`Unexpected argument: ${arg}. Usage: c8ctl element-template sync [--prune]`);
30
+ }
31
+ const summary = await syncTemplates({ logger, prune });
32
+ if (c8ctl.outputMode === "json") {
33
+ logger.json(summary);
34
+ }
35
+ }
36
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../default-plugins/element-template/commands/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,IAAI,CAAC,UAAU,CAAC,KAAK;IAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACxE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IACjC,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvB,KAAK,GAAG,IAAI,CAAC;YACb,SAAS;QACV,CAAC;QACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,4DAA4D;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACd,wBAAwB,IAAI,CAAC,CAAC,CAAC,gDAAgD,CAC/E,CAAC;YACH,CAAC;YACD,MAAM;QACP,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACd,iBAAiB,GAAG,gDAAgD,CACpE,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CACd,wBAAwB,GAAG,gDAAgD,CAC3E,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvD,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
@@ -0,0 +1,145 @@
1
+ # `element-template` plugin design
2
+
3
+ Lives at `default-plugins/element-template/`. Applies Camunda element
4
+ templates to BPMN elements and inspects their settable properties — for
5
+ local files, arbitrary URLs, and out-of-the-box (OOTB) connector
6
+ templates resolved by id.
7
+
8
+ ## Vendor bundle for `bpmn-js-element-templates`
9
+
10
+ `apply` runs the same `Modeler` + `CloudElementTemplatesCoreModule` +
11
+ `ZeebeModdleExtension` stack as the Web/Desktop Modeler. Those upstream
12
+ libraries publish ESM with extensionless internal imports
13
+ (`import './foo'`), which Node refuses to resolve without a bundler.
14
+
15
+ Workaround: `default-plugins/element-template/vendor-src/bundle-entry.js`
16
+ re-exports the three modules; `npm run build:vendor` esbuilds it into
17
+ `dist/vendor/bpmn-element-templates.cjs`. The plugin loads it via
18
+ `createRequire(import.meta.url)`.
19
+
20
+ `resolveVendorBundle()` checks dev (`../../dist/vendor/...`) and prod
21
+ (`../../vendor/...`) paths because `dist/default-plugins/...` is the
22
+ shipped layout but during development we run directly from
23
+ `default-plugins/...`.
24
+
25
+ ## OOTB template integration
26
+
27
+ Three sources publish the OOTB connector templates:
28
+
29
+ | | Source-of-truth | Inlines templates? | Has all versions? | Used by |
30
+ |---|---|---|---|---|
31
+ | `marketplace.cloud.camunda.io/api/v1/ootb-connectors` | mirrors GH | no, URL refs | yes | Desktop Modeler |
32
+ | `github.com/camunda/connectors/connector-templates.json` | yes | no, URL refs | yes | (the marketplace) |
33
+ | `@camunda/connectors-element-templates` (npm) | derived | yes (~9MB) | yes, may lag | (Web Modeler skill) |
34
+
35
+ We chose the **marketplace endpoint** for parity with Desktop Modeler:
36
+
37
+ - Desktop Modeler is released and deployed widely; the endpoint contract
38
+ is effectively stable.
39
+ - The endpoint already proxies the GH source-of-truth; using it means
40
+ we benefit from any future server-side filtering/versioning the
41
+ marketplace adds.
42
+ - npm package was rejected: confirmed lag against the GH source and
43
+ some entries are missing `version`/`engines` (pre-versioned legacy
44
+ templates).
45
+ - GH directly was rejected because the marketplace gives us the same
46
+ content with one less reason to drift from Modeler's behavior.
47
+
48
+ The endpoint is overridable via `C8CTL_OOTB_ELEMENT_TEMPLATES_URL`
49
+ (useful for testing).
50
+
51
+ ## Cache strategy
52
+
53
+ We mirror Desktop Modeler's approach
54
+ (`camunda-modeler/app/lib/template-updater/`):
55
+
56
+ - Cache lives in `<userDataDir>/element-templates/`:
57
+ - `templates.json` — flat array of all template objects (matches
58
+ Modeler's `.camunda-connector-templates.json` shape).
59
+ - `fetched-at` — epoch ms of last index sync.
60
+ - Each cached template gets `metadata.upstreamRef = <ref-url>` injected.
61
+ Since each `ref` is a commit-pinned `raw.githubusercontent.com` URL,
62
+ "upstreamRef unchanged" ⇒ "content unchanged" ⇒ no re-fetch needed.
63
+ Subsequent syncs only fetch refs that aren't already in the cache.
64
+ - Per-template fetch failures are logged + counted, never abort the run.
65
+
66
+ ### Lifecycle
67
+
68
+ - **First time the index is needed** (search, sync, or
69
+ `apply`/`get-properties`/`info` with an `<id>` arg): bootstrap
70
+ auto-runs — full fetch, ~459 templates, visible per-template
71
+ progress. `get` deliberately does NOT bootstrap (its progress
72
+ logs would corrupt `get <id> > template.json` redirects).
73
+ - **Local file or URL paths** for `apply`/`get-properties`/`info`:
74
+ never trigger bootstrap. The plugin classifies the template arg
75
+ before touching the cache.
76
+ - **Stale cache** (>7 days since `fetched-at`): warn-only, suggesting
77
+ `c8ctl element-template sync`. We don't auto-refresh — surprise
78
+ network activity inside `apply` is undesirable and the index is
79
+ small enough that manual sync is cheap.
80
+ - **`sync`** always re-fetches the index but skips already-cached
81
+ refs. **`sync --prune`** drops cached entries no longer in the
82
+ fresh index (opt-in: a user may keep a legacy version intentionally).
83
+ - **First-run + offline**: hard-fail with a clear message. No bundled
84
+ fallback.
85
+
86
+ ### Why not lazy per-template fetch on apply?
87
+
88
+ Earlier draft considered fetching only the requested `(id, version)`
89
+ on demand. Rejected because **search needs the template names**, which
90
+ live inside the template files (the index has only `id`/`version`/`ref`).
91
+ Eager bulk fetch makes search instant; the ~14 MB / ~30 s first-run
92
+ cost is acceptable, and incremental syncs are cheap.
93
+
94
+ ## Version resolution
95
+
96
+ `apply` and `get-properties` accept three template-arg shapes:
97
+
98
+ | Shape | Detection | Resolution |
99
+ |---|---|---|
100
+ | `https://...` | starts with `http(s)://` | fetched directly, no cache |
101
+ | local path | contains `/`/`\`, starts with `.`, or ends with `.json` | read from disk |
102
+ | `<id>` or `<id>@<version>` | otherwise | resolved against cache |
103
+
104
+ For `<id>` (no `@<version>`):
105
+
106
+ - `apply` parses the BPMN file's `modeler:executionPlatformVersion`
107
+ attribute via bpmn-moddle (the same moddle instance used for the main
108
+ parse), then picks the highest cached version where
109
+ `semver.satisfies(coerce(executionPlatformVersion), engines.camunda)`
110
+ is true. Templates without `engines.camunda` are treated as
111
+ compatible (legacy fallback).
112
+ - `get-properties` has no BPMN context, so it picks the latest version
113
+ and warns the user to pin with `id@<n>` if they want a specific one
114
+ (same annotation as `info`).
115
+
116
+ Errors include the available versions to make the next step obvious:
117
+
118
+ ```
119
+ Failed to element-template apply: Element template 'io.camunda.connectors.aws.s3.v1' has no version 99. Available: 1, 2.
120
+ ```
121
+
122
+ ## Search
123
+
124
+ Substring case-insensitive match on `name`, `description`, `id`, and `keywords`
125
+ (matches Modeler's discovery path, plus `id` for CLI users who already know roughly
126
+ what they want). Deprecated versions are filtered out before the per-id
127
+ latest-version reduction, so the latest non-deprecated version of a connector
128
+ surfaces even when its newest version is deprecated. Output is a flat sequence
129
+ of template cards (no grouping by category).
130
+
131
+ ## Plugin dependencies
132
+
133
+ `semver` is a root dep (added in this work) imported directly. Walking up from the plugin
134
+ file finds the root `node_modules`. Plugin-local deps would also work
135
+ but the pattern matches how `bpmn-moddle`/`bpmnlint` are consumed
136
+ across plugins.
137
+
138
+ ## Plugin runtime extension
139
+
140
+ Plugins previously had to duplicate the cross-platform user-data-dir
141
+ logic from `src/config.ts`. We added `getUserDataDir()` to
142
+ `C8ctlPluginRuntime` and wired it through `C8ctlDeps.init()` so the
143
+ plugin can ask the runtime for the path (and pick up the
144
+ `C8CTL_DATA_DIR` override) without re-implementing the platform
145
+ branches.