@octaviaflow/flow-rules 0.10.0 → 0.11.1

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.
@@ -54,13 +54,12 @@ export interface ConfigContract {
54
54
  };
55
55
  }
56
56
  /**
57
- * Every action that has a `config.ts`. Keyed by action id.
58
- *
59
- * Fourteen actions have no contract yet (group, ai_agent, idp_extract, the
60
- * file-format and storage actions, connector_trigger). For those,
61
- * `contractFor` returns undefined and consumers fall back to `inputSchema`
62
- * alone — which is exactly what they did before, so nothing regresses. Adding a
63
- * contract for one of them is a `config.ts` plus one line here.
57
+ * Every action in the catalog, keyed by action id — since 0.11.0 all 37
58
+ * definitions carry one (the last fifteen: group, ai_agent, idp_extract,
59
+ * connector_trigger, the five file-format actions and the six storage
60
+ * actions). `contractFor` is undefined only for an id the catalog does not
61
+ * know, and then consumers fall back to `inputSchema` alone. A new action is
62
+ * a `config.ts` plus one line here; the drift test covers it from then on.
64
63
  */
65
64
  export declare const CONFIG_CONTRACTS: Readonly<Record<string, ConfigContract>>;
66
65
  export declare function contractFor(actionId: string | undefined): ConfigContract | undefined;
@@ -33,8 +33,26 @@
33
33
  * An enumerated field's options are checked but only WARN, for the same
34
34
  * reason — see the note at that check.
35
35
  */
36
+ import { type FieldConfig } from "../catalog/types";
36
37
  /** Largest config a single step may carry, serialised. */
37
38
  export declare const MAX_STEP_CONFIG_BYTES: number;
39
+ /**
40
+ * Keys that belong to the PLATFORM, not to any action — on nearly every step,
41
+ * declared by no contract, and rightly so:
42
+ *
43
+ * - `flowId`: NodeConfigPanel seeds every custom panel's config with the flow
44
+ * it belongs to, and it is saved with the step;
45
+ * - `outputAs`: the Engine reads it for EVERY step type — the step's key in
46
+ * the run's data bag.
47
+ *
48
+ * Type-checked like a declared field; never reported as undeclared; never
49
+ * advertised by `contractFieldsFor` (an agent is told the action's own keys).
50
+ * Before this, every panel-built step raised one to four UNDECLARED_FIELD
51
+ * warnings for these and the editor's own `_` snapshots, which drowned the
52
+ * warnings that mean something — `connection` on a storage step, `message` on
53
+ * a Slack step (DEV-412).
54
+ */
55
+ export declare const PLATFORM_CONFIG_KEYS: Readonly<Record<string, FieldConfig>>;
38
56
  export type ConfigIssueCode = "FORBIDDEN_KEY" | "CONFIG_TOO_LARGE" | "CONFIG_TOO_DEEP" | "FIELD_WRONG_TYPE" | "FIELD_BAD_OPTION" | "UNDECLARED_FIELD";
39
57
  export interface ConfigIssue {
40
58
  severity: "error" | "warning";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@octaviaflow/flow-rules",
3
- "version": "0.10.0",
3
+ "version": "0.11.1",
4
4
  "description": "The flow action catalog and the rules engine behind Flow Doctor — one definition of what a step accepts and what makes a flow valid, shared by the editor and the server",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",