@contractspec/example.integration-stripe 1.44.1 → 1.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,32 +6,32 @@ $ tsdown
6
6
  ℹ tsconfig: tsconfig.json
7
7
  ℹ Build start
8
8
  ℹ Cleaning 28 files
9
- ℹ dist/blueprint.js 1.68 kB │ gzip: 0.73 kB
9
+ ℹ dist/blueprint.js 1.72 kB │ gzip: 0.73 kB
10
10
  ℹ dist/docs/integration-stripe.docblock.js 1.59 kB │ gzip: 0.74 kB
11
- ℹ dist/workflow.js 1.33 kB │ gzip: 0.57 kB
12
- ℹ dist/tenant.js 1.28 kB │ gzip: 0.63 kB
13
- ℹ dist/example.js 0.89 kB │ gzip: 0.47 kB
11
+ ℹ dist/workflow.js 1.35 kB │ gzip: 0.57 kB
12
+ ℹ dist/tenant.js 1.29 kB │ gzip: 0.63 kB
13
+ ℹ dist/example.js 1.00 kB │ gzip: 0.52 kB
14
14
  ℹ dist/connection.sample.js 0.60 kB │ gzip: 0.35 kB
15
15
  ℹ dist/index.js 0.44 kB │ gzip: 0.20 kB
16
16
  ℹ dist/docs/index.js 0.04 kB │ gzip: 0.06 kB
17
- ℹ dist/blueprint.js.map 2.68 kB │ gzip: 1.10 kB
18
- ℹ dist/workflow.js.map 2.22 kB │ gzip: 0.84 kB
19
- ℹ dist/tenant.js.map 2.20 kB │ gzip: 0.97 kB
17
+ ℹ dist/blueprint.js.map 2.74 kB │ gzip: 1.10 kB
18
+ ℹ dist/workflow.js.map 2.24 kB │ gzip: 0.85 kB
19
+ ℹ dist/tenant.js.map 2.21 kB │ gzip: 0.98 kB
20
20
  ℹ dist/docs/integration-stripe.docblock.js.map 2.09 kB │ gzip: 0.93 kB
21
- ℹ dist/example.js.map 1.25 kB │ gzip: 0.64 kB
21
+ ℹ dist/example.js.map 1.53 kB │ gzip: 0.73 kB
22
22
  ℹ dist/connection.sample.js.map 1.03 kB │ gzip: 0.52 kB
23
23
  ℹ dist/connection.sample.d.ts.map 0.15 kB │ gzip: 0.13 kB
24
- ℹ dist/example.d.ts.map 0.14 kB │ gzip: 0.13 kB
25
24
  ℹ dist/blueprint.d.ts.map 0.13 kB │ gzip: 0.12 kB
26
25
  ℹ dist/workflow.d.ts.map 0.13 kB │ gzip: 0.12 kB
26
+ ℹ dist/example.d.ts.map 0.12 kB │ gzip: 0.12 kB
27
27
  ℹ dist/tenant.d.ts.map 0.12 kB │ gzip: 0.12 kB
28
- ℹ dist/example.d.ts 1.12 kB │ gzip: 0.47 kB
29
28
  ℹ dist/index.d.ts 0.39 kB │ gzip: 0.17 kB
30
29
  ℹ dist/connection.sample.d.ts 0.28 kB │ gzip: 0.17 kB
31
30
  ℹ dist/blueprint.d.ts 0.25 kB │ gzip: 0.17 kB
32
31
  ℹ dist/tenant.d.ts 0.25 kB │ gzip: 0.17 kB
33
32
  ℹ dist/workflow.d.ts 0.24 kB │ gzip: 0.16 kB
33
+ ℹ dist/example.d.ts 0.20 kB │ gzip: 0.16 kB
34
34
  ℹ dist/docs/index.d.ts 0.01 kB │ gzip: 0.03 kB
35
35
  ℹ dist/docs/integration-stripe.docblock.d.ts 0.01 kB │ gzip: 0.03 kB
36
- ℹ 27 files, total: 22.55 kB
37
- ✔ Build complete in 15726ms
36
+ ℹ 27 files, total: 22.16 kB
37
+ ✔ Build complete in 19453ms
@@ -7,32 +7,32 @@ $ tsdown
7
7
  ℹ target: esnext
8
8
  ℹ tsconfig: tsconfig.json
9
9
  ℹ Build start
10
- ℹ dist/blueprint.js 1.68 kB │ gzip: 0.73 kB
10
+ ℹ dist/blueprint.js 1.72 kB │ gzip: 0.73 kB
11
11
  ℹ dist/docs/integration-stripe.docblock.js 1.59 kB │ gzip: 0.74 kB
12
- ℹ dist/workflow.js 1.33 kB │ gzip: 0.57 kB
13
- ℹ dist/tenant.js 1.28 kB │ gzip: 0.63 kB
14
- ℹ dist/example.js 0.89 kB │ gzip: 0.47 kB
12
+ ℹ dist/workflow.js 1.35 kB │ gzip: 0.57 kB
13
+ ℹ dist/tenant.js 1.29 kB │ gzip: 0.63 kB
14
+ ℹ dist/example.js 1.00 kB │ gzip: 0.52 kB
15
15
  ℹ dist/connection.sample.js 0.60 kB │ gzip: 0.35 kB
16
16
  ℹ dist/index.js 0.44 kB │ gzip: 0.20 kB
17
17
  ℹ dist/docs/index.js 0.04 kB │ gzip: 0.06 kB
18
- ℹ dist/blueprint.js.map 2.68 kB │ gzip: 1.10 kB
19
- ℹ dist/workflow.js.map 2.22 kB │ gzip: 0.84 kB
20
- ℹ dist/tenant.js.map 2.20 kB │ gzip: 0.97 kB
18
+ ℹ dist/blueprint.js.map 2.74 kB │ gzip: 1.10 kB
19
+ ℹ dist/workflow.js.map 2.24 kB │ gzip: 0.85 kB
20
+ ℹ dist/tenant.js.map 2.21 kB │ gzip: 0.98 kB
21
21
  ℹ dist/docs/integration-stripe.docblock.js.map 2.09 kB │ gzip: 0.93 kB
