primitive-admin 1.0.54 → 1.0.56

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/assets/skill/skills/primitive-platform/SKILL.md +230 -2
  2. package/dist/bin/primitive.js +3 -1
  3. package/dist/bin/primitive.js.map +1 -1
  4. package/dist/src/commands/apps.js +54 -2
  5. package/dist/src/commands/apps.js.map +1 -1
  6. package/dist/src/commands/database-types.js +4 -4
  7. package/dist/src/commands/database-types.js.map +1 -1
  8. package/dist/src/commands/databases.js +35 -14
  9. package/dist/src/commands/databases.js.map +1 -1
  10. package/dist/src/commands/documents.js +77 -0
  11. package/dist/src/commands/documents.js.map +1 -1
  12. package/dist/src/commands/guides.d.ts +15 -12
  13. package/dist/src/commands/guides.js +22 -15
  14. package/dist/src/commands/guides.js.map +1 -1
  15. package/dist/src/commands/metadata.js +48 -3
  16. package/dist/src/commands/metadata.js.map +1 -1
  17. package/dist/src/commands/scripts.d.ts +18 -0
  18. package/dist/src/commands/scripts.js +59 -5
  19. package/dist/src/commands/scripts.js.map +1 -1
  20. package/dist/src/commands/settings.d.ts +15 -0
  21. package/dist/src/commands/settings.js +102 -0
  22. package/dist/src/commands/settings.js.map +1 -0
  23. package/dist/src/commands/sync-app-settings.d.ts +115 -0
  24. package/dist/src/commands/sync-app-settings.js +379 -0
  25. package/dist/src/commands/sync-app-settings.js.map +1 -0
  26. package/dist/src/commands/sync.d.ts +134 -19
  27. package/dist/src/commands/sync.js +1949 -600
  28. package/dist/src/commands/sync.js.map +1 -1
  29. package/dist/src/commands/workflows.js +54 -15
  30. package/dist/src/commands/workflows.js.map +1 -1
  31. package/dist/src/lib/api-client.d.ts +29 -1
  32. package/dist/src/lib/api-client.js +31 -2
  33. package/dist/src/lib/api-client.js.map +1 -1
  34. package/dist/src/lib/app-settings-descriptor.d.ts +108 -0
  35. package/dist/src/lib/app-settings-descriptor.js +254 -0
  36. package/dist/src/lib/app-settings-descriptor.js.map +1 -0
  37. package/dist/src/lib/codegen-shared/generatedFiles.d.ts +36 -0
  38. package/dist/src/lib/codegen-shared/generatedFiles.js +67 -10
  39. package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -1
  40. package/dist/src/lib/codegen-shared/prettierStable.d.ts +262 -0
  41. package/dist/src/lib/codegen-shared/prettierStable.js +610 -0
  42. package/dist/src/lib/codegen-shared/prettierStable.js.map +1 -0
  43. package/dist/src/lib/db-codegen/dbGenerator.d.ts +11 -83
  44. package/dist/src/lib/db-codegen/dbGenerator.js +96 -556
  45. package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -1
  46. package/dist/src/lib/db-codegen/dbNaming.d.ts +20 -7
  47. package/dist/src/lib/db-codegen/dbNaming.js +31 -13
  48. package/dist/src/lib/db-codegen/dbNaming.js.map +1 -1
  49. package/dist/src/lib/db-codegen/dbTemplates.d.ts +70 -4
  50. package/dist/src/lib/db-codegen/dbTemplates.js +244 -70
  51. package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -1
  52. package/dist/src/lib/db-codegen/dbTsTypes.d.ts +13 -22
  53. package/dist/src/lib/db-codegen/dbTsTypes.js +33 -28
  54. package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -1
  55. package/dist/src/lib/db-codegen/dbTypeIR.d.ts +146 -0
  56. package/dist/src/lib/db-codegen/dbTypeIR.js +517 -0
  57. package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -0
  58. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.d.ts +112 -0
  59. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js +211 -0
  60. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js.map +1 -0
  61. package/dist/src/lib/generated-allowlist.js +7 -0
  62. package/dist/src/lib/generated-allowlist.js.map +1 -1
  63. package/dist/src/lib/platform-owned.d.ts +37 -0
  64. package/dist/src/lib/platform-owned.js +46 -0
  65. package/dist/src/lib/platform-owned.js.map +1 -0
  66. package/dist/src/lib/swift-codegen/dbGenerator.d.ts +100 -0
  67. package/dist/src/lib/swift-codegen/dbGenerator.js +682 -0
  68. package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
  69. package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
  70. package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
  71. package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
  72. package/dist/src/lib/swift-codegen/generator.d.ts +85 -0
  73. package/dist/src/lib/swift-codegen/generator.js +266 -0
  74. package/dist/src/lib/swift-codegen/generator.js.map +1 -0
  75. package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +72 -0
  76. package/dist/src/lib/swift-codegen/schemaToSwift.js +644 -0
  77. package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
  78. package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +90 -0
  79. package/dist/src/lib/swift-codegen/siblingSymbols.js +152 -0
  80. package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -0
  81. package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
  82. package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
  83. package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
  84. package/dist/src/lib/sync-resource-types.d.ts +437 -0
  85. package/dist/src/lib/sync-resource-types.js +781 -0
  86. package/dist/src/lib/sync-resource-types.js.map +1 -0
  87. package/dist/src/lib/template.d.ts +1 -1
  88. package/dist/src/lib/template.js +6 -3
  89. package/dist/src/lib/template.js.map +1 -1
  90. package/dist/src/lib/toml-metadata-config.js +18 -0
  91. package/dist/src/lib/toml-metadata-config.js.map +1 -1
  92. package/dist/src/lib/workflow-apply.js +12 -2
  93. package/dist/src/lib/workflow-apply.js.map +1 -1
  94. package/dist/src/lib/workflow-codegen/generator.d.ts +27 -5
  95. package/dist/src/lib/workflow-codegen/generator.js +214 -68
  96. package/dist/src/lib/workflow-codegen/generator.js.map +1 -1
  97. package/dist/src/lib/workflow-codegen/invokerIR.d.ts +83 -0
  98. package/dist/src/lib/workflow-codegen/invokerIR.js +71 -0
  99. package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
  100. package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +17 -1
  101. package/dist/src/lib/workflow-codegen/schemaToTs.js +59 -38
  102. package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -1
  103. package/dist/src/lib/workflow-payload.d.ts +19 -0
  104. package/dist/src/lib/workflow-payload.js +21 -0
  105. package/dist/src/lib/workflow-payload.js.map +1 -1
  106. package/dist/src/lib/workflow-toml-validator.d.ts +30 -0
  107. package/dist/src/lib/workflow-toml-validator.js +206 -0
  108. package/dist/src/lib/workflow-toml-validator.js.map +1 -1
  109. package/dist/src/types/index.d.ts +1 -0
  110. package/package.json +5 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dbGenerator.js","sourceRoot":"","sources":["../../../../src/lib/swift-codegen/dbGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Map database-type TOML field/param types → Swift `Codable` types for the
