primitive-admin 1.2.0-alpha.5 → 1.2.0-alpha.6

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.
@@ -1,7 +1,6 @@
1
1
  import { ApiClient } from "../lib/api-client.js";
2
2
  import { getCurrentAppId } from "../lib/config.js";
3
- import { success, error, info, keyValue, result as printResult, formatTable, formatId, formatDate, json, } from "../lib/output.js";
4
- import { confirmPrompt } from "../lib/confirm-prompt.js";
3
+ import { error, info, result as printResult, formatTable, formatId, formatDate, json, } from "../lib/output.js";
5
4
  function resolveAppId(appId, options) {
6
5
  const resolved = appId || options.app || getCurrentAppId();
7
6
  if (!resolved) {
@@ -18,11 +17,19 @@ export function registerDatabaseTypesCommands(program) {
18
17
  Examples:
19
18
  $ primitive database-types list
20
19
  $ primitive database-types get <database-type>
21
- $ primitive database-types create <database-type>
22
- $ primitive database-types update <database-type> --rule-set-id <id>
23
- $ primitive database-types delete <database-type>
20
+ $ primitive config create database-type <database-type> # scaffold database-types/<type>.toml
21
+ $ primitive config push --only database-type/<database-type>
24
22
  $ primitive database-types operations list <database-type>
25
- $ primitive database-types operations create <database-type> <name> --type query --model Task --access true --definition '{"filter":{}}'
23
+ # Operations are [[operations]] entries in database-types/<type>.toml.
24
+ `);
25
+ // Server-side configuration is authored in TOML and applied with `config push`
26
+ // (issue #2645) — this group no longer carries config-setting flags.
27
+ dbTypes.addHelpText("after", `
28
+ Configuration lives in database-types/<type>.toml:
29
+ $ primitive config fields database-type # the file's keys, types and defaults
30
+ $ primitive config create database-type <key> # scaffold one locally
31
+ $ primitive config set database-type/<key> <path>=<value>
32
+ $ primitive config push --only database-type/<key>
26
33
  `);
27
34
  // List type configs
28
35
  dbTypes
@@ -85,162 +92,10 @@ Examples:
85
92
  process.exit(1);
86
93
  }
87
94
  });
88
- // Create type config
89
- dbTypes
90
- .command("create")
91
- .description("Create a database type configuration")
92
- .argument("<database-type>", "Database type name")
93
- .option("--rule-set-id <id>", "Access rule set ID")
94
- .option("--triggers <json>", "Trigger definitions as JSON string")
95
- .option("--cel-context-access <cel>", "[deprecated] One CEL expression gating the database CEL context — it gates READ AND WRITE together, so anyone allowed to read can also update. Prefer a resource metadata category (separate readRule/writeRule). See docs.")
96
- .option("--metadata-access <cel>", "[deprecated] Legacy alias for --cel-context-access (also gates read AND write); prefer a resource metadata category")
97
- .option("--app <app-id>", "App ID")
98
- .option("--json", "Output as JSON")
99
- .action(async (databaseType, options) => {
100
- const resolvedAppId = resolveAppId(undefined, options);
101
- const client = new ApiClient();
102
- try {
103
- const data = { databaseType };
104
- if (options.ruleSetId)
105
- data.ruleSetId = options.ruleSetId;
106
- if (options.triggers) {
107
- try {
108
- data.triggers = JSON.parse(options.triggers);
109
- }
110
- catch {
111
- error("Invalid JSON in --triggers.");
112
- process.exit(1);
113
- }
114
- }
115
- // `--cel-context-access` is the new name; `--metadata-access` remains
116
- // supported. Both write to the same wire field (`metadataAccess`).
117
- const accessExpr = options.celContextAccess ?? options.metadataAccess;
118
- if (accessExpr)
119
- data.metadataAccess = accessExpr;
120
- const result = await client.createDatabaseTypeConfig(resolvedAppId, data);
121
- if (options.json) {
122
- json(result);
123
- return;
124
- }
125
- success("Database type configuration created.");
126
- keyValue("Database Type", result.databaseType);
127
- if (result.ruleSetId)
128
- keyValue("Rule Set ID", result.ruleSetId);
129
- if (result.triggers)
130
- keyValue("Triggers", "Yes");
131
- }
132
- catch (err) {
133
- error(err.message);
134
- process.exit(1);
135
- }
136
- });
137
- // Update type config
138
- dbTypes
139
- .command("update")
140
- .description("Update a database type configuration")
141
- .argument("<database-type>", "Database type name")
142
- .option("--rule-set-id <id>", "Access rule set ID (use 'none' to clear)")
143
- .option("--triggers <json>", "Trigger definitions as JSON string (use 'none' to clear)")
144
- .option("--cel-context-access <cel>", "[deprecated] One CEL expression gating the database CEL context read AND write (use 'none' to clear). Prefer a resource metadata category (separate readRule/writeRule).")
145
- .option("--metadata-access <cel>", "[deprecated] Legacy alias for --cel-context-access (also gates read AND write; use 'none' to clear); prefer a resource metadata category")
146
- .option("--app <app-id>", "App ID")
147
- .option("--json", "Output as JSON")
148
- .action(async (databaseType, options) => {
149
- const resolvedAppId = resolveAppId(undefined, options);
150
- const client = new ApiClient();
151
- const data = {};
152
- if (options.ruleSetId !== undefined) {
153
- data.ruleSetId = options.ruleSetId === "none" ? null : options.ruleSetId;
154
- }
155
- if (options.triggers !== undefined) {
156
- if (options.triggers === "none") {
157
- data.triggers = null;
158
- }
159
- else {
160
- try {
161
- data.triggers = JSON.parse(options.triggers);
162
- }
163
- catch {
164
- error("Invalid JSON in --triggers.");
165
- process.exit(1);
166
- }
167
- }
168
- }
169
- // Honour either flag; --cel-context-access wins if both are given.
170
- const accessArg = options.celContextAccess !== undefined
171
- ? options.celContextAccess
172
- : options.metadataAccess;
173
- if (accessArg !== undefined) {
174
- data.metadataAccess = accessArg === "none" ? null : accessArg;
175
- }
176
- if (Object.keys(data).length === 0) {
177
- error("Provide at least one of --rule-set-id, --triggers, --cel-context-access, or --metadata-access.");
178
- process.exit(1);
179
- }
180
- try {
181
- const result = await client.updateDatabaseTypeConfig(resolvedAppId, databaseType, data);
182
- if (options.json) {
183
- json(result);
184
- return;
185
- }
186
- success("Database type configuration updated.");
187
- keyValue("Database Type", result.databaseType);
188
- keyValue("Rule Set ID", result.ruleSetId || "—");
189
- keyValue("Triggers", result.triggers ? "Yes" : "—");
190
- }
191
- catch (err) {
192
- error(err.message);
193
- process.exit(1);
194
- }
195
- });
196
- // Delete type config
197
- dbTypes
198
- .command("delete")
199
- .description("Delete a database type configuration")
200
- .argument("<database-type>", "Database type name")
201
- .option("--app <app-id>", "App ID")
202
- .option("-y, --yes", "Skip confirmation prompt")
203
- .option("--force", "Delete even if live database instances of this type still exist (orphans them)")
204
- .action(async (databaseType, options) => {
205
- const resolvedAppId = resolveAppId(undefined, options);
206
- // `-y/--yes` only skips the interactive confirm; it does NOT bypass the
207
- // server's instance-orphaning guard. Only `--force` (→ ?force=true) does.
208
- if (!options.yes) {
209
- let confirm;
210
- try {
211
- confirm = await confirmPrompt(`Delete database type "${databaseType}"? This cannot be undone.`);
212
- }
213
- catch (err) {
214
- error(err.message);
215
- process.exit(1);
216
- }
217
- if (!confirm) {
218
- info("Cancelled.");
219
- return;
220
- }
221
- }
222
- const client = new ApiClient();
223
- try {
224
- await client.deleteDatabaseTypeConfig(resolvedAppId, databaseType, {
225
- force: Boolean(options.force),
226
- });
227
- success(`Database type "${databaseType}" deleted.`);
228
- }
229
- catch (err) {
230
- error(err.message);
231
- // The server refuses (409) when live instances exist and --force was
232
- // not passed. Point the user at the escape hatch.
233
- if (/instance/i.test(err.message) && !options.force) {
234
- info("Delete the instances first (primitive databases delete <id>), or re-run with --force to delete the type anyway (this orphans the instances).");
235
- }
236
- process.exit(1);
237
- }
238
- });
239
95
  // ---- Operations subcommand group ----
240
96
  const operations = dbTypes
241
97
  .command("operations")
242
98
  .description("Manage operations (queries and mutations) for a database type");
243
- // List operations
244
99
  operations
245
100
  .command("list")
246
101
  .description("List operations for a database type")
@@ -312,160 +167,5 @@ Examples:
312
167
  process.exit(1);
313
168
  }
314
169
  });
315
- // Create operation
316
- operations
317
- .command("create")
318
- .description("Create a new operation (query or mutation)")
319
- .argument("<database-type>", "Database type name")
320
- .argument("<name>", "Operation name")
321
- .requiredOption("--type <type>", "Operation type: query, mutation, count, aggregate, or pipeline")
322
- .requiredOption("--model <model-name>", "Model name")
323
- .requiredOption("--access <cel>", "Access CEL expression")
324
- .requiredOption("--definition <json>", "Definition as JSON string")
325
- .option("--params <json>", "Parameters schema as JSON string")
326
- .option("--app <app-id>", "App ID")
327
- .option("--json", "Output as JSON")
328
- .action(async (databaseType, name, options) => {
329
- const resolvedAppId = resolveAppId(undefined, options);
330
- const client = new ApiClient();
331
- let definition;
332
- try {
333
- definition = JSON.parse(options.definition);
334
- }
335
- catch {
336
- error("Invalid JSON in --definition.");
337
- process.exit(1);
338
- return;
339
- }
340
- let params;
341
- if (options.params) {
342
- try {
343
- params = JSON.parse(options.params);
344
- }
345
- catch {
346
- error("Invalid JSON in --params.");
347
- process.exit(1);
348
- return;
349
- }
350
- }
351
- try {
352
- const data = {
353
- name,
354
- type: options.type,
355
- modelName: options.model,
356
- access: options.access,
357
- definition,
358
- };
359
- if (params)
360
- data.params = params;
361
- const result = await client.createDatabaseTypeOperation(resolvedAppId, databaseType, data);
362
- if (options.json) {
363
- json(result);
364
- return;
365
- }
366
- success("Operation created.");
367
- keyValue("Name", result.name);
368
- keyValue("Type", result.type);
369
- keyValue("Model Name", result.modelName);
370
- }
371
- catch (err) {
372
- error(err.message);
373
- process.exit(1);
374
- }
375
- });
376
- // Update operation
377
- operations
378
- .command("update")
379
- .description("Update an operation")
380
- .argument("<database-type>", "Database type name")
381
- .argument("<name>", "Operation name")
382
- .option("--model <model-name>", "New model name")
383
- .option("--access <cel>", "New access CEL expression")
384
- .option("--definition <json>", "New definition as JSON string")
385
- .option("--params <json>", "New parameters schema as JSON string")
386
- .option("--app <app-id>", "App ID")
387
- .option("--json", "Output as JSON")
388
- .action(async (databaseType, name, options) => {
389
- const resolvedAppId = resolveAppId(undefined, options);
390
- const client = new ApiClient();
391
- const data = {};
392
- if (options.model)
393
- data.modelName = options.model;
394
- if (options.access)
395
- data.access = options.access;
396
- if (options.definition) {
397
- try {
398
- data.definition = JSON.parse(options.definition);
399
- }
400
- catch {
401
- error("Invalid JSON in --definition.");
402
- process.exit(1);
403
- return;
404
- }
405
- }
406
- if (options.params) {
407
- try {
408
- data.params = JSON.parse(options.params);
409
- }
410
- catch {
411
- error("Invalid JSON in --params.");
412
- process.exit(1);
413
- return;
414
- }
415
- }
416
- if (Object.keys(data).length === 0) {
417
- error("Provide at least one of --model, --access, --definition, or --params.");
418
- process.exit(1);
419
- }
420
- try {
421
- const result = await client.updateDatabaseTypeOperation(resolvedAppId, databaseType, name, data);
422
- if (options.json) {
423
- json(result);
424
- return;
425
- }
426
- success("Operation updated.");
427
- keyValue("Name", result.name);
428
- keyValue("Type", result.type);
429
- keyValue("Model Name", result.modelName);
430
- }
431
- catch (err) {
432
- error(err.message);
433
- process.exit(1);
434
- }
435
- });
436
- // Delete operation
437
- operations
438
- .command("delete")
439
- .description("Delete an operation")
440
- .argument("<database-type>", "Database type name")
441
- .argument("<name>", "Operation name")
442
- .option("--app <app-id>", "App ID")
443
- .option("-y, --yes", "Skip confirmation prompt")
444
- .action(async (databaseType, name, options) => {
445
- const resolvedAppId = resolveAppId(undefined, options);
446
- if (!options.yes) {
447
- let confirm;
448
- try {
449
- confirm = await confirmPrompt(`Delete operation "${name}" from type "${databaseType}"?`);
450
- }
451
- catch (err) {
452
- error(err.message);
453
- process.exit(1);
454
- }
455
- if (!confirm) {
456
- info("Cancelled.");
457
- return;
458
- }
459
- }
460
- const client = new ApiClient();
461
- try {
462
- await client.deleteDatabaseTypeOperation(resolvedAppId, databaseType, name);
463
- success(`Operation "${name}" deleted.`);
464
- }
465
- catch (err) {
466
- error(err.message);
467
- process.exit(1);
468
- }
469
- });
470
170
  }
471
171
  //# sourceMappingURL=database-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database-types.js","sourceRoot":"","sources":["../../../src/commands/database-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database-types.js","sourceRoot":"","sources":["../../../src/commands/database-types.ts"],"names":[],"mappings":"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"}
@@ -119,8 +119,9 @@ Examples:
119
119
  console.log(JSON.stringify(result.outputSchema, null, 2));
120
120
  }
121
121
  divider();
122
- info("To create this prompt, copy the JSON output (--json) and use:");
123
- console.log(" primitive prompts create --from-file <file.toml>");
122
+ info("To create this prompt, author it as TOML and push it:");
123
+ console.log(" primitive config new prompt <key>");
124
+ console.log(" primitive sync push --only prompt/<key>");
124
125
  }
125
126
  catch (err) {
126
127
  error(err.message);
@@ -170,8 +171,9 @@ Examples:
170
171
  console.log(JSON.stringify(result.outputSchema, null, 2));
171
172
  }
172
173
  divider();
173
- info("To create this evaluator, copy the JSON output (--json) and use:");
174
- console.log(" primitive prompts create --from-file <file.toml>");
174
+ info("To create this evaluator, author it as TOML and push it:");
175
+ console.log(" primitive config new prompt <key>");
176
+ console.log(" primitive sync push --only prompt/<key>");
175
177
  info("Then link it to test cases using --evaluator-prompt option.");
176
178
  }
177
179
  catch (err) {
@@ -222,8 +224,9 @@ Examples:
222
224
  console.log(JSON.stringify(result.outputSchema, null, 2));
223
225
  }
224
226
  divider();
225
- info("To create this evaluator, copy the JSON output (--json) and use:");
226
- console.log(" primitive prompts create --from-file <file.toml>");
227
+ info("To create this evaluator, author it as TOML and push it:");
228
+ console.log(" primitive config new prompt <key>");
229
+ console.log(" primitive sync push --only prompt/<key>");
227
230
  info("Then link it to workflow test cases using --evaluator-prompt option.");
228
231
  }
229
232
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../src/commands/llm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../src/commands/llm.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
1
  /**
2
- * `primitive settings` — the app-settings sync surface (issue #1033, Phase 2).
2
+ * `primitive settings` — the app-settings READER (issue #1033, Phase 2;
3
+ * narrowed to a reader by #2645).
3
4
  *
4
- * A focused command for the app-settings TOML round-trip that `sync` handles as
5
- * part of the whole-config export/import. `settings pull` / `push` / `diff`
6
- * operate on the SAME `app.toml` and the SAME single `entities.app.contentHash`
7
- * as `sync`, so the two are interchangeable and idempotent together. `settings
8
- * show` renders the current server-effective settings (with `googleClientSecret`
9
- * redacted).
5
+ * App settings are authored in `app.toml` and applied with `sync push`, so
6
+ * this group carries the one thing the file cannot answer: what the server is
7
+ * actually running. `settings get` renders the server-effective settings —
8
+ * `get` rather than `show`, so the read verb is the same word on every
9
+ * configuration surface.
10
10
  *
11
- * The command logic lives in `sync-app-settings.ts` so `sync` and `settings`
12
- * share one implementation; this file only wires up the commander surface.
11
+ * `settings pull`, `settings diff` and `settings push` are gone. They operated
12
+ * on the same `app.toml` and the same `entities.app` hash `sync` owns, so they
13
+ * were a second pathway to one piece of state; `sync pull|diff|push --only app`
14
+ * is the single one. The remaining command logic lives in
15
+ * `sync-app-settings.ts`, shared with `sync`.
13
16
  */
14
17
  import { Command } from "commander";
15
18
  export declare function registerSettingsCommands(program: Command): void;
@@ -1,102 +1,54 @@
1
1
  /**
2
- * `primitive settings` — the app-settings sync surface (issue #1033, Phase 2).
2
+ * `primitive settings` — the app-settings READER (issue #1033, Phase 2;
3
+ * narrowed to a reader by #2645).
3
4
  *
4
- * A focused command for the app-settings TOML round-trip that `sync` handles as
5
- * part of the whole-config export/import. `settings pull` / `push` / `diff`
6
- * operate on the SAME `app.toml` and the SAME single `entities.app.contentHash`
7
- * as `sync`, so the two are interchangeable and idempotent together. `settings
8
- * show` renders the current server-effective settings (with `googleClientSecret`
9
- * redacted).
5
+ * App settings are authored in `app.toml` and applied with `sync push`, so
6
+ * this group carries the one thing the file cannot answer: what the server is
7
+ * actually running. `settings get` renders the server-effective settings —
8
+ * `get` rather than `show`, so the read verb is the same word on every
9
+ * configuration surface.
10
10
  *
11
- * The command logic lives in `sync-app-settings.ts` so `sync` and `settings`
12
- * share one implementation; this file only wires up the commander surface.
11
+ * `settings pull`, `settings diff` and `settings push` are gone. They operated
12
+ * on the same `app.toml` and the same `entities.app` hash `sync` owns, so they
13
+ * were a second pathway to one piece of state; `sync pull|diff|push --only app`
14
+ * is the single one. The remaining command logic lives in
15
+ * `sync-app-settings.ts`, shared with `sync`.
13
16
  */
14
17
  import { ApiClient } from "../lib/api-client.js";
15
18
  import { resolveAppId } from "../lib/config.js";
16
- import { resolveSyncDir, isAutoResolvedSyncDir, checkLegacySyncMigration, } from "../lib/sync-paths.js";
17
- import { info, warn } from "../lib/output.js";
18
- import { showAppSettings, pullAppSettings, pushAppSettings, diffAppSettings, } from "./sync-app-settings.js";
19
- /**
20
- * Resolve the sync directory and print the per-environment hint the way `sync`
21
- * does (suppressed under `--json` so stdout stays pure JSON).
22
- */
23
- function resolveConfigDir(appId, options) {
24
- const configDir = resolveSyncDir({ appId, userDir: options.dir });
25
- if (isAutoResolvedSyncDir(options.dir) && !options.json) {
26
- info(`Using per-environment sync directory: ${configDir}`);
27
- const legacyHint = checkLegacySyncMigration(configDir);
28
- if (legacyHint)
29
- warn(legacyHint);
30
- }
31
- return configDir;
32
- }
19
+ import { showAppSettings } from "./sync-app-settings.js";
33
20
  export function registerSettingsCommands(program) {
34
21
  const settings = program
35
22
  .command("settings")
36
- .description("View and sync app settings through app.toml")
23
+ .description("View the app settings the server is running")
37
24
  .addHelpText("after", `
38
25
  Examples:
39
- $ primitive settings show # Render current server settings
40
- $ primitive settings show --json # Machine-readable (secret redacted)
41
- $ primitive settings pull # Write server settings to app.toml
42
- $ primitive settings diff # Show local app.toml vs server
43
- $ primitive settings push # Apply app.toml edits to the server
26
+ $ primitive settings get # Render current server settings
27
+ $ primitive settings get --json # Machine-readable
28
+ $ primitive sync pull --only app # Write server settings to app.toml
29
+ $ primitive config set app app.baseUrl=https://example.com
30
+ $ primitive sync diff --only app # Show local app.toml vs server
31
+ $ primitive sync push --only app # Apply app.toml edits to the server
44
32
 
45
- app.toml is the primary way to manage app configuration. The Google OAuth
46
- client secret is intentionally excluded from app.toml; set it with
47
- 'primitive apps update <app-id> --google-client-secret <secret>'.
33
+ app.toml is the ONLY way to manage app configuration (issue #2645): a full
34
+ \`sync push\` applies it, and \`sync push --only app\` applies it alone.
35
+ \`primitive config fields app\` lists its keys, types and defaults. The Google OAuth
36
+ client secret is an ordinary [auth] key holding a reference into the app's
37
+ secret store, never the secret itself: store the value with
38
+ 'primitive secrets set GOOGLE_CLIENT_SECRET --value <secret>', then set
39
+ googleClientSecret = "{{secrets.GOOGLE_CLIENT_SECRET}}" in app.toml. A literal
40
+ secret there is rejected by the server.
48
41
  `);
49
- // settings show
42
+ // settings get
50
43
  settings
51
- .command("show")
44
+ .command("get")
52
45
  .description("Show the current server-effective app settings")
53
46
  .argument("[app-id]", "App ID (uses current app if not specified)")
54
47
  .option("--app <app-id>", "App ID")
55
- .option("--json", "Output as JSON (googleClientSecret redacted)")
56
- .action(async (appId, options) => {
57
- const resolvedAppId = resolveAppId(appId, options);
58
- await showAppSettings(new ApiClient(), resolvedAppId, options);
59
- });
60
- // settings pull
61
- settings
62
- .command("pull")
63
- .description("Write the current server settings to app.toml")
64
- .argument("[app-id]", "App ID (uses current app if not specified)")
65
- .option("--app <app-id>", "App ID")
66
- .option("--dir <path>", "Config directory (overrides the auto-resolved per-env path)")
67
48
  .option("--json", "Output as JSON")
68
49
  .action(async (appId, options) => {
69
50
  const resolvedAppId = resolveAppId(appId, options);
70
- const configDir = resolveConfigDir(resolvedAppId, options);
71
- await pullAppSettings(new ApiClient(), resolvedAppId, configDir, options);
72
- });
73
- // settings diff
74
- settings
75
- .command("diff")
76
- .description("Show per-field differences between app.toml and the server")
77
- .argument("[app-id]", "App ID (uses current app if not specified)")
78
- .option("--app <app-id>", "App ID")
79
- .option("--dir <path>", "Config directory (overrides the auto-resolved per-env path)")
80
- .option("--json", "Output as JSON")
81
- .action(async (appId, options) => {
82
- const resolvedAppId = resolveAppId(appId, options);
83
- const configDir = resolveConfigDir(resolvedAppId, options);
84
- await diffAppSettings(new ApiClient(), resolvedAppId, configDir, options);
85
- });
86
- // settings push
87
- settings
88
- .command("push")
89
- .description("Apply app.toml settings to the server")
90
- .argument("[app-id]", "App ID (uses current app if not specified)")
91
- .option("--app <app-id>", "App ID")
92
- .option("--dir <path>", "Config directory (overrides the auto-resolved per-env path)")
93
- .option("--force", "Push even if app.toml is unchanged since the last sync")
94
- .option("--dry-run", "Show what would be changed without applying")
95
- .option("--json", "Output as JSON")
96
- .action(async (appId, options) => {
97
- const resolvedAppId = resolveAppId(appId, options);
98
- const configDir = resolveConfigDir(resolvedAppId, options);
99
- await pushAppSettings(new ApiClient(), resolvedAppId, configDir, options);
51
+ await showAppSettings(new ApiClient(), resolvedAppId, options);
100
52
  });
101
53
  }
102
54
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;CAiBL,CACI,CAAC;IAEJ,eAAe;IACf,QAAQ;SACL,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,gDAAgD,CAAC;SAC7D,QAAQ,CAAC,UAAU,EAAE,4CAA4C,CAAC;SAClE,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,eAAe,CAAC,IAAI,SAAS,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -21,6 +21,14 @@
21
21
  * cap, whether a standalone webhook holds the key. A local copy of those would
22
22
  * be a preflight that can give a false all-clear.
23
23
  */
24
+ /**
25
+ * The resolved mode the declaration is checked against (#3281): the caller
26
+ * resolves `mode`/`durable` once through the vendored `resolveDeclaredMode`
27
+ * and hands the answer here, so this copy never reads the alias itself.
28
+ */
29
+ export interface TriggerModeOptions {
30
+ mode?: "request" | "task";
31
+ }
24
32
  export interface WebhookTriggerDeclaration {
25
33
  verificationScheme: string;
26
34
  signingSecret?: string;
@@ -38,17 +46,21 @@ export interface CronTriggerDeclaration {
38
46
  overlapPolicy?: string;
39
47
  rootInput?: unknown;
40
48
  }
49
+ /** One `[[function.triggers.database]]` entry, normalized (#3184). */
50
+ export interface DatabaseTriggerDeclaration {
51
+ type: string;
52
+ }
41
53
  export interface TriggerDeclaration {
42
54
  webhook: WebhookTriggerDeclaration | null;
43
55
  cron: CronTriggerDeclaration[];
56
+ databases: DatabaseTriggerDeclaration[];
44
57
  }
45
58
  export declare const MAX_CRON_TRIGGERS_PER_FUNCTION = 10;
59
+ export declare const MAX_DATABASE_TRIGGERS_PER_FUNCTION = 5;
46
60
  export declare class TriggerDeclarationError extends Error {
47
61
  }
48
62
  /**
49
63
  * Normalize (and check) the `triggers` table of a parsed `[function]` table.
50
64
  * Returns null when nothing is declared, so a caller can skip the work.
51
65
  */
52
- export declare function normalizeFunctionTriggers(functionTable: any, options?: {
53
- durable?: boolean;
54
- }): TriggerDeclaration | null;
66
+ export declare function normalizeFunctionTriggers(functionTable: any, options?: TriggerModeOptions): TriggerDeclaration | null;
@@ -22,7 +22,11 @@
22
22
  * be a preflight that can give a false all-clear.
23
23
  */
24
24
  export const MAX_CRON_TRIGGERS_PER_FUNCTION = 10;
25
+ export const MAX_DATABASE_TRIGGERS_PER_FUNCTION = 5;
25
26
  const CRON_NAME_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;
27
+ /** The charset the grant grammar already uses for a database type key. */
28
+ const DATABASE_TYPE_PATTERN = /^[A-Za-z0-9_-]+$/;
29
+ const DATABASE_KEYS = ["type"];
26
30
  const WEBHOOK_KEYS = [
27
31
  "verificationScheme",
28
32
  "signingSecret",
@@ -49,16 +53,72 @@ export function normalizeFunctionTriggers(functionTable, options = {}) {
49
53
  throw new TriggerDeclarationError("[function.triggers] must be a table declaring `webhook` and/or `cron`");
50
54
  }
51
55
  for (const key of Object.keys(triggers)) {
52
- if (key !== "webhook" && key !== "cron") {
56
+ if (key !== "webhook" && key !== "cron" && key !== "database") {
53
57
  throw new TriggerDeclarationError(`unknown trigger kind '${key}' under [function.triggers]: the kinds are ` +
54
- "`webhook` and `cron`");
58
+ "`webhook`, `cron` and `database`");
55
59
  }
56
60
  }
57
61
  const webhook = normalizeWebhook(triggers.webhook, options);
58
62
  const cron = normalizeCron(triggers.cron, options);
59
- if (!webhook && cron.length === 0)
63
+ const databases = normalizeDatabases(triggers.database, options);
64
+ if (!webhook && cron.length === 0 && databases.length === 0)
60
65
  return null;
61
- return { webhook, cron };
66
+ return { webhook, cron, databases };
67
+ }
68
+ /**
69
+ * `[[function.triggers.database]]` — one accepted key, `type` (#3184).
70
+ *
71
+ * Sync mode only, permanently: a database-change fire runs inside the write
72
+ * request with no run row, and there is no durable shape for that.
73
+ */
74
+ function normalizeDatabases(raw, options) {
75
+ if (raw === undefined || raw === null)
76
+ return [];
77
+ const entries = Array.isArray(raw) ? raw : [raw];
78
+ if (entries.length === 0)
79
+ return [];
80
+ if (options.mode === "task") {
81
+ throw new TriggerDeclarationError("database triggers require request mode: set `mode = \"request\"` (or " +
82
+ "remove `mode = \"task\"`), or remove the [[function.triggers.database]] " +
83
+ "entries");
84
+ }
85
+ if (entries.length > MAX_DATABASE_TRIGGERS_PER_FUNCTION) {
86
+ throw new TriggerDeclarationError(`a function may watch at most ${MAX_DATABASE_TRIGGERS_PER_FUNCTION} database ` +
87
+ `types, and this one declares ${entries.length}`);
88
+ }
89
+ const seen = new Set();
90
+ const normalized = [];
91
+ for (const entry of entries) {
92
+ if (entry === null || typeof entry !== "object" || Array.isArray(entry)) {
93
+ throw new TriggerDeclarationError("each [[function.triggers.database]] entry must be a table");
94
+ }
95
+ const table = entry;
96
+ for (const key of Object.keys(table)) {
97
+ if (!DATABASE_KEYS.includes(key)) {
98
+ throw new TriggerDeclarationError(`unknown key '${key}' in a [[function.triggers.database]] entry: the ` +
99
+ `only accepted key is ${DATABASE_KEYS.join(", ")}`);
100
+ }
101
+ }
102
+ const type = String(table.type ?? "").trim();
103
+ if (!type) {
104
+ throw new TriggerDeclarationError("each [[function.triggers.database]] entry needs a `type`: it names the " +
105
+ "database type whose writes fire the function");
106
+ }
107
+ if (!DATABASE_TYPE_PATTERN.test(type)) {
108
+ throw new TriggerDeclarationError(`database trigger type '${type}' must contain only letters, digits, ` +
109
+ "'-' or '_'");
110
+ }
111
+ if (seen.has(type)) {
112
+ throw new TriggerDeclarationError(`duplicate database trigger type '${type}': a function fires once per ` +
113
+ "write request, so each type is declared once");
114
+ }
115
+ seen.add(type);
116
+ normalized.push({ type });
117
+ }
118
+ // Sorted, matching the server, so `config diff` compares the same canonical
119
+ // shape whichever order the file lists its blocks in.
120
+ normalized.sort((a, b) => a.type.localeCompare(b.type));
121
+ return normalized;
62
122
  }
63
123
  function normalizeWebhook(raw, options) {
64
124
  if (raw === undefined || raw === null)
@@ -77,9 +137,9 @@ function normalizeWebhook(raw, options) {
77
137
  `are ${WEBHOOK_KEYS.join(", ")}`);
78
138
  }
79
139
  }
80
- if (options.durable) {
81
- throw new TriggerDeclarationError("webhook triggers require sync mode: remove `durable = true` or remove " +
82
- "[function.triggers.webhook]");
140
+ if (options.mode === "task") {
141
+ throw new TriggerDeclarationError("webhook triggers require request mode: set `mode = \"request\"` (or " +
142
+ "remove `mode = \"task\"`), or remove [function.triggers.webhook]");
83
143
  }
84
144
  const scheme = String(table.verificationScheme ?? "").trim();
85
145
  if (!scheme) {
@@ -130,9 +190,11 @@ function normalizeCron(raw, options) {
130
190
  const entries = Array.isArray(raw) ? raw : [raw];
131
191
  if (entries.length === 0)
132
192
  return [];
133
- if (options.durable) {
134
- throw new TriggerDeclarationError("cron triggers require sync mode in this release: remove `durable = " +
135
- "true` or remove the [[function.triggers.cron]] entries");
193
+ if (options.mode === "task") {
194
+ throw new TriggerDeclarationError("cron triggers require request mode: set `mode = \"request\"` (or " +
195
+ "remove `mode = \"task\"`), or remove the [[function.triggers.cron]] " +
196
+ "entries — a cron trigger on a task function is not available in this " +
197
+ "release");
136
198
  }
137
199
  if (entries.length > MAX_CRON_TRIGGERS_PER_FUNCTION) {
138
200
  throw new TriggerDeclarationError(`a function may declare at most ${MAX_CRON_TRIGGERS_PER_FUNCTION} cron ` +
@@ -1 +1 @@
1
- {"version":3,"file":"function-triggers.js","sourceRoot":"","sources":["../../../src/lib/function-triggers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"function-triggers.js","sourceRoot":"","sources":["../../../src/lib/function-triggers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * GENERATED FILE — DO NOT EDIT BY HAND.
3
+ *
4
+ * Source of truth: the `WorkflowDefinition` model in the repo-root
5
+ * `models.yaml` — the one statically-parseable server anchor for the
6
+ * `[workflow]`-level config surface (issue #2326, Phase 1 of #1976).
7
+ *
8
+ * Regenerate with:
9
+ * node cli/scripts/gen-workflow-fields.mjs (runs automatically at CLI prebuild)
10
+ *
11
+ * A CI freshness guard (`cli/scripts/gen-workflow-fields.mjs --check`, also
12
+ * asserted by `cli/tests/unit/workflow-field-descriptor-drift-guard.test.ts`)
13
+ * fails if this committed artifact does not match a fresh parse of
14
+ * `models.yaml`. The same test asserts every field below is classified in
15
+ * `cli/src/lib/workflow-field-descriptor.ts` as synced, structural, or
16
+ * internal — so a new server-side workflow field cannot be silently ignored by
17
+ * the CLI.
18
+ */
19
+ /** Every `WorkflowDefinition` field, in `models.yaml` declaration order (#2326). */
20
+ export declare const GENERATED_WORKFLOW_MODEL_FIELDS: readonly string[];
@@ -0,0 +1,53 @@
1
+ /**
2
+ * GENERATED FILE — DO NOT EDIT BY HAND.
3
+ *
4
+ * Source of truth: the `WorkflowDefinition` model in the repo-root
5
+ * `models.yaml` — the one statically-parseable server anchor for the
6
+ * `[workflow]`-level config surface (issue #2326, Phase 1 of #1976).
7
+ *
8
+ * Regenerate with:
9
+ * node cli/scripts/gen-workflow-fields.mjs (runs automatically at CLI prebuild)
10
+ *
11
+ * A CI freshness guard (`cli/scripts/gen-workflow-fields.mjs --check`, also
12
+ * asserted by `cli/tests/unit/workflow-field-descriptor-drift-guard.test.ts`)
13
+ * fails if this committed artifact does not match a fresh parse of
14
+ * `models.yaml`. The same test asserts every field below is classified in
15
+ * `cli/src/lib/workflow-field-descriptor.ts` as synced, structural, or
16
+ * internal — so a new server-side workflow field cannot be silently ignored by
17
+ * the CLI.
18
+ */
19
+ /** Every `WorkflowDefinition` field, in `models.yaml` declaration order (#2326). */
20
+ export const GENERATED_WORKFLOW_MODEL_FIELDS = [
21
+ "workflowId",
22
+ "appId",
23
+ "workflowKey",
24
+ "name",
25
+ "status",
26
+ "latestRevision",
27
+ "description",
28
+ "stepsR2Key",
29
+ "draftStepsR2Key",
30
+ "draftInputSchema",
31
+ "draftOutputSchema",
32
+ "draftModifiedAt",
33
+ "activeConfigId",
34
+ "inputSchema",
35
+ "outputSchema",
36
+ "perUserMaxRunning",
37
+ "perUserMaxQueued",
38
+ "perAppMaxRunning",
39
+ "perAppMaxQueued",
40
+ "queueTtlSeconds",
41
+ "dequeueOrder",
42
+ "requiresClientApply",
43
+ "syncCallable",
44
+ "accessRule",
45
+ "metadataManifest",
46
+ "runAs",
47
+ "lock",
48
+ "capabilities",
49
+ "createdBy",
50
+ "createdAt",
51
+ "modifiedAt",
52
+ ];
53
+ //# sourceMappingURL=generated-workflow-model-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-workflow-model-fields.js","sourceRoot":"","sources":["../../../src/lib/generated-workflow-model-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,oFAAoF;AACpF,MAAM,CAAC,MAAM,+BAA+B,GAAsB;IAChE,YAAY;IACZ,OAAO;IACP,aAAa;IACb,MAAM;IACN,QAAQ;IACR,gBAAgB;IAChB,aAAa;IACb,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,mBAAmB;IACnB,iBAAiB;IACjB,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,iBAAiB;IACjB,cAAc;IACd,qBAAqB;IACrB,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,OAAO;IACP,MAAM;IACN,cAAc;IACd,WAAW;IACX,WAAW;IACX,YAAY;CACb,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Classification of the `WorkflowDefinition` field surface (issue #2326,
3
+ * Phase 1 of #1976).
4
+ *
5
+ * Purpose: give the CLI a mechanical trip-wire for the drift that keeps
6
+ * happening — the server grows a `[workflow]`-level config field (`syncCallable`
7
+ * #807, `accessRule` #571, `runAs` #1081, `capabilities` #1172, `lock` #1518)
8
+ * and the CLI silently drops it on `sync push` / `sync pull`. Every field of the
9
+ * `WorkflowDefinition` model must appear in exactly one of the three groups
10
+ * below. The generated artifact `generated-workflow-model-fields.ts` carries the
11
+ * model's real field list (parsed from `models.yaml` at build time), and
12
+ * `cli/tests/unit/workflow-field-descriptor-drift-guard.test.ts` asserts
13
+ *
14
+ * synced ∪ structural ∪ internal === the model's fields
15
+ *
16
+ * so a new field hard-fails the guard until someone classifies it.
17
+ *
18
+ * ── Scope: declarative classification and coverage ONLY ──────────────────
19
+ * Decision of record (#1976, 2026-07-23): this table records WHICH fields
20
+ * exist, whether each is synced / structural / internal, and its `[workflow]`
21
+ * TOML key. Anything with real BEHAVIOR gets an explicit per-field handler or
22
+ * stays outside the table. In particular this file deliberately does NOT encode
23
+ * as boolean knobs:
24
+ * - the schema fields' native-TOML-table-vs-JSON-string parsing
25
+ * (`buildWorkflowPayloadFromToml` / `safeJsonParse` own that),
26
+ * - `syncCallable`'s deferred second PATCH on update (#807 — `applyWorkflowBody`
27
+ * owns that),
28
+ * - the `metadataManifest` (#1304) and `expr.cel` (#1614) structural side
29
+ * channels, which are attached alongside the steps write and are not
30
+ * `[workflow]`-table keys at all.
31
+ * `cli/src/lib/app-settings-descriptor.ts` is the shape being matched:
32
+ * deliberately narrow.
33
+ *
34
+ * ── What Phase 1 does and does not do ───────────────────────────────────
35
+ * Phase 1 (this file) is the guard only. Making the push builder
36
+ * (`workflow-payload.ts`) and the pull serializer (`serializeWorkflow` in
37
+ * `commands/sync.ts`) *consume* this table is Phase 2 (#2327).
38
+ * `synced` therefore means "belongs in the `[workflow]` TOML table", NOT
39
+ * "already round-trips" — see `SYNCED_NOT_YET_WIRED` below.
40
+ */
41
+ /** Value shape of a synced `[workflow]` key. Descriptive; behavior lives in the handlers. */
42
+ export type WorkflowFieldType = "string" | "number" | "boolean" | "string[]" | "json";
43
+ export interface WorkflowFieldDescriptor {
44
+ /** `WorkflowDefinition` model field name === the server payload key. */
45
+ field: string;
46
+ /** Key under the `[workflow]` table in workflow TOML (usually === `field`). */
47
+ tomlKey: string;
48
+ /** Value shape, for the Phase 2 handlers and for documentation. */
49
+ type: WorkflowFieldType;
50
+ }
51
+ /**
52
+ * The author-facing `[workflow]`-table config fields — the ones a workflow
53
+ * author manages as code and the CLI must round-trip.
54
+ */
55
+ export declare const WORKFLOW_FIELD_DESCRIPTOR: readonly WorkflowFieldDescriptor[];
56
+ /**
57
+ * Fields that ARE author-controlled but do not live in the `[workflow]` table —
58
+ * they travel through their own structural channel. Kept distinct from
59
+ * `WORKFLOW_FIELDS_INTERNAL` so "internal" keeps meaning "not author-facing".
60
+ */
61
+ export declare const WORKFLOW_FIELDS_STRUCTURAL: ReadonlySet<string>;
62
+ /**
63
+ * Fields the server owns: identity, ownership, timestamps, computed pointers,
64
+ * and the deprecated draft/revision slot. None of these are ever sent by the
65
+ * CLI, and none belong in workflow TOML.
66
+ */
67
+ export declare const WORKFLOW_FIELDS_INTERNAL: ReadonlySet<string>;
68
+ /**
69
+ * Synced fields the CLI does NOT round-trip yet — Phase 2 (#2327) wires them.
70
+ * Recorded explicitly so "classified" is never mistaken for "implemented".
71
+ * `lock` was wired by #1972; `templateMissingMarker` was removed from the
72
+ * platform by #2643, so the set is now empty.
73
+ */
74
+ export declare const SYNCED_NOT_YET_WIRED: ReadonlySet<string>;
75
+ /** Descriptor `field` names, for coverage/parity checks. */
76
+ export declare const WORKFLOW_SYNCED_FIELDS: ReadonlySet<string>;
77
+ /** Look up a synced field's descriptor by model field name. */
78
+ export declare function getWorkflowFieldDescriptor(field: string): WorkflowFieldDescriptor | undefined;
79
+ /**
80
+ * Model fields that are classified in NONE of synced / structural / internal —
81
+ * i.e. a field someone added to `models.yaml` without deciding how the CLI
82
+ * treats it. Non-empty is a hard failure in the drift guard.
83
+ */
84
+ export declare function findUnclassifiedWorkflowFields(modelFields: readonly string[]): string[];
85
+ /**
86
+ * Classifications that no longer correspond to a model field — i.e. a field
87
+ * removed from `models.yaml` while the CLI still classifies it. Also a hard
88
+ * failure: a stale classification must not silently pass, or the coverage
89
+ * claim quietly stops meaning anything.
90
+ */
91
+ export declare function findStaleWorkflowClassifications(modelFields: readonly string[]): string[];
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Classification of the `WorkflowDefinition` field surface (issue #2326,
3
+ * Phase 1 of #1976).
4
+ *
5
+ * Purpose: give the CLI a mechanical trip-wire for the drift that keeps
6
+ * happening — the server grows a `[workflow]`-level config field (`syncCallable`
7
+ * #807, `accessRule` #571, `runAs` #1081, `capabilities` #1172, `lock` #1518)
8
+ * and the CLI silently drops it on `sync push` / `sync pull`. Every field of the
9
+ * `WorkflowDefinition` model must appear in exactly one of the three groups
10
+ * below. The generated artifact `generated-workflow-model-fields.ts` carries the
11
+ * model's real field list (parsed from `models.yaml` at build time), and
12
+ * `cli/tests/unit/workflow-field-descriptor-drift-guard.test.ts` asserts
13
+ *
14
+ * synced ∪ structural ∪ internal === the model's fields
15
+ *
16
+ * so a new field hard-fails the guard until someone classifies it.
17
+ *
18
+ * ── Scope: declarative classification and coverage ONLY ──────────────────
19
+ * Decision of record (#1976, 2026-07-23): this table records WHICH fields
20
+ * exist, whether each is synced / structural / internal, and its `[workflow]`
21
+ * TOML key. Anything with real BEHAVIOR gets an explicit per-field handler or
22
+ * stays outside the table. In particular this file deliberately does NOT encode
23
+ * as boolean knobs:
24
+ * - the schema fields' native-TOML-table-vs-JSON-string parsing
25
+ * (`buildWorkflowPayloadFromToml` / `safeJsonParse` own that),
26
+ * - `syncCallable`'s deferred second PATCH on update (#807 — `applyWorkflowBody`
27
+ * owns that),
28
+ * - the `metadataManifest` (#1304) and `expr.cel` (#1614) structural side
29
+ * channels, which are attached alongside the steps write and are not
30
+ * `[workflow]`-table keys at all.
31
+ * `cli/src/lib/app-settings-descriptor.ts` is the shape being matched:
32
+ * deliberately narrow.
33
+ *
34
+ * ── What Phase 1 does and does not do ───────────────────────────────────
35
+ * Phase 1 (this file) is the guard only. Making the push builder
36
+ * (`workflow-payload.ts`) and the pull serializer (`serializeWorkflow` in
37
+ * `commands/sync.ts`) *consume* this table is Phase 2 (#2327).
38
+ * `synced` therefore means "belongs in the `[workflow]` TOML table", NOT
39
+ * "already round-trips" — see `SYNCED_NOT_YET_WIRED` below.
40
+ */
41
+ /**
42
+ * The author-facing `[workflow]`-table config fields — the ones a workflow
43
+ * author manages as code and the CLI must round-trip.
44
+ */
45
+ export const WORKFLOW_FIELD_DESCRIPTOR = [
46
+ { field: "name", tomlKey: "name", type: "string" },
47
+ { field: "status", tomlKey: "status", type: "string" },
48
+ { field: "description", tomlKey: "description", type: "string" },
49
+ // JSON Schema objects. TOML may present them as an inline table OR as a
50
+ // JSON string; the push builder owns that parse (not a knob here).
51
+ { field: "inputSchema", tomlKey: "inputSchema", type: "json" },
52
+ { field: "outputSchema", tomlKey: "outputSchema", type: "json" },
53
+ { field: "perUserMaxRunning", tomlKey: "perUserMaxRunning", type: "number" },
54
+ { field: "perUserMaxQueued", tomlKey: "perUserMaxQueued", type: "number" },
55
+ { field: "perAppMaxRunning", tomlKey: "perAppMaxRunning", type: "number" },
56
+ { field: "perAppMaxQueued", tomlKey: "perAppMaxQueued", type: "number" },
57
+ { field: "queueTtlSeconds", tomlKey: "queueTtlSeconds", type: "number" },
58
+ { field: "dequeueOrder", tomlKey: "dequeueOrder", type: "string" },
59
+ {
60
+ field: "requiresClientApply",
61
+ tomlKey: "requiresClientApply",
62
+ type: "boolean",
63
+ },
64
+ // Create-only on the wire (#807: update sends it as a deferred second PATCH
65
+ // once the new steps are live). That sequencing is the payload builder's job.
66
+ { field: "syncCallable", tomlKey: "syncCallable", type: "boolean" },
67
+ { field: "accessRule", tomlKey: "accessRule", type: "string" },
68
+ { field: "runAs", tomlKey: "runAs", type: "string" },
69
+ // #1518/#1972 — declarative run-scoped lock. `[workflow.lock]` inline table
70
+ // on the TOML side, JSON on the wire; validated server-side by
71
+ // `parseWorkflowLock` (decision of record #6: no client-side mirror validator).
72
+ { field: "lock", tomlKey: "lock", type: "json" },
73
+ // #1078 Tier 1b — StringSetField on the model, string array in TOML/JSON.
74
+ { field: "capabilities", tomlKey: "capabilities", type: "string[]" },
75
+ ];
76
+ /**
77
+ * Fields that ARE author-controlled but do not live in the `[workflow]` table —
78
+ * they travel through their own structural channel. Kept distinct from
79
+ * `WORKFLOW_FIELDS_INTERNAL` so "internal" keeps meaning "not author-facing".
80
+ */
81
+ export const WORKFLOW_FIELDS_STRUCTURAL = new Set([
82
+ // The workflow's identity. Comes from the TOML file name / `--key`, and is
83
+ // attached by the caller rather than spread from the `[workflow]` table.
84
+ "workflowKey",
85
+ // #1304 — JSON declared-access manifest, derived from the workflow's CEL
86
+ // fields and attached alongside the steps write, not typed by the author.
87
+ "metadataManifest",
88
+ ]);
89
+ /**
90
+ * Fields the server owns: identity, ownership, timestamps, computed pointers,
91
+ * and the deprecated draft/revision slot. None of these are ever sent by the
92
+ * CLI, and none belong in workflow TOML.
93
+ */
94
+ export const WORKFLOW_FIELDS_INTERNAL = new Set([
95
+ // Identity / ownership / timestamps — assigned by the server.
96
+ "workflowId",
97
+ "appId",
98
+ "createdBy",
99
+ "createdAt",
100
+ "modifiedAt",
101
+ // Pointer to the active WorkflowConfiguration — server-computed on publish.
102
+ "activeConfigId",
103
+ // DEPRECATED in models.yaml: the legacy revision + draft slot, kept for
104
+ // migration/backward compatibility. Server-managed; never author-authored.
105
+ "latestRevision",
106
+ "stepsR2Key",
107
+ "draftStepsR2Key",
108
+ "draftInputSchema",
109
+ "draftOutputSchema",
110
+ "draftModifiedAt",
111
+ ]);
112
+ /**
113
+ * Synced fields the CLI does NOT round-trip yet — Phase 2 (#2327) wires them.
114
+ * Recorded explicitly so "classified" is never mistaken for "implemented".
115
+ * `lock` was wired by #1972; `templateMissingMarker` was removed from the
116
+ * platform by #2643, so the set is now empty.
117
+ */
118
+ export const SYNCED_NOT_YET_WIRED = new Set([]);
119
+ /** Descriptor `field` names, for coverage/parity checks. */
120
+ export const WORKFLOW_SYNCED_FIELDS = new Set(WORKFLOW_FIELD_DESCRIPTOR.map((d) => d.field));
121
+ /** Look up a synced field's descriptor by model field name. */
122
+ export function getWorkflowFieldDescriptor(field) {
123
+ return WORKFLOW_FIELD_DESCRIPTOR.find((d) => d.field === field);
124
+ }
125
+ /**
126
+ * Model fields that are classified in NONE of synced / structural / internal —
127
+ * i.e. a field someone added to `models.yaml` without deciding how the CLI
128
+ * treats it. Non-empty is a hard failure in the drift guard.
129
+ */
130
+ export function findUnclassifiedWorkflowFields(modelFields) {
131
+ return modelFields
132
+ .filter((f) => !WORKFLOW_SYNCED_FIELDS.has(f) &&
133
+ !WORKFLOW_FIELDS_STRUCTURAL.has(f) &&
134
+ !WORKFLOW_FIELDS_INTERNAL.has(f))
135
+ .sort();
136
+ }
137
+ /**
138
+ * Classifications that no longer correspond to a model field — i.e. a field
139
+ * removed from `models.yaml` while the CLI still classifies it. Also a hard
140
+ * failure: a stale classification must not silently pass, or the coverage
141
+ * claim quietly stops meaning anything.
142
+ */
143
+ export function findStaleWorkflowClassifications(modelFields) {
144
+ const known = new Set(modelFields);
145
+ return [
146
+ ...WORKFLOW_SYNCED_FIELDS,
147
+ ...WORKFLOW_FIELDS_STRUCTURAL,
148
+ ...WORKFLOW_FIELDS_INTERNAL,
149
+ ]
150
+ .filter((f) => !known.has(f))
151
+ .sort();
152
+ }
153
+ //# sourceMappingURL=workflow-field-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-field-descriptor.js","sourceRoot":"","sources":["../../../src/lib/workflow-field-descriptor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "primitive-admin",
3
- "version": "1.2.0-alpha.5",
3
+ "version": "1.2.0-alpha.6",
4
4
  "description": "CLI for administering Primitive applications",
5
5
  "type": "module",
6
6
  "bin": {
@@ -58,7 +58,7 @@
58
58
  "commander": "^12.1.0",
59
59
  "esbuild": "0.25.12",
60
60
  "inquirer": "^9.2.12",
61
- "js-bao": "0.12.0-alpha.5",
61
+ "js-bao": "0.12.0-alpha.6",
62
62
  "mime-types": "^2.1.35",
63
63
  "open": "^10.0.3",
64
64
  "smol-toml": "1.7.0",