22
- ℹ dist/example.js.map 1.25 kB │ gzip: 0.64 kB
22
+ ℹ dist/example.js.map 1.53 kB │ gzip: 0.73 kB
23
23
  ℹ dist/connection.sample.js.map 1.03 kB │ gzip: 0.52 kB
24
24
  ℹ dist/connection.sample.d.ts.map 0.15 kB │ gzip: 0.13 kB
25
- ℹ dist/example.d.ts.map 0.14 kB │ gzip: 0.13 kB
26
25
  ℹ dist/blueprint.d.ts.map 0.13 kB │ gzip: 0.12 kB
27
26
  ℹ dist/workflow.d.ts.map 0.13 kB │ gzip: 0.12 kB
27
+ ℹ dist/example.d.ts.map 0.12 kB │ gzip: 0.12 kB
28
28
  ℹ dist/tenant.d.ts.map 0.12 kB │ gzip: 0.12 kB
29
- ℹ dist/example.d.ts 1.12 kB │ gzip: 0.47 kB
30
29
  ℹ dist/index.d.ts 0.39 kB │ gzip: 0.17 kB
31
30
  ℹ dist/connection.sample.d.ts 0.28 kB │ gzip: 0.17 kB
32
31
  ℹ dist/blueprint.d.ts 0.25 kB │ gzip: 0.17 kB
33
32
  ℹ dist/tenant.d.ts 0.25 kB │ gzip: 0.17 kB
34
33
  ℹ dist/workflow.d.ts 0.24 kB │ gzip: 0.16 kB
34
+ ℹ dist/example.d.ts 0.20 kB │ gzip: 0.16 kB
35
35
  ℹ dist/docs/index.d.ts 0.01 kB │ gzip: 0.03 kB
36
36
  ℹ dist/docs/integration-stripe.docblock.d.ts 0.01 kB │ gzip: 0.03 kB
37
- ℹ 27 files, total: 22.55 kB
38
- ✔ Build complete in 17014ms
37
+ ℹ 27 files, total: 22.16 kB
38
+ ✔ Build complete in 18554ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @contractspec/example.integration-stripe
2
2
 
3
+ ## 1.45.0
4
+
5
+ ### Minor Changes
6
+
7
+ - e73ca1d: feat: improve app config and examples contracts
8
+ feat: Contract layers support (features, examples, app-configs)
9
+
10
+ ### New CLI Commands
11
+ - `contractspec list layers` - List all contract layers with filtering
12
+
13
+ ### Enhanced Commands
14
+ - `contractspec ci` - New `layers` check category validates features/examples/config
15
+ - `contractspec doctor` - New `layers` health checks
16
+ - `contractspec integrity` - Now shows layer statistics
17
+
18
+ ### New APIs
19
+ - `discoverLayers()` - Scan workspace for all layer files
20
+ - `scanExampleSource()` - Parse ExampleSpec from source code
21
+ - `isExampleFile()` - Check if file is an example spec
22
+
23
+ ### Patch Changes
24
+
25
+ - Updated dependencies [e73ca1d]
26
+ - @contractspec/lib.contracts@1.45.0
27
+ - @contractspec/lib.schema@1.45.0
28
+
3
29
  ## 1.44.1
4
30
 
5
31
  ### Patch Changes