3
+ * `databases codegen --lang swift` generator (issue #1547, Phase 4).
4
+ *
5
+ * The Swift counterpart of `db-codegen/dbTsTypes.ts`. Same vocabulary, same
6
+ * fallbacks — only the emitted syntax differs:
7
+ * - record fields: `string|id|date → String`, `number → Double`,
8
+ * `boolean → Bool`, `stringset → [String]` (a StringSet serializes to a
9
+ * string array on the wire).
10
+ * - op params: `string → String`, `number → Double`, `integer → Int`
11
+ * (Fork 4 — Swift distinguishes integer from number), `boolean → Bool`,
12
+ * `object → [String: JSONValue]` (the Swift analog of the TS
13
+ * `Record<string, unknown>`), `array → [Element]`.
14
+ *
15
+ * A string `enum` on a field/param has no clean scalar analog, so — exactly
16
+ * like the JSON-Schema emitter's nested `String` enums — the RENDERER emits a
17
+ * nested `enum … : String, …` and passes its type name in here; this module
18
+ * only handles the scalar/array base mapping. An unrecognized type falls back
19
+ * to `JSONValue` (the Swift analog of TS `unknown`), never a throw, so one
20
+ * unrecognized field doesn't block codegen for the whole file.
21
+ */
22
+ /** Swift base type for a record field type (enum handled by the renderer). */
23
+ export declare function swiftTypeForDbFieldType(fieldType: string): string;
24
+ /**
25
+ * Swift type for a record field, honoring an optional nested-enum type name
26
+ * (#843). When `enumTypeName` is set the field declared a non-empty string
27
+ * `enum` and the renderer emitted a nested `String` enum of that name;
28
+ * otherwise fall back to the base mapping.
29
+ */
30
+ export declare function swiftTypeForDbField(fieldType: string, enumTypeName?: string): string;
31
+ /** Swift base type for an op-param scalar type (array/enum handled below). */
32
+ export declare function swiftTypeForDbParamScalar(paramType: string): string;
33
+ /**
34
+ * Swift type for an op param, honoring an optional nested-enum type name (#861)
35
+ * and an `array` element type (#1488). Mirrors `dbTsTypes.typeNodeForDbParamType`.
36
+ * - array param: `[Element]`, where `items` is the scalar element type (a
37
+ * string-element array with an enum renders `[EnumName]`); a missing/
38
+ * unresolved element renders `[JSONValue]`.
39
+ * - string param with an enum: the nested-enum type name.
40
+ * - otherwise the base scalar mapping.
41
+ */
42
+ export declare function swiftTypeForDbParamType(paramType: string, enumTypeName?: string, items?: string): string;
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Map database-type TOML field/param types → Swift `Codable` types for the
3
+ * `databases codegen --lang swift` generator (issue #1547, Phase 4).
4
+ *
5
+ * The Swift counterpart of `db-codegen/dbTsTypes.ts`. Same vocabulary, same
6
+ * fallbacks — only the emitted syntax differs:
7
+ * - record fields: `string|id|date → String`, `number → Double`,
8
+ * `boolean → Bool`, `stringset → [String]` (a StringSet serializes to a
9
+ * string array on the wire).
10
+ * - op params: `string → String`, `number → Double`, `integer → Int`
11
+ * (Fork 4 — Swift distinguishes integer from number), `boolean → Bool`,
12
+ * `object → [String: JSONValue]` (the Swift analog of the TS
13
+ * `Record<string, unknown>`), `array → [Element]`.
14
+ *
15
+ * A string `enum` on a field/param has no clean scalar analog, so — exactly
16
+ * like the JSON-Schema emitter's nested `String` enums — the RENDERER emits a
17
+ * nested `enum … : String, …` and passes its type name in here; this module
18
+ * only handles the scalar/array base mapping. An unrecognized type falls back
19
+ * to `JSONValue` (the Swift analog of TS `unknown`), never a throw, so one
20
+ * unrecognized field doesn't block codegen for the whole file.
21
+ */
22
+ /** Swift base type for a record field type (enum handled by the renderer). */
23
+ export function swiftTypeForDbFieldType(fieldType) {
24
+ switch (fieldType) {
25
+ case "string":
26
+ case "id":
27
+ case "date":
28
+ return "String";
29
+ case "number":
30
+ return "Double";
31
+ case "boolean":
32
+ return "Bool";
33
+ case "stringset":
34
+ // A StringSet serializes to a string array on the wire.
35
+ return "[String]";
36
+ default:
37
+ return "JSONValue";
38
+ }
39
+ }
40
+ /**
41
+ * Swift type for a record field, honoring an optional nested-enum type name
42
+ * (#843). When `enumTypeName` is set the field declared a non-empty string
43
+ * `enum` and the renderer emitted a nested `String` enum of that name;
44
+ * otherwise fall back to the base mapping.
45
+ */
46
+ export function swiftTypeForDbField(fieldType, enumTypeName) {
47
+ if (fieldType === "string" && enumTypeName)
48
+ return enumTypeName;
49
+ return swiftTypeForDbFieldType(fieldType);
50
+ }
51
+ /** Swift base type for an op-param scalar type (array/enum handled below). */
52
+ export function swiftTypeForDbParamScalar(paramType) {
53
+ switch (paramType) {
54
+ case "string":
55
+ return "String";
56
+ case "number":
57
+ return "Double";
58
+ // Fork 4: Swift can distinguish integer from number; the TS emitter widens
59
+ // both to `number`, but Swift maps `integer → Int`.
60
+ case "integer":
61
+ return "Int";
62
+ case "boolean":
63
+ return "Bool";
64
+ case "object":
65
+ // The Swift analog of the TS `Record<string, unknown>`.
66
+ return "[String: JSONValue]";
67
+ default:
68
+ return "JSONValue";
69
+ }
70
+ }
71
+ /**
72
+ * Swift type for an op param, honoring an optional nested-enum type name (#861)
73
+ * and an `array` element type (#1488). Mirrors `dbTsTypes.typeNodeForDbParamType`.
74
+ * - array param: `[Element]`, where `items` is the scalar element type (a
75
+ * string-element array with an enum renders `[EnumName]`); a missing/
76
+ * unresolved element renders `[JSONValue]`.
77
+ * - string param with an enum: the nested-enum type name.
78
+ * - otherwise the base scalar mapping.
79
+ */
80
+ export function swiftTypeForDbParamType(paramType, enumTypeName, items) {
81
+ if (paramType === "array") {
82
+ let elem;
83
+ if (items === "string" && enumTypeName) {
84
+ elem = enumTypeName;
85
+ }
86
+ else if (items) {
87
+ // The element type is always scalar here, so this never re-enters the
88
+ // array branch.
89
+ elem = swiftTypeForDbParamScalar(items);
90
+ }
91
+ else {
92
+ elem = "JSONValue";
93
+ }
94
+ return `[${elem}]`;
95
+ }
96
+ if (paramType === "string" && enumTypeName)
97
+ return enumTypeName;
98
+ return swiftTypeForDbParamScalar(paramType);
99
+ }
100
+ //# sourceMappingURL=dbSwiftTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dbSwiftTypes.js","sourceRoot":"","sources":["../../../../src/lib/swift-codegen/dbSwiftTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB,KAAK,WAAW;YACd,wDAAwD;YACxD,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,YAAqB;IAErB,IAAI,SAAS,KAAK,QAAQ,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAChE,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,2EAA2E;QAC3E,oDAAoD;QACpD,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB,KAAK,QAAQ;YACX,wDAAwD;YACxD,OAAO,qBAAqB,CAAC;QAC/B;YACE,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAiB,EACjB,YAAqB,EACrB,KAAc;IAEd,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,IAAI,IAAY,CAAC;QACjB,IAAI,KAAK,KAAK,QAAQ,IAAI,YAAY,EAAE,CAAC;YACvC,IAAI,GAAG,YAAY,CAAC;QACtB,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YACjB,sEAAsE;YACtE,gBAAgB;YAChB,IAAI,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,WAAW,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,IAAI,GAAG,CAAC;IACrB,CAAC;IACD,IAAI,SAAS,KAAK,QAAQ,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAChE,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * `workflows codegen --lang swift` orchestrator (issue #1547, Phases 2-3).
3
+ *
4
+ * The Swift counterpart of `workflow-codegen/generator.ts`. Reads the SAME
5
+ * synced workflow TOMLs (`.primitive/sync/<env>/<appId>/workflows/*.toml`) and
6
+ * emits ONE `<key>.generated.swift` per workflow. Each file carries the
7
+ * workflow's `<Key>Input`/`<Key>Output` Swift `Codable` types (Phase 1's
8
+ * `renderSwiftRootType`) plus — Phase 3 — a typed invoker factory: a free
9
+ * function `func <key>(_ client:) -> <Key>Workflow` returning a struct with
10
+ * `async throws` `runSync`/`start`/`getStatus` methods (Fork 2 = A). The
11
+ * factory binds `<Key>Input`/`<Key>Output` over the additive generic overloads
12
+ * on `WorkflowsAPI` (the only published SDK surface).
13
+ *
14
+ * Design decisions realized (maintainer decision, issue #1547):
15
+ * - Schemas are interpreted through the SAME drift-guarded descriptor the TS
16
+ * emitter reads (Fork 1 = A), via `renderSwiftRootType`, so a generated
17
+ * Swift type can never promise a shape the runtime validator rejects.
18
+ * - Operation metadata (key, `syncCallable`, required-vs-optional `input`) is
19
+ * read from the SHARED `describeWorkflowInvoker` IR — the SAME source the TS
20
+ * invoker uses. The Swift renderer reconstructs none of it (#1547 binding 5),
21
+ * so the two clients can never disagree on which operations a workflow
22
+ * exposes or whether its input is required.
23
+ * - `runSync` is emitted ONLY for `syncCallable: true` workflows (the server
24
+ * rejects run-sync otherwise), matching the TS factory. `start` + `getStatus`
25
+ * are emitted for every non-reserved workflow.
26
+ * - Disk lifecycle (write / `--check` / orphan cleanup) delegates to the shared
27
+ * `writeOrCheckGeneratedFiles`, scoped by an ownership BANNER (the "banner
28
+ * namespacing" edge case) so a shared Swift output dir stays safe.
29
+ */
30
+ import { type WriteOrCheckResult } from "../codegen-shared/generatedFiles.js";
31
+ /** Suffix identifying a generated Swift file. */
32
+ export declare const GENERATED_SWIFT_FILE_SUFFIX = ".generated.swift";
33
+ /**
34
+ * Banner prefix stamped at the top of every CLI-emitted `.generated.swift`
35
+ * file. Deliberately DISTINCT from the Swift model codegen's
36
+ * `// Generated by swift-bao-codegen` header so that:
37
+ * - the model codegen's stale-sweep (which only removes files starting with
38
+ * its own header) never deletes these; and
39
+ * - this generator's cleanup (scoped to this prefix) never deletes a
40
+ * model-codegen file that shares the `.generated.swift` suffix.
41
+ * The prefix is common to every workflow file, so it is a safe ownership key.
42
+ */
43
+ export declare const SWIFT_BANNER_PREFIX = "// AUTO-GENERATED FROM workflows/";
44
+ export interface WorkflowSwiftCodegenInput {
45
+ /** Source `.toml` filename stem (fallback key when `[workflow].key` is absent). */
46
+ fileStem: string;
47
+ /** Path to the source `workflows/<key>.toml` file. */
48
+ tomlPath: string;
49
+ /** Raw TOML content (already read from disk). */
50
+ tomlContent: string;
51
+ }
52
+ export interface GenerateWorkflowSwiftTypesOptions {
53
+ inputs: WorkflowSwiftCodegenInput[];
54
+ /** Directory where the `<key>.generated.swift` files are written. */
55
+ outputDir: string;
56
+ /** `--check`: compare against disk, do not write. */
57
+ check?: boolean;
58
+ /**
59
+ * Set when the run was filtered to a single workflow key. `inputs` is then a
60
+ * PARTIAL view, so orphan cleanup / stale detection is scoped to the filtered
61
+ * file and must not touch sibling `*.generated.swift` files. Mirrors the TS
62
+ * generator's `singleWorkflow`.
63
+ */
64
+ singleWorkflow?: boolean;
65
+ }
66
+ /** PascalCase, sanitized, non-keyword base type name for a workflow key.
67
+ * `create-checkout-session` → `CreateCheckoutSession`; `123-job` → `_123Job`
68
+ * (digit-leading prefixed, parity with the TS `ensureValidIdentifierStart`). */
69
+ export declare function workflowSwiftTypeBaseName(key: string): string;
70
+ /**
71
+ * Render the full `<key>.generated.swift` content for a single workflow TOML.
72
+ * Returns null for a reserved (`__internal.*`) workflow. Pure — exported so
73
+ * tests can assert on the string directly.
74
+ */
75
+ export declare function renderWorkflowSwiftFile(input: WorkflowSwiftCodegenInput): {
76
+ key: string;
77
+ content: string;
78
+ symbols: string[];
79
+ } | null;
80
+ /**
81
+ * Run Swift workflow codegen end-to-end. One `<key>.generated.swift` per
82
+ * workflow; delegates the disk lifecycle to the shared writer/checker with
83
+ * banner-scoped ownership so a shared Swift output dir stays safe.
84
+ */
85
+ export declare function generateWorkflowSwiftTypes(options: GenerateWorkflowSwiftTypesOptions): Promise<WriteOrCheckResult>;
@@ -0,0 +1,266 @@
1
+ /**
2
+ * `workflows codegen --lang swift` orchestrator (issue #1547, Phases 2-3).
3
+ *
4
+ * The Swift counterpart of `workflow-codegen/generator.ts`. Reads the SAME
5
+ * synced workflow TOMLs (`.primitive/sync/<env>/<appId>/workflows/*.toml`) and
6
+ * emits ONE `<key>.generated.swift` per workflow. Each file carries the
7
+ * workflow's `<Key>Input`/`<Key>Output` Swift `Codable` types (Phase 1's
8
+ * `renderSwiftRootType`) plus — Phase 3 — a typed invoker factory: a free
9
+ * function `func <key>(_ client:) -> <Key>Workflow` returning a struct with
10
+ * `async throws` `runSync`/`start`/`getStatus` methods (Fork 2 = A). The
11
+ * factory binds `<Key>Input`/`<Key>Output` over the additive generic overloads
12
+ * on `WorkflowsAPI` (the only published SDK surface).
13
+ *
14
+ * Design decisions realized (maintainer decision, issue #1547):
15
+ * - Schemas are interpreted through the SAME drift-guarded descriptor the TS
16
+ * emitter reads (Fork 1 = A), via `renderSwiftRootType`, so a generated
17
+ * Swift type can never promise a shape the runtime validator rejects.
18
+ * - Operation metadata (key, `syncCallable`, required-vs-optional `input`) is
19
+ * read from the SHARED `describeWorkflowInvoker` IR — the SAME source the TS
20
+ * invoker uses. The Swift renderer reconstructs none of it (#1547 binding 5),
21
+ * so the two clients can never disagree on which operations a workflow
22
+ * exposes or whether its input is required.
23
+ * - `runSync` is emitted ONLY for `syncCallable: true` workflows (the server
24
+ * rejects run-sync otherwise), matching the TS factory. `start` + `getStatus`
25
+ * are emitted for every non-reserved workflow.
26
+ * - Disk lifecycle (write / `--check` / orphan cleanup) delegates to the shared
27
+ * `writeOrCheckGeneratedFiles`, scoped by an ownership BANNER (the "banner
28
+ * namespacing" edge case) so a shared Swift output dir stays safe.
29
+ */
30
+ import * as path from "path";
31
+ import { writeOrCheckGeneratedFiles, } from "../codegen-shared/generatedFiles.js";
32
+ import { fingerprintToml } from "../db-codegen/dbFingerprint.js";
33
+ import { describeWorkflowInvoker } from "../workflow-codegen/invokerIR.js";
34
+ import { renderSwiftRootType, SwiftCodegenError } from "./schemaToSwift.js";
35
+ import { structTypeName, workflowSwiftFactoryName } from "./swiftNaming.js";
36
+ // Foreign banner guarded against when a workflow run shares an output dir with
37
+ // the database Swift generator (issue #1653, class 3b). Function-time use only,
38
+ // so the generator.ts ↔ dbGenerator.ts import cycle resolves safely.
39
+ import { DB_SWIFT_BANNER_PREFIX } from "./dbGenerator.js";
40
+ import { assertNoRetainedSiblingCollision, assertNoForeignGeneratorSymbolCollision, } from "./siblingSymbols.js";
41
+ /** Suffix identifying a generated Swift file. */
42
+ export const GENERATED_SWIFT_FILE_SUFFIX = ".generated.swift";
43
+ /**
44
+ * Banner prefix stamped at the top of every CLI-emitted `.generated.swift`
45
+ * file. Deliberately DISTINCT from the Swift model codegen's
46
+ * `// Generated by swift-bao-codegen` header so that:
47
+ * - the model codegen's stale-sweep (which only removes files starting with
48
+ * its own header) never deletes these; and
49
+ * - this generator's cleanup (scoped to this prefix) never deletes a
50
+ * model-codegen file that shares the `.generated.swift` suffix.
51
+ * The prefix is common to every workflow file, so it is a safe ownership key.
52
+ */
53
+ export const SWIFT_BANNER_PREFIX = "// AUTO-GENERATED FROM workflows/";
54
+ /** The Swift module the generated types + invoker import (`JSONValue`,
55
+ * `JsBaoClient`, the `WorkflowsAPI` generics, and the typed result structs all
56
+ * live there). */
57
+ const CLIENT_MODULE = "JsBaoClient";
58
+ const INDENT = " ";
59
+ /** PascalCase, sanitized, non-keyword base type name for a workflow key.
60
+ * `create-checkout-session` → `CreateCheckoutSession`; `123-job` → `_123Job`
61
+ * (digit-leading prefixed, parity with the TS `ensureValidIdentifierStart`). */
62
+ export function workflowSwiftTypeBaseName(key) {
63
+ return structTypeName(key);
64
+ }
65
+ /**
66
+ * Parse a single workflow TOML into the data the Swift emitter needs. The
67
+ * operation metadata comes from the SHARED `describeWorkflowInvoker` IR (the
68
+ * SAME source the TS invoker uses); only the Swift-specific naming +
69
+ * type-declaration rendering happens here. Throws on malformed schema JSON
70
+ * (fail-and-exit). Returns null for a reserved workflow.
71
+ */
72
+ function parseWorkflow(input) {
73
+ const ir = describeWorkflowInvoker({
74
+ fileStem: input.fileStem,
75
+ tomlContent: input.tomlContent,
76
+ });
77
+ if (!ir)
78
+ return null; // reserved workflow
79
+ const base = workflowSwiftTypeBaseName(ir.key);
80
+ const inputTypeName = `${base}Input`;
81
+ const outputTypeName = `${base}Output`;
82
+ const sourceFile = `workflows/${ir.key}.toml`;
83
+ return {
84
+ key: ir.key,
85
+ base,
86
+ inputTypeName,
87
+ outputTypeName,
88
+ syncCallable: ir.syncCallable,
89
+ inputRequired: ir.inputRequired,
90
+ inputDecl: renderSwiftRootType(inputTypeName, ir.inputSchema, { sourceFile }),
91
+ outputDecl: renderSwiftRootType(outputTypeName, ir.outputSchema, {
92
+ sourceFile,
93
+ }),
94
+ };
95
+ }
96
+ /** A Swift string literal for the workflow key (runtime call passes it verbatim). */
97
+ function swiftKeyLiteral(key) {
98
+ const escaped = key
99
+ .replace(/\\/g, "\\\\")
100
+ .replace(/"/g, '\\"')
101
+ .replace(/\n/g, "\\n")
102
+ .replace(/\r/g, "\\r")
103
+ .replace(/\t/g, "\\t");
104
+ return `"${escaped}"`;
105
+ }
106
+ /**
107
+ * Render the typed Swift invoker for one workflow (Fork 2 = A): a free function
108
+ * returning a small struct with `async throws` methods, mirroring the JS
109
+ * factory. `runSync` is emitted only when the shared IR says `syncCallable`;
110
+ * `start` + `getStatus` always. The `input` argument is required or optional
111
+ * per the shared IR's `inputRequired` (the SAME decision the TS factory makes).
112
+ *
113
+ * Each method delegates to the additive generic overloads on `WorkflowsAPI`
114
+ * (`runSync<Input,Output>` / `start<Input>` / `getStatus<Output>`), binding
115
+ * `<Key>Input`/`<Key>Output`. Those overloads are the only published SDK
116
+ * surface; this generated struct is app-target code.
117
+ */
118
+ function renderInvoker(wf) {
119
+ const structName = `${wf.base}Workflow`;
120
+ const factoryName = workflowSwiftFactoryName(wf.key);
121
+ const keyLiteral = swiftKeyLiteral(wf.key);
122
+ // Required `input` → `input: <Key>Input`; optional → `input: <Key>Input? = nil`.
123
+ // The generic overloads take `Input?`, so a required value auto-promotes and
124
+ // an omitted optional sends the server `{}` (parity with the JS `input ?? {}`).
125
+ const inputParam = wf.inputRequired
126
+ ? `input: ${wf.inputTypeName}`
127
+ : `input: ${wf.inputTypeName}? = nil`;
128
+ const lines = [];
129
+ lines.push(`/// Typed invoker for the \`${wf.key}\` workflow. Bind its \`${wf.inputTypeName}\` /`, `/// \`${wf.outputTypeName}\` over the generic \`WorkflowsAPI\` overloads. Obtain one`, `/// with \`${factoryName}(client)\`.`, `public struct ${structName}: Sendable {`, `${INDENT}public let client: JsBaoClient`, ``, `${INDENT}public init(client: JsBaoClient) {`, `${INDENT}${INDENT}self.client = client`, `${INDENT}}`);
130
+ if (wf.syncCallable) {
131
+ lines.push(``, `${INDENT}/// Run the workflow synchronously and wait for its terminal status.`, `${INDENT}/// Emitted only because \`${wf.key}\` is \`syncCallable\` (parity with JS).`, `${INDENT}public func runSync(`, `${INDENT}${INDENT}${inputParam},`, `${INDENT}${INDENT}runKey: String? = nil,`, `${INDENT}${INDENT}contextDocId: String? = nil,`, `${INDENT}${INDENT}meta: [String: Any]? = nil,`, `${INDENT}${INDENT}timeoutMs: Int? = nil`, `${INDENT}) async throws -> RunSyncResult<${wf.outputTypeName}> {`, `${INDENT}${INDENT}try await client.workflows.runSync(`, `${INDENT}${INDENT}${INDENT}workflowKey: ${keyLiteral},`, `${INDENT}${INDENT}${INDENT}input: input,`, `${INDENT}${INDENT}${INDENT}runKey: runKey,`, `${INDENT}${INDENT}${INDENT}contextDocId: contextDocId,`, `${INDENT}${INDENT}${INDENT}meta: meta,`, `${INDENT}${INDENT}${INDENT}timeoutMs: timeoutMs`, `${INDENT}${INDENT})`, `${INDENT}}`);
132
+ }
133
+ lines.push(``, `${INDENT}/// Start the workflow asynchronously; returns the run handle.`, `${INDENT}@discardableResult`, `${INDENT}public func start(`, `${INDENT}${INDENT}${inputParam},`, `${INDENT}${INDENT}runKey: String? = nil,`, `${INDENT}${INDENT}contextDocId: String? = nil,`, `${INDENT}${INDENT}meta: [String: Any]? = nil,`, `${INDENT}${INDENT}forceRerun: Bool? = nil`, `${INDENT}) async throws -> StartWorkflowResult {`, `${INDENT}${INDENT}try await client.workflows.start(`, `${INDENT}${INDENT}${INDENT}workflowKey: ${keyLiteral},`, `${INDENT}${INDENT}${INDENT}input: input,`, `${INDENT}${INDENT}${INDENT}runKey: runKey,`, `${INDENT}${INDENT}${INDENT}contextDocId: contextDocId,`, `${INDENT}${INDENT}${INDENT}meta: meta,`, `${INDENT}${INDENT}${INDENT}forceRerun: forceRerun`, `${INDENT}${INDENT})`, `${INDENT}}`);
134
+ lines.push(``, `${INDENT}/// Fetch a run's status with a typed \`output\` bound to \`${wf.outputTypeName}\`.`, `${INDENT}public func getStatus(`, `${INDENT}${INDENT}runKey: String,`, `${INDENT}${INDENT}contextDocId: String? = nil`, `${INDENT}) async throws -> WorkflowStatus<${wf.outputTypeName}> {`, `${INDENT}${INDENT}try await client.workflows.getStatus(`, `${INDENT}${INDENT}${INDENT}workflowKey: ${keyLiteral},`, `${INDENT}${INDENT}${INDENT}runKey: runKey,`, `${INDENT}${INDENT}${INDENT}contextDocId: contextDocId`, `${INDENT}${INDENT})`, `${INDENT}}`);
135
+ lines.push(`}`);
136
+ // The free-function factory (Fork 2 = A call shape: `<key>(client).runSync(...)`).
137
+ lines.push(``, `/// Typed invoker factory for the \`${wf.key}\` workflow.`, `public func ${factoryName}(_ client: JsBaoClient) -> ${structName} {`, `${INDENT}${structName}(client: client)`, `}`);
138
+ return lines.join("\n");
139
+ }
140
+ /**
141
+ * Render the full `<key>.generated.swift` content for a single workflow TOML.
142
+ * Returns null for a reserved (`__internal.*`) workflow. Pure — exported so
143
+ * tests can assert on the string directly.
144
+ */
145
+ export function renderWorkflowSwiftFile(input) {
146
+ const wf = parseWorkflow(input);
147
+ if (!wf)
148
+ return null;
149
+ const fingerprint = fingerprintToml(input.tomlContent);
150
+ const banner = [
151
+ `// AUTO-GENERATED FROM workflows/${wf.key}.toml — DO NOT EDIT.`,
152
+ "// Run `primitive workflows codegen --lang swift` to regenerate.",
153
+ `// fingerprint: ${fingerprint}`,
154
+ ].join("\n");
155
+ const imports = ["import Foundation", `import ${CLIENT_MODULE}`].join("\n");
156
+ const content = [banner, imports, wf.inputDecl, wf.outputDecl, renderInvoker(wf)].join("\n\n") + "\n";
157
+ // Every top-level Swift symbol this file declares: the `<Key>Input` /
158
+ // `<Key>Output` types, the `<Key>Workflow` invoker struct, and its
159
+ // free-function factory. Enumerating ALL of them (issue #1653, Codex
160
+ // refinement) lets the run-scoped registry catch a cross-workflow collision on
161
+ // any of them, not just Input/Output.
162
+ const symbols = [
163
+ wf.inputTypeName,
164
+ wf.outputTypeName,
165
+ `${wf.base}Workflow`,
166
+ workflowSwiftFactoryName(wf.key),
167
+ ];
168
+ return { key: wf.key, content, symbols };
169
+ }
170
+ /**
171
+ * Run Swift workflow codegen end-to-end. One `<key>.generated.swift` per
172
+ * workflow; delegates the disk lifecycle to the shared writer/checker with
173
+ * banner-scoped ownership so a shared Swift output dir stays safe.
174
+ */
175
+ export async function generateWorkflowSwiftTypes(options) {
176
+ const outAbs = path.resolve(options.outputDir);
177
+ // Run-scoped registry: emitted top-level Swift symbol → the workflow key that
178
+ // emitted it. Two DIFFERENT keys emitting the same symbol redeclare when all
179
+ // `.generated.swift` files compile into one module (issue #1653, class 1).
180
+ const symbolOwner = new Map();
181
+ const filesToWrite = new Map();
182
+ for (const input of options.inputs) {
183
+ const rendered = renderWorkflowSwiftFile(input);
184
+ if (!rendered)
185
+ continue; // reserved workflow — no file, no symbols
186
+ for (const symbol of rendered.symbols) {
187
+ const prior = symbolOwner.get(symbol);
188
+ if (prior !== undefined && prior !== rendered.key) {
189
+ throw new SwiftCodegenError(`swift workflow codegen: type-name collision — workflow keys ` +
190
+ `"${prior}" and "${rendered.key}" both produce Swift type ` +
191
+ `"${symbol}", which redeclare when all .generated.swift files ` +
192
+ `compile into one module. Rename one workflow key so the two differ ` +
193
+ `after Swift PascalCase normalization.`, { sourceFile: `workflows/${rendered.key}.toml` });
194
+ }
195
+ symbolOwner.set(symbol, rendered.key);
196
+ }
197
+ const filePath = path.join(outAbs, `${rendered.key}${GENERATED_SWIFT_FILE_SUFFIX}`);
198
+ filesToWrite.set(filePath, rendered.content);
199
+ }
200
+ // Filtered-run sibling collision (issue #1653, class 1 for `--single` runs).
201
+ // A `singleWorkflow` run renders only the selected key; its retained sibling
202
+ // `.generated.swift` files stay on disk but never enter `symbolOwner` above,
203
+ // so a symbol this run emits could still redeclare against a sibling once
204
+ // every file compiles into one module. The foreign-banner write guard does NOT
205
+ // cover this (siblings carry the SAME banner and a different filename, so there
206
+ // is no path or banner collision). Compare against the retained siblings' own
207
+ // declared symbols — no persistent manifest (sponsor decision #1).
208
+ if (options.singleWorkflow === true) {
209
+ await assertNoRetainedSiblingCollision({
210
+ outputDir: outAbs,
211
+ ownershipBanner: SWIFT_BANNER_PREFIX,
212
+ suffix: GENERATED_SWIFT_FILE_SUFFIX,
213
+ emitted: symbolOwner,
214
+ ownPaths: filesToWrite.keys(),
215
+ makeError: ({ symbol, owner, siblingStem }) => new SwiftCodegenError(`swift workflow codegen: type-name collision with a retained sibling — ` +
216
+ `workflow key "${owner}" (this run) and the existing ` +
217
+ `"${siblingStem}${GENERATED_SWIFT_FILE_SUFFIX}" both declare Swift ` +
218
+ `symbol "${symbol}", which redeclares when all .generated.swift files ` +
219
+ `compile into one module. A filtered (single-workflow) run does not ` +
220
+ `regenerate siblings, so both files coexist. Rename one workflow key, ` +
221
+ `or regenerate the whole output directory.`, { sourceFile: `workflows/${owner}.toml` }),
222
+ });
223
+ }
224
+ // Cross-generator namespace collision (issue #1857), the mirror of the check
225
+ // in the DB generator. A workflow's top-level symbol (`<Key>Input`, etc.) can
226
+ // match the namespace enum name a DATABASE-generated file already declares in
227
+ // a shared output dir — e.g. workflow `foo` emits a top-level struct `FooInput`
228
+ // while db type `foo-input` emits `public enum FooInput`. Their filenames
229
+ // differ, so the foreign-banner WRITE guard below (path-only) never trips, and
230
+ // the retained-sibling guard above only scans workflow-owned files. This scan
231
+ // reads the DB-owned siblings' declared top-level symbols and throws if any of
232
+ // this run's emitted symbols collides. It runs on every workflow run (not just
233
+ // filtered), because a full workflow run does not regenerate DB files — they
234
+ // coexist regardless of ordering.
235
+ await assertNoForeignGeneratorSymbolCollision({
236
+ outputDir: outAbs,
237
+ foreignBanner: DB_SWIFT_BANNER_PREFIX,
238
+ suffix: GENERATED_SWIFT_FILE_SUFFIX,
239
+ emitted: symbolOwner,
240
+ makeError: ({ symbol, owner, siblingStem }) => new SwiftCodegenError(`swift workflow codegen: type-name collision with a database-generated ` +
241
+ `file — workflow key "${owner}" emits Swift type "${symbol}", but the ` +
242
+ `existing "${siblingStem}${GENERATED_SWIFT_FILE_SUFFIX}" (owned by the ` +
243
+ `database Swift generator) already declares a top-level "${symbol}" in ` +
244
+ `the same output directory, which redeclares when all .generated.swift ` +
245
+ `files compile into one module. Rename the workflow or the ` +
246
+ `"${siblingStem}" database type so the two differ after Swift ` +
247
+ `normalization, or give one generator a separate --output directory.`, { sourceFile: `workflows/${owner}.toml` }),
248
+ });
249
+ return await writeOrCheckGeneratedFiles({
250
+ outputDir: outAbs,
251
+ filesToWrite,
252
+ check: options.check,
253
+ fullOwnership: options.singleWorkflow !== true,
254
+ generatedSuffix: GENERATED_SWIFT_FILE_SUFFIX,
255
+ ownershipBanner: SWIFT_BANNER_PREFIX,
256
+ // Class 3b: never clobber a file owned by the database Swift generator.
257
+ foreignOwnershipBanners: [DB_SWIFT_BANNER_PREFIX],
258
+ onForeignBannerCollision: ({ filePath, foreignBanner }) => new SwiftCodegenError(`swift codegen: output collision — this run would overwrite ` +
259
+ `"${path.basename(filePath)}" in the shared output directory, which ` +
260
+ `is already owned by a different generator (banner ` +
261
+ `"${foreignBanner.trim()}"). A workflow key and a database type with ` +
262
+ `the same name cannot share an output directory; give one generator a ` +
263
+ `separate --output directory.`),
264
+ });
265
+ }
266
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/lib/swift-codegen/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * JSON-Schema → Swift `Codable` converter for `swift-codegen` (issue #1547,
3
+ * Phase 1). The Swift counterpart of `workflow-codegen/schemaToTs.ts`.
4
+ *
5
+ * Both emitters read the SAME drift-guarded interpretation of the JSON-Schema
6
+ * subset the workflow platform supports — the vendored `SchemaDescriptor`
7
+ * (`workflow-codegen/generated-schema-descriptor.ts`, a byte copy of the server
8
+ * validator). Only the emitted syntax differs, so a generated Swift type can
9
+ * never promise a shape the runtime validator rejects. See the design and
10
+ * maintainer decision on issue #1547.
11
+ *
12
+ * Where Swift diverges from TypeScript:
13
+ *
14
+ * - **Named types, not anonymous.** TS renders nested object/enum/`oneOf`
15
+ * types inline; Swift `Codable` needs a NAMED `struct`/`enum` for each, so
16
+ * this emitter declares nested types inside their enclosing type.
17
+ * - **Scalars** (Fork 4, maintainer-confirmed): `string`→`String`,
18
+ * `number`→`Double`, `integer`→`Int` (ergonomic divergence from TS
19
+ * `number`), `boolean`→`Bool`.
20
+ * - **Un-descended nodes** (`$ref`, `allOf`, `format`, tuple `items`,
21
+ * `patternProperties`, numeric constraints, multi-scalar non-null unions,
22
+ * mixed-type enums, open-object extra values) → `JSONValue`, the Swift
23
+ * analog of TS `unknown`.
24
+ * - **`never`** (an uninhabitable enum after the type gate) → a strict codegen
25
+ * error, since the field can never be constructed (Fork 4).
26
+ * - **Scalar `enum`, all strings** → a nested `enum … : String, Codable,
27
+ * CaseIterable, Sendable`, the same form the Swift model codegen emits.
28
+ * - **`oneOf` discriminated union** → an `enum` with associated values plus a
29
+ * generated `init(from:)`/`encode(to:)` keyed on the discriminator.
30
+ *
31
+ * Codable semantics adopted from the maintainer decision (binding item 4):
32
+ *
33
+ * - Every generated `struct` gets a generated **public memberwise
34
+ * initializer** (Swift's synthesized memberwise init is not `public` across
35
+ * module boundaries).
36
+ * - A **required-nullable** property (required, but its value may be `null`)
37
+ * is encoded with an EXPLICIT null (not omitted) so server-side
38
+ * required-key validation still sees the key; decode is lenient (a missing
39
+ * key decodes to `nil`).
40
+ * - An **open object** stores unknown keys in an `extra: [String: JSONValue]`
41
+ * catch-all via custom Codable that separates known keys from extras; a key
42
+ * that collides with a known property is owned by the known property (the
43
+ * extra copy is dropped on encode, and never captured on decode).
44
+ * - A `oneOf` branch `struct` CARRIES the discriminator as a single-case
45
+ * `String` enum property, so decoding a branch rejects a conflicting
46
+ * discriminator value, and encoding re-emits the tag from the branch.
47
+ *
48
+ * Errors are named (`SwiftCodegenError`) and carry the source file and schema
49
+ * path for diagnostics (binding item 6).
50
+ */
51
+ import { schemaRejectsEmptyObject } from "../workflow-codegen/schemaToTs.js";
52
+ /** Re-exported so the invoker phases share ONE required-vs-optional decision. */
53
+ export { schemaRejectsEmptyObject };
54
+ /** A named codegen error carrying the source file + schema path (binding 6). */
55
+ export declare class SwiftCodegenError extends Error {
56
+ readonly sourceFile?: string;
57
+ readonly schemaPath?: string;
58
+ constructor(message: string, opts?: {
59
+ sourceFile?: string;
60
+ schemaPath?: string;
61
+ });
62
+ }
63
+ export interface SwiftCodegenContext {
64
+ /** The `.toml`/schema file this type was generated from, for diagnostics. */
65
+ sourceFile?: string;
66
+ }
67
+ /**
68
+ * Render a full Swift type declaration for a ROOT schema (e.g. a workflow's
69
+ * `<Key>Input`/`<Key>Output`), including every nested type it needs. Returns the
70
+ * Swift source for the type only — the CLI adds the import/banner (Phase 2).
71
+ */
72
+ export declare function renderSwiftRootType(rootTypeName: string, schema: any, ctx?: SwiftCodegenContext): string;