package/dist/blueprint.js CHANGED
@@ -4,7 +4,7 @@ import { OwnersEnum, StabilityEnum, TagsEnum } from "@contractspec/lib.contracts
4
4
  const artisanStripeBlueprint = {
5
5
  meta: {
6
6
  key: "artisan.payments.stripe",
7
- version: 1,
7
+ version: "1.0.0",
8
8
  appId: "artisan",
9
9
  title: "ArtisanOS Stripe Payments",
10
10
  description: "Blueprint enabling card payments for ArtisanOS merchants via the Stripe integration.",
@@ -19,7 +19,7 @@ const artisanStripeBlueprint = {
19
19
  },
20
20
  capabilities: { enabled: [{
21
21
  key: "payments.psp",
22
- version: 1
22
+ version: "1.0.0"
23
23
  }] },
24
24
  integrationSlots: [{
25
25
  slotId: "primary-payments",
@@ -27,7 +27,7 @@ const artisanStripeBlueprint = {
27
27
  allowedModes: ["managed", "byok"],
28
28
  requiredCapabilities: [{
29
29
  key: "payments.psp",
30
- version: 1
30
+ version: "1.0.0"
31
31
  }],
32
32
  required: true,
33
33
  description: "Primary card processor slot. Bind the tenant Stripe connection here."
@@ -48,15 +48,15 @@ const artisanStripeBlueprint = {
48
48
  },
49
49
  translationCatalog: {
50
50
  key: "artisan.payments.catalog",
51
- version: 1
51
+ version: "1.0.0"
52
52
  },
53
53
  workflows: { collectPayment: {
54
54
  key: "artisan.payments.collectPayment",
55
- version: 1
55
+ version: "1.0.0"
56
56
  } },
57
57
  policies: [{
58
58
  key: "artisan.payments.default",
59
- version: 1
59
+ version: "1.0.0"
60
60
  }],
61
61
  notes: "Install this blueprint and pair it with the Stripe integration connection to enable card collection."
62
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint.js","names":["artisanStripeBlueprint: AppBlueprintSpec"],"sources":["../src/blueprint.ts"],"sourcesContent":["import type { AppBlueprintSpec } from '@contractspec/lib.contracts/app-config/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@contractspec/lib.contracts/ownership';\n\nexport const artisanStripeBlueprint: AppBlueprintSpec = {\n meta: {\n key: 'artisan.payments.stripe',\n version: 1,\n appId: 'artisan',\n title: 'ArtisanOS Stripe Payments',\n description:\n 'Blueprint enabling card payments for ArtisanOS merchants via the Stripe integration.',\n domain: 'payments',\n owners: [OwnersEnum.PlatformCore],\n tags: [TagsEnum.Marketplace, 'stripe', 'payments'],\n stability: StabilityEnum.Experimental,\n },\n capabilities: {\n enabled: [{ key: 'payments.psp', version: 1 }],\n },\n integrationSlots: [\n {\n slotId: 'primary-payments',\n requiredCategory: 'payments',\n allowedModes: ['managed', 'byok'],\n requiredCapabilities: [{ key: 'payments.psp', version: 1 }],\n required: true,\n description:\n 'Primary card processor slot. Bind the tenant Stripe connection here.',\n },\n ],\n branding: {\n appNameKey: 'artisan.payments.appName',\n assets: [\n { type: 'logo', url: 'https://cdn.artisanos.dev/branding/logo.png' },\n {\n type: 'favicon',\n url: 'https://cdn.artisanos.dev/branding/favicon.ico',\n },\n ],\n colorTokens: {\n primary: 'colors.brand.primary',\n secondary: 'colors.brand.secondary',\n },\n },\n translationCatalog: {\n key: 'artisan.payments.catalog',\n version: 1,\n },\n workflows: {\n collectPayment: { key: 'artisan.payments.collectPayment', version: 1 },\n },\n policies: [{ key: 'artisan.payments.default', version: 1 }],\n notes:\n 'Install this blueprint and pair it with the Stripe integration connection to enable card collection.',\n};\n"],"mappings":";;;AAOA,MAAaA,yBAA2C;CACtD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,aAAa;EACjC,MAAM;GAAC,SAAS;GAAa;GAAU;GAAW;EAClD,WAAW,cAAc;EAC1B;CACD,cAAc,EACZ,SAAS,CAAC;EAAE,KAAK;EAAgB,SAAS;EAAG,CAAC,EAC/C;CACD,kBAAkB,CAChB;EACE,QAAQ;EACR,kBAAkB;EAClB,cAAc,CAAC,WAAW,OAAO;EACjC,sBAAsB,CAAC;GAAE,KAAK;GAAgB,SAAS;GAAG,CAAC;EAC3D,UAAU;EACV,aACE;EACH,CACF;CACD,UAAU;EACR,YAAY;EACZ,QAAQ,CACN;GAAE,MAAM;GAAQ,KAAK;GAA+C,EACpE;GACE,MAAM;GACN,KAAK;GACN,CACF;EACD,aAAa;GACX,SAAS;GACT,WAAW;GACZ;EACF;CACD,oBAAoB;EAClB,KAAK;EACL,SAAS;EACV;CACD,WAAW,EACT,gBAAgB;EAAE,KAAK;EAAmC,SAAS;EAAG,EACvE;CACD,UAAU,CAAC;EAAE,KAAK;EAA4B,SAAS;EAAG,CAAC;CAC3D,OACE;CACH"}
1
+ {"version":3,"file":"blueprint.js","names":["artisanStripeBlueprint: AppBlueprintSpec"],"sources":["../src/blueprint.ts"],"sourcesContent":["import type { AppBlueprintSpec } from '@contractspec/lib.contracts/app-config/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@contractspec/lib.contracts/ownership';\n\nexport const artisanStripeBlueprint: AppBlueprintSpec = {\n meta: {\n key: 'artisan.payments.stripe',\n version: '1.0.0',\n appId: 'artisan',\n title: 'ArtisanOS Stripe Payments',\n description:\n 'Blueprint enabling card payments for ArtisanOS merchants via the Stripe integration.',\n domain: 'payments',\n owners: [OwnersEnum.PlatformCore],\n tags: [TagsEnum.Marketplace, 'stripe', 'payments'],\n stability: StabilityEnum.Experimental,\n },\n capabilities: {\n enabled: [{ key: 'payments.psp', version: '1.0.0' }],\n },\n integrationSlots: [\n {\n slotId: 'primary-payments',\n requiredCategory: 'payments',\n allowedModes: ['managed', 'byok'],\n requiredCapabilities: [{ key: 'payments.psp', version: '1.0.0' }],\n required: true,\n description:\n 'Primary card processor slot. Bind the tenant Stripe connection here.',\n },\n ],\n branding: {\n appNameKey: 'artisan.payments.appName',\n assets: [\n { type: 'logo', url: 'https://cdn.artisanos.dev/branding/logo.png' },\n {\n type: 'favicon',\n url: 'https://cdn.artisanos.dev/branding/favicon.ico',\n },\n ],\n colorTokens: {\n primary: 'colors.brand.primary',\n secondary: 'colors.brand.secondary',\n },\n },\n translationCatalog: {\n key: 'artisan.payments.catalog',\n version: '1.0.0',\n },\n workflows: {\n collectPayment: {\n key: 'artisan.payments.collectPayment',\n version: '1.0.0',\n },\n },\n policies: [{ key: 'artisan.payments.default', version: '1.0.0' }],\n notes:\n 'Install this blueprint and pair it with the Stripe integration connection to enable card collection.',\n};\n"],"mappings":";;;AAOA,MAAaA,yBAA2C;CACtD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,aAAa;EACjC,MAAM;GAAC,SAAS;GAAa;GAAU;GAAW;EAClD,WAAW,cAAc;EAC1B;CACD,cAAc,EACZ,SAAS,CAAC;EAAE,KAAK;EAAgB,SAAS;EAAS,CAAC,EACrD;CACD,kBAAkB,CAChB;EACE,QAAQ;EACR,kBAAkB;EAClB,cAAc,CAAC,WAAW,OAAO;EACjC,sBAAsB,CAAC;GAAE,KAAK;GAAgB,SAAS;GAAS,CAAC;EACjE,UAAU;EACV,aACE;EACH,CACF;CACD,UAAU;EACR,YAAY;EACZ,QAAQ,CACN;GAAE,MAAM;GAAQ,KAAK;GAA+C,EACpE;GACE,MAAM;GACN,KAAK;GACN,CACF;EACD,aAAa;GACX,SAAS;GACT,WAAW;GACZ;EACF;CACD,oBAAoB;EAClB,KAAK;EACL,SAAS;EACV;CACD,WAAW,EACT,gBAAgB;EACd,KAAK;EACL,SAAS;EACV,EACF;CACD,UAAU,CAAC;EAAE,KAAK;EAA4B,SAAS;EAAS,CAAC;CACjE,OACE;CACH"}
@@ -4,7 +4,7 @@ const stripeLiveConnection = {
4
4
  id: "conn-stripe-live",
5
5
  tenantId: "artisan-co",
6
6
  integrationKey: "payments.stripe",
7
- integrationVersion: 1,
7
+ integrationVersion: "1",
8
8
  label: "Stripe Production",
9
9
  environment: "production",
10
10
  createdAt: "2026-01-01T00:00:00.000Z",
@@ -1 +1 @@
1
- {"version":3,"file":"connection.sample.js","names":["stripeLiveConnection: IntegrationConnection"],"sources":["../src/connection.sample.ts"],"sourcesContent":["import type { IntegrationConnection } from '@contractspec/lib.contracts/integrations/connection';\n\nexport const stripeLiveConnection: IntegrationConnection = {\n meta: {\n id: 'conn-stripe-live',\n tenantId: 'artisan-co',\n integrationKey: 'payments.stripe',\n integrationVersion: 1,\n label: 'Stripe Production',\n environment: 'production',\n createdAt: '2026-01-01T00:00:00.000Z',\n updatedAt: '2026-01-01T00:00:00.000Z',\n },\n ownershipMode: 'managed',\n config: {\n accountId: 'acct_xxx',\n },\n secretProvider: 'vault',\n secretRef: 'vault://integrations/artisan-co/conn-stripe-live',\n status: 'connected',\n};\n"],"mappings":";AAEA,MAAaA,uBAA8C;CACzD,MAAM;EACJ,IAAI;EACJ,UAAU;EACV,gBAAgB;EAChB,oBAAoB;EACpB,OAAO;EACP,aAAa;EACb,WAAW;EACX,WAAW;EACZ;CACD,eAAe;CACf,QAAQ,EACN,WAAW,YACZ;CACD,gBAAgB;CAChB,WAAW;CACX,QAAQ;CACT"}
1
+ {"version":3,"file":"connection.sample.js","names":["stripeLiveConnection: IntegrationConnection"],"sources":["../src/connection.sample.ts"],"sourcesContent":["import type { IntegrationConnection } from '@contractspec/lib.contracts/integrations/connection';\n\nexport const stripeLiveConnection: IntegrationConnection = {\n meta: {\n id: 'conn-stripe-live',\n tenantId: 'artisan-co',\n integrationKey: 'payments.stripe',\n integrationVersion: '1',\n label: 'Stripe Production',\n environment: 'production',\n createdAt: '2026-01-01T00:00:00.000Z',\n updatedAt: '2026-01-01T00:00:00.000Z',\n },\n ownershipMode: 'managed',\n config: {\n accountId: 'acct_xxx',\n },\n secretProvider: 'vault',\n secretRef: 'vault://integrations/artisan-co/conn-stripe-live',\n status: 'connected',\n};\n"],"mappings":";AAEA,MAAaA,uBAA8C;CACzD,MAAM;EACJ,IAAI;EACJ,UAAU;EACV,gBAAgB;EAChB,oBAAoB;EACpB,OAAO;EACP,aAAa;EACb,WAAW;EACX,WAAW;EACZ;CACD,eAAe;CACf,QAAQ,EACN,WAAW,YACZ;CACD,gBAAgB;CAChB,WAAW;CACX,QAAQ;CACT"}
package/dist/example.d.ts CHANGED
@@ -1,34 +1,7 @@
1
+ import { ExampleSpec } from "@contractspec/lib.contracts";
2
+
1
3
  //#region src/example.d.ts
2
- declare const example: {
3
- readonly id: "integration-stripe";
4
- readonly title: "Integration — Stripe Payments";
5
- readonly summary: "Wire AppBlueprint + Workflow + TenantAppConfig to enable Stripe-backed payments (spec-first integration pattern).";
6
- readonly tags: readonly ["stripe", "payments", "integration", "blueprint", "workflow"];
7
- readonly kind: "integration";
8
- readonly visibility: "public";
9
- readonly docs: {
10
- readonly rootDocId: "docs.examples.integration-stripe";
11
- readonly usageDocId: "docs.examples.integration-stripe.usage";
12
- };
13
- readonly entrypoints: {
14
- readonly packageName: "@contractspec/example.integration-stripe";
15
- readonly docs: "./docs";
16
- };
17
- readonly surfaces: {
18
- readonly templates: true;
19
- readonly sandbox: {
20
- readonly enabled: true;
21
- readonly modes: readonly ["markdown", "specs"];
22
- };
23
- readonly studio: {
24
- readonly enabled: true;
25
- readonly installable: true;
26
- };
27
- readonly mcp: {
28
- readonly enabled: true;
29
- };
30
- };
31
- };
4
+ declare const example: ExampleSpec;
32
5
  //#endregion
33
6
  export { example as default };
34
7
  //# sourceMappingURL=example.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":";cAAM;EAAA,SAAA,EAsBI,EAAA,oBAAA"}
1
+ {"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":";;;cAEM,SAAS"}
package/dist/example.js CHANGED
@@ -1,17 +1,22 @@
1
1
  //#region src/example.ts
2
2
  const example = {
3
- id: "integration-stripe",
4
- title: "Integration — Stripe Payments",
5
- summary: "Wire AppBlueprint + Workflow + TenantAppConfig to enable Stripe-backed payments (spec-first integration pattern).",
6
- tags: [
7
- "stripe",
8
- "payments",
9
- "integration",
10
- "blueprint",
11
- "workflow"
12
- ],
13
- kind: "integration",
14
- visibility: "public",
3
+ meta: {
4
+ key: "integration-stripe",
5
+ version: "1.0.0",
6
+ title: "Integration — Stripe Payments",
7
+ description: "Wire AppBlueprint + Workflow + TenantAppConfig to enable Stripe-backed payments (spec-first integration pattern).",
8
+ kind: "integration",
9
+ visibility: "public",
10
+ stability: "experimental",
11
+ owners: ["@platform.core"],
12
+ tags: [
13
+ "stripe",
14
+ "payments",
15
+ "integration",
16
+ "blueprint",
17
+ "workflow"
18
+ ]
19
+ },
15
20
  docs: {
16
21
  rootDocId: "docs.examples.integration-stripe",
17
22
  usageDocId: "docs.examples.integration-stripe.usage"
@@ -1 +1 @@
1
- {"version":3,"file":"example.js","names":[],"sources":["../src/example.ts"],"sourcesContent":["const example = {\n id: 'integration-stripe',\n title: 'Integration — Stripe Payments',\n summary:\n 'Wire AppBlueprint + Workflow + TenantAppConfig to enable Stripe-backed payments (spec-first integration pattern).',\n tags: ['stripe', 'payments', 'integration', 'blueprint', 'workflow'],\n kind: 'integration',\n visibility: 'public',\n docs: {\n rootDocId: 'docs.examples.integration-stripe',\n usageDocId: 'docs.examples.integration-stripe.usage',\n },\n entrypoints: {\n packageName: '@contractspec/example.integration-stripe',\n docs: './docs',\n },\n surfaces: {\n templates: true,\n sandbox: { enabled: true, modes: ['markdown', 'specs'] },\n studio: { enabled: true, installable: true },\n mcp: { enabled: true },\n },\n} as const;\n\nexport default example;\n"],"mappings":";AAAA,MAAM,UAAU;CACd,IAAI;CACJ,OAAO;CACP,SACE;CACF,MAAM;EAAC;EAAU;EAAY;EAAe;EAAa;EAAW;CACpE,MAAM;CACN,YAAY;CACZ,MAAM;EACJ,WAAW;EACX,YAAY;EACb;CACD,aAAa;EACX,aAAa;EACb,MAAM;EACP;CACD,UAAU;EACR,WAAW;EACX,SAAS;GAAE,SAAS;GAAM,OAAO,CAAC,YAAY,QAAQ;GAAE;EACxD,QAAQ;GAAE,SAAS;GAAM,aAAa;GAAM;EAC5C,KAAK,EAAE,SAAS,MAAM;EACvB;CACF;AAED,sBAAe"}
1
+ {"version":3,"file":"example.js","names":["example: ExampleSpec"],"sources":["../src/example.ts"],"sourcesContent":["import type { ExampleSpec } from '@contractspec/lib.contracts';\n\nconst example: ExampleSpec = {\n meta: {\n key: 'integration-stripe',\n version: '1.0.0',\n title: 'Integration — Stripe Payments',\n description:\n 'Wire AppBlueprint + Workflow + TenantAppConfig to enable Stripe-backed payments (spec-first integration pattern).',\n kind: 'integration',\n visibility: 'public',\n stability: 'experimental',\n owners: ['@platform.core'],\n tags: ['stripe', 'payments', 'integration', 'blueprint', 'workflow'],\n },\n docs: {\n rootDocId: 'docs.examples.integration-stripe',\n usageDocId: 'docs.examples.integration-stripe.usage',\n },\n entrypoints: {\n packageName: '@contractspec/example.integration-stripe',\n docs: './docs',\n },\n surfaces: {\n templates: true,\n sandbox: { enabled: true, modes: ['markdown', 'specs'] },\n studio: { enabled: true, installable: true },\n mcp: { enabled: true },\n },\n};\n\nexport default example;\n"],"mappings":";AAEA,MAAMA,UAAuB;CAC3B,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAU;GAAY;GAAe;GAAa;GAAW;EACrE;CACD,MAAM;EACJ,WAAW;EACX,YAAY;EACb;CACD,aAAa;EACX,aAAa;EACb,MAAM;EACP;CACD,UAAU;EACR,WAAW;EACX,SAAS;GAAE,SAAS;GAAM,OAAO,CAAC,YAAY,QAAQ;GAAE;EACxD,QAAQ;GAAE,SAAS;GAAM,aAAa;GAAM;EAC5C,KAAK,EAAE,SAAS,MAAM;EACvB;CACF;AAED,sBAAe"}
package/dist/tenant.js CHANGED
@@ -5,9 +5,9 @@ const artisanStripeTenantConfig = {
5
5
  tenantId: "artisan-co",
6
6
  appId: "artisan",
7
7
  blueprintName: "artisan.payments.stripe",
8
- blueprintVersion: 1,
8
+ blueprintVersion: "1.0.0",
9
9
  environment: "production",
10
- version: 1,
10
+ version: "1.0.0",
11
11
  status: "published",
12
12
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
13
13
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.js","names":["artisanStripeTenantConfig: TenantAppConfig"],"sources":["../src/tenant.ts"],"sourcesContent":["import type { TenantAppConfig } from '@contractspec/lib.contracts/app-config/spec';\n\nexport const artisanStripeTenantConfig: TenantAppConfig = {\n meta: {\n id: 'tenant-config-artisan-stripe',\n tenantId: 'artisan-co',\n appId: 'artisan',\n blueprintName: 'artisan.payments.stripe',\n blueprintVersion: 1,\n environment: 'production',\n version: 1,\n status: 'published',\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n integrations: [\n {\n slotId: 'primary-payments',\n connectionId: 'conn-stripe-live',\n scope: {\n workflows: ['collectPayment'],\n operations: ['payments.stripe.chargeCard'],\n },\n },\n ],\n knowledge: [],\n locales: {\n defaultLocale: 'en',\n enabledLocales: ['en', 'fr'],\n },\n translationOverrides: {\n entries: [\n {\n key: 'artisan.payments.appName',\n locale: 'en',\n value: 'Artisan Payments Portal',\n },\n ],\n },\n branding: {\n appName: { en: 'Artisan Payments Portal' },\n assets: [\n { type: 'logo', url: 'https://tenant.artisanos.dev/logo.png' },\n { type: 'logo-dark', url: 'https://tenant.artisanos.dev/logo-dark.png' },\n ],\n colors: {\n primary: '#F97316',\n secondary: '#1F2937',\n },\n customDomain: 'pay.artisanos.dev',\n },\n notes: 'Stripe connection bound for production payments.',\n};\n"],"mappings":";AAEA,MAAaA,4BAA6C;CACxD,MAAM;EACJ,IAAI;EACJ,UAAU;EACV,OAAO;EACP,eAAe;EACf,kBAAkB;EAClB,aAAa;EACb,SAAS;EACT,QAAQ;EACR,4BAAW,IAAI,MAAM,EAAC,aAAa;EACnC,4BAAW,IAAI,MAAM,EAAC,aAAa;EACpC;CACD,cAAc,CACZ;EACE,QAAQ;EACR,cAAc;EACd,OAAO;GACL,WAAW,CAAC,iBAAiB;GAC7B,YAAY,CAAC,6BAA6B;GAC3C;EACF,CACF;CACD,WAAW,EAAE;CACb,SAAS;EACP,eAAe;EACf,gBAAgB,CAAC,MAAM,KAAK;EAC7B;CACD,sBAAsB,EACpB,SAAS,CACP;EACE,KAAK;EACL,QAAQ;EACR,OAAO;EACR,CACF,EACF;CACD,UAAU;EACR,SAAS,EAAE,IAAI,2BAA2B;EAC1C,QAAQ,CACN;GAAE,MAAM;GAAQ,KAAK;GAAyC,EAC9D;GAAE,MAAM;GAAa,KAAK;GAA8C,CACzE;EACD,QAAQ;GACN,SAAS;GACT,WAAW;GACZ;EACD,cAAc;EACf;CACD,OAAO;CACR"}
1
+ {"version":3,"file":"tenant.js","names":["artisanStripeTenantConfig: TenantAppConfig"],"sources":["../src/tenant.ts"],"sourcesContent":["import type { TenantAppConfig } from '@contractspec/lib.contracts/app-config/spec';\n\nexport const artisanStripeTenantConfig: TenantAppConfig = {\n meta: {\n id: 'tenant-config-artisan-stripe',\n tenantId: 'artisan-co',\n appId: 'artisan',\n blueprintName: 'artisan.payments.stripe',\n blueprintVersion: '1.0.0',\n environment: 'production',\n version: '1.0.0',\n status: 'published',\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n integrations: [\n {\n slotId: 'primary-payments',\n connectionId: 'conn-stripe-live',\n scope: {\n workflows: ['collectPayment'],\n operations: ['payments.stripe.chargeCard'],\n },\n },\n ],\n knowledge: [],\n locales: {\n defaultLocale: 'en',\n enabledLocales: ['en', 'fr'],\n },\n translationOverrides: {\n entries: [\n {\n key: 'artisan.payments.appName',\n locale: 'en',\n value: 'Artisan Payments Portal',\n },\n ],\n },\n branding: {\n appName: { en: 'Artisan Payments Portal' },\n assets: [\n { type: 'logo', url: 'https://tenant.artisanos.dev/logo.png' },\n { type: 'logo-dark', url: 'https://tenant.artisanos.dev/logo-dark.png' },\n ],\n colors: {\n primary: '#F97316',\n secondary: '#1F2937',\n },\n customDomain: 'pay.artisanos.dev',\n },\n notes: 'Stripe connection bound for production payments.',\n};\n"],"mappings":";AAEA,MAAaA,4BAA6C;CACxD,MAAM;EACJ,IAAI;EACJ,UAAU;EACV,OAAO;EACP,eAAe;EACf,kBAAkB;EAClB,aAAa;EACb,SAAS;EACT,QAAQ;EACR,4BAAW,IAAI,MAAM,EAAC,aAAa;EACnC,4BAAW,IAAI,MAAM,EAAC,aAAa;EACpC;CACD,cAAc,CACZ;EACE,QAAQ;EACR,cAAc;EACd,OAAO;GACL,WAAW,CAAC,iBAAiB;GAC7B,YAAY,CAAC,6BAA6B;GAC3C;EACF,CACF;CACD,WAAW,EAAE;CACb,SAAS;EACP,eAAe;EACf,gBAAgB,CAAC,MAAM,KAAK;EAC7B;CACD,sBAAsB,EACpB,SAAS,CACP;EACE,KAAK;EACL,QAAQ;EACR,OAAO;EACR,CACF,EACF;CACD,UAAU;EACR,SAAS,EAAE,IAAI,2BAA2B;EAC1C,QAAQ,CACN;GAAE,MAAM;GAAQ,KAAK;GAAyC,EAC9D;GAAE,MAAM;GAAa,KAAK;GAA8C,CACzE;EACD,QAAQ;GACN,SAAS;GACT,WAAW;GACZ;EACD,cAAc;EACf;CACD,OAAO;CACR"}
package/dist/workflow.js CHANGED
@@ -4,7 +4,7 @@ import { OwnersEnum, StabilityEnum, TagsEnum } from "@contractspec/lib.contracts
4
4
  const collectPaymentWorkflow = {
5
5
  meta: {
6
6
  key: "artisan.payments.collectPayment",
7
- version: 1,
7
+ version: "1.0.0",
8
8
  title: "Collect Card Payment",
9
9
  description: "Charge a customer using the tenant Stripe connection and record settlement details.",
10
10
  domain: "payments",
@@ -21,7 +21,7 @@ const collectPaymentWorkflow = {
21
21
  label: "Prepare charge parameters",
22
22
  action: { operation: {
23
23
  key: "payments.prepareCharge",
24
- version: 1
24
+ version: "1.0.0"
25
25
  } }
26
26
  },
27
27
  {
@@ -30,7 +30,7 @@ const collectPaymentWorkflow = {
30
30
  label: "Charge card via Stripe",
31
31
  action: { operation: {
32
32
  key: "payments.stripe.chargeCard",
33
- version: 1
33
+ version: "1.0.0"
34
34
  } }
35
35
  },
36
36
  {
@@ -39,7 +39,7 @@ const collectPaymentWorkflow = {
39
39
  label: "Confirm settlement",
40
40
  action: { operation: {
41
41
  key: "payments.recordSettlement",
42
- version: 1
42
+ version: "1.0.0"
43
43
  } }
44
44
  }
45
45
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","names":["collectPaymentWorkflow: WorkflowSpec"],"sources":["../src/workflow.ts"],"sourcesContent":["import type { WorkflowSpec } from '@contractspec/lib.contracts/workflow/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@contractspec/lib.contracts/ownership';\n\nexport const collectPaymentWorkflow: WorkflowSpec = {\n meta: {\n key: 'artisan.payments.collectPayment',\n version: 1,\n title: 'Collect Card Payment',\n description:\n 'Charge a customer using the tenant Stripe connection and record settlement details.',\n domain: 'payments',\n owners: [OwnersEnum.PlatformCore],\n tags: [TagsEnum.Marketplace, 'stripe'],\n stability: StabilityEnum.Experimental,\n },\n definition: {\n entryStepId: 'prepare',\n steps: [\n {\n id: 'prepare',\n type: 'automation',\n label: 'Prepare charge parameters',\n action: {\n operation: { key: 'payments.prepareCharge', version: 1 },\n },\n },\n {\n id: 'charge',\n type: 'automation',\n label: 'Charge card via Stripe',\n action: {\n operation: { key: 'payments.stripe.chargeCard', version: 1 },\n },\n },\n {\n id: 'confirm',\n type: 'automation',\n label: 'Confirm settlement',\n action: {\n operation: { key: 'payments.recordSettlement', version: 1 },\n },\n },\n ],\n transitions: [\n { from: 'prepare', to: 'charge' },\n { from: 'charge', to: 'confirm', condition: 'output.success === true' },\n ],\n },\n};\n"],"mappings":";;;AAOA,MAAaA,yBAAuC;CAClD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,aAAa;EACjC,MAAM,CAAC,SAAS,aAAa,SAAS;EACtC,WAAW,cAAc;EAC1B;CACD,YAAY;EACV,aAAa;EACb,OAAO;GACL;IACE,IAAI;IACJ,MAAM;IACN,OAAO;IACP,QAAQ,EACN,WAAW;KAAE,KAAK;KAA0B,SAAS;KAAG,EACzD;IACF;GACD;IACE,IAAI;IACJ,MAAM;IACN,OAAO;IACP,QAAQ,EACN,WAAW;KAAE,KAAK;KAA8B,SAAS;KAAG,EAC7D;IACF;GACD;IACE,IAAI;IACJ,MAAM;IACN,OAAO;IACP,QAAQ,EACN,WAAW;KAAE,KAAK;KAA6B,SAAS;KAAG,EAC5D;IACF;GACF;EACD,aAAa,CACX;GAAE,MAAM;GAAW,IAAI;GAAU,EACjC;GAAE,MAAM;GAAU,IAAI;GAAW,WAAW;GAA2B,CACxE;EACF;CACF"}
1
+ {"version":3,"file":"workflow.js","names":["collectPaymentWorkflow: WorkflowSpec"],"sources":["../src/workflow.ts"],"sourcesContent":["import type { WorkflowSpec } from '@contractspec/lib.contracts/workflow/spec';\nimport {\n OwnersEnum,\n StabilityEnum,\n TagsEnum,\n} from '@contractspec/lib.contracts/ownership';\n\nexport const collectPaymentWorkflow: WorkflowSpec = {\n meta: {\n key: 'artisan.payments.collectPayment',\n version: '1.0.0',\n title: 'Collect Card Payment',\n description:\n 'Charge a customer using the tenant Stripe connection and record settlement details.',\n domain: 'payments',\n owners: [OwnersEnum.PlatformCore],\n tags: [TagsEnum.Marketplace, 'stripe'],\n stability: StabilityEnum.Experimental,\n },\n definition: {\n entryStepId: 'prepare',\n steps: [\n {\n id: 'prepare',\n type: 'automation',\n label: 'Prepare charge parameters',\n action: {\n operation: { key: 'payments.prepareCharge', version: '1.0.0' },\n },\n },\n {\n id: 'charge',\n type: 'automation',\n label: 'Charge card via Stripe',\n action: {\n operation: { key: 'payments.stripe.chargeCard', version: '1.0.0' },\n },\n },\n {\n id: 'confirm',\n type: 'automation',\n label: 'Confirm settlement',\n action: {\n operation: { key: 'payments.recordSettlement', version: '1.0.0' },\n },\n },\n ],\n transitions: [\n { from: 'prepare', to: 'charge' },\n { from: 'charge', to: 'confirm', condition: 'output.success === true' },\n ],\n },\n};\n"],"mappings":";;;AAOA,MAAaA,yBAAuC;CAClD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,WAAW,aAAa;EACjC,MAAM,CAAC,SAAS,aAAa,SAAS;EACtC,WAAW,cAAc;EAC1B;CACD,YAAY;EACV,aAAa;EACb,OAAO;GACL;IACE,IAAI;IACJ,MAAM;IACN,OAAO;IACP,QAAQ,EACN,WAAW;KAAE,KAAK;KAA0B,SAAS;KAAS,EAC/D;IACF;GACD;IACE,IAAI;IACJ,MAAM;IACN,OAAO;IACP,QAAQ,EACN,WAAW;KAAE,KAAK;KAA8B,SAAS;KAAS,EACnE;IACF;GACD;IACE,IAAI;IACJ,MAAM;IACN,OAAO;IACP,QAAQ,EACN,WAAW;KAAE,KAAK;KAA6B,SAAS;KAAS,EAClE;IACF;GACF;EACD,aAAa,CACX;GAAE,MAAM;GAAW,IAAI;GAAU,EACjC;GAAE,MAAM;GAAU,IAAI;GAAW,WAAW;GAA2B,CACxE;EACF;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contractspec/example.integration-stripe",
3
- "version": "1.44.1",
3
+ "version": "1.45.0",
4
4
  "description": "Integration example – Stripe Payments (blueprint + workflow + tenant config).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -30,12 +30,12 @@
30
30
  "test": "bun test"
31
31
  },
32
32
  "dependencies": {
33
- "@contractspec/lib.schema": "1.44.1",
34
- "@contractspec/lib.contracts": "1.44.1"
33
+ "@contractspec/lib.schema": "1.45.0",
34
+ "@contractspec/lib.contracts": "1.45.0"
35
35
  },
36
36
  "devDependencies": {
37
- "@contractspec/tool.tsdown": "1.44.1",
38
- "@contractspec/tool.typescript": "1.44.1",
37
+ "@contractspec/tool.tsdown": "1.45.0",
38
+ "@contractspec/tool.typescript": "1.45.0",
39
39
  "tsdown": "^0.18.3",
40
40
  "typescript": "^5.9.3"
41
41
  },
package/src/blueprint.ts CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  export const artisanStripeBlueprint: AppBlueprintSpec = {
9
9
  meta: {
10
10
  key: 'artisan.payments.stripe',
11
- version: 1,
11
+ version: '1.0.0',
12
12
  appId: 'artisan',
13
13
  title: 'ArtisanOS Stripe Payments',
14
14
  description:
@@ -19,14 +19,14 @@ export const artisanStripeBlueprint: AppBlueprintSpec = {
19
19
  stability: StabilityEnum.Experimental,
20
20
  },
21
21
  capabilities: {
22
- enabled: [{ key: 'payments.psp', version: 1 }],
22
+ enabled: [{ key: 'payments.psp', version: '1.0.0' }],
23
23
  },
24
24
  integrationSlots: [
25
25
  {
26
26
  slotId: 'primary-payments',
27
27
  requiredCategory: 'payments',
28
28
  allowedModes: ['managed', 'byok'],
29
- requiredCapabilities: [{ key: 'payments.psp', version: 1 }],
29
+ requiredCapabilities: [{ key: 'payments.psp', version: '1.0.0' }],
30
30
  required: true,
31
31
  description:
32
32
  'Primary card processor slot. Bind the tenant Stripe connection here.',
@@ -48,12 +48,15 @@ export const artisanStripeBlueprint: AppBlueprintSpec = {
48
48
  },
49
49
  translationCatalog: {
50
50
  key: 'artisan.payments.catalog',
51
- version: 1,
51
+ version: '1.0.0',
52
52
  },
53
53
  workflows: {
54
- collectPayment: { key: 'artisan.payments.collectPayment', version: 1 },
54
+ collectPayment: {
55
+ key: 'artisan.payments.collectPayment',
56
+ version: '1.0.0',
57
+ },
55
58
  },
56
- policies: [{ key: 'artisan.payments.default', version: 1 }],
59
+ policies: [{ key: 'artisan.payments.default', version: '1.0.0' }],
57
60
  notes:
58
61
  'Install this blueprint and pair it with the Stripe integration connection to enable card collection.',
59
62
  };
@@ -5,7 +5,7 @@ export const stripeLiveConnection: IntegrationConnection = {
5
5
  id: 'conn-stripe-live',
6
6
  tenantId: 'artisan-co',
7
7
  integrationKey: 'payments.stripe',
8
- integrationVersion: 1,
8
+ integrationVersion: '1',
9
9
  label: 'Stripe Production',
10
10
  environment: 'production',
11
11
  createdAt: '2026-01-01T00:00:00.000Z',
package/src/example.ts CHANGED
@@ -1,11 +1,18 @@
1
- const example = {
2
- id: 'integration-stripe',
3
- title: 'Integration Stripe Payments',
4
- summary:
5
- 'Wire AppBlueprint + Workflow + TenantAppConfig to enable Stripe-backed payments (spec-first integration pattern).',
6
- tags: ['stripe', 'payments', 'integration', 'blueprint', 'workflow'],
7
- kind: 'integration',
8
- visibility: 'public',
1
+ import type { ExampleSpec } from '@contractspec/lib.contracts';
2
+
3
+ const example: ExampleSpec = {
4
+ meta: {
5
+ key: 'integration-stripe',
6
+ version: '1.0.0',
7
+ title: 'Integration — Stripe Payments',
8
+ description:
9
+ 'Wire AppBlueprint + Workflow + TenantAppConfig to enable Stripe-backed payments (spec-first integration pattern).',
10
+ kind: 'integration',
11
+ visibility: 'public',
12
+ stability: 'experimental',
13
+ owners: ['@platform.core'],
14
+ tags: ['stripe', 'payments', 'integration', 'blueprint', 'workflow'],
15
+ },
9
16
  docs: {
10
17
  rootDocId: 'docs.examples.integration-stripe',
11
18
  usageDocId: 'docs.examples.integration-stripe.usage',
@@ -20,6 +27,6 @@ const example = {
20
27
  studio: { enabled: true, installable: true },
21
28
  mcp: { enabled: true },
22
29
  },
23
- } as const;
30
+ };
24
31
 
25
32
  export default example;
package/src/tenant.ts CHANGED
@@ -6,9 +6,9 @@ export const artisanStripeTenantConfig: TenantAppConfig = {
6
6
  tenantId: 'artisan-co',
7
7
  appId: 'artisan',
8
8
  blueprintName: 'artisan.payments.stripe',
9
- blueprintVersion: 1,
9
+ blueprintVersion: '1.0.0',
10
10
  environment: 'production',
11
- version: 1,
11
+ version: '1.0.0',
12
12
  status: 'published',
13
13
  createdAt: new Date().toISOString(),
14
14
  updatedAt: new Date().toISOString(),
package/src/workflow.ts CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  export const collectPaymentWorkflow: WorkflowSpec = {
9
9
  meta: {
10
10
  key: 'artisan.payments.collectPayment',
11
- version: 1,
11
+ version: '1.0.0',
12
12
  title: 'Collect Card Payment',
13
13
  description:
14
14
  'Charge a customer using the tenant Stripe connection and record settlement details.',
@@ -25,7 +25,7 @@ export const collectPaymentWorkflow: WorkflowSpec = {
25
25
  type: 'automation',
26
26
  label: 'Prepare charge parameters',
27
27
  action: {
28
- operation: { key: 'payments.prepareCharge', version: 1 },
28
+ operation: { key: 'payments.prepareCharge', version: '1.0.0' },
29
29
  },
30
30
  },
31
31
  {
@@ -33,7 +33,7 @@ export const collectPaymentWorkflow: WorkflowSpec = {
33
33
  type: 'automation',
34
34
  label: 'Charge card via Stripe',
35
35
  action: {
36
- operation: { key: 'payments.stripe.chargeCard', version: 1 },
36
+ operation: { key: 'payments.stripe.chargeCard', version: '1.0.0' },
37
37
  },
38
38
  },
39
39
  {
@@ -41,7 +41,7 @@ export const collectPaymentWorkflow: WorkflowSpec = {
41
41
  type: 'automation',
42
42
  label: 'Confirm settlement',
43
43
  action: {
44
- operation: { key: 'payments.recordSettlement', version: 1 },
44
+ operation: { key: 'payments.recordSettlement', version: '1.0.0' },
45
45
  },
46
46
  },
47
47
  ],