@storewright/cli 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +19 -0
  2. package/VERSION +1 -0
  3. package/bin/storewright.mjs +62 -0
  4. package/contracts/action-registry.json +175 -0
  5. package/contracts/capability-registry.json +63 -0
  6. package/contracts/workflow-manifest.json +207 -0
  7. package/lib/cli/storewright-cli.mjs +259 -0
  8. package/lib/internal/launch-envelope.mjs +223 -0
  9. package/lib/internal/multi-agent-contracts.mjs +137 -0
  10. package/lib/internal/operation-ledger.mjs +190 -0
  11. package/lib/internal/pricing/default-preview-pricing.mjs +181 -0
  12. package/lib/internal/run-state-helpers.mjs +313 -0
  13. package/lib/internal/shopify-operation-adapter.mjs +456 -0
  14. package/package.json +38 -0
  15. package/schemas/action-registry.schema.json +11 -0
  16. package/schemas/agent-report.schema.json +14 -0
  17. package/schemas/approval-grant.schema.json +16 -0
  18. package/schemas/base-theme-report.schema.json +25 -0
  19. package/schemas/brand-identity.schema.json +142 -0
  20. package/schemas/capability-registry.schema.json +11 -0
  21. package/schemas/competitor-audit.schema.json +38 -0
  22. package/schemas/design-direction.schema.json +64 -0
  23. package/schemas/external-operation.schema.json +34 -0
  24. package/schemas/intake-blocked-report.schema.json +76 -0
  25. package/schemas/launch-envelope.schema.json +25 -0
  26. package/schemas/launch-readiness.schema.json +73 -0
  27. package/schemas/media-file-inspection-report.schema.json +223 -0
  28. package/schemas/media-manifest.schema.json +84 -0
  29. package/schemas/merchandising-brief.schema.json +27 -0
  30. package/schemas/normalized-product-catalog.schema.json +42 -0
  31. package/schemas/product-content-generation-input.schema.json +40 -0
  32. package/schemas/product-content-generation-output.schema.json +43 -0
  33. package/schemas/raw-product-candidates.schema.json +32 -0
  34. package/schemas/shopify-access-preflight-report.schema.json +213 -0
  35. package/schemas/shopify-content-sync-report.schema.json +190 -0
  36. package/schemas/shopify-media-map.schema.json +87 -0
  37. package/schemas/shopify-media-upload-report.schema.json +96 -0
  38. package/schemas/shopify-operation-request.schema.json +81 -0
  39. package/schemas/shopify-preflight-report.schema.json +187 -0
  40. package/schemas/store-blueprint.schema.json +112 -0
  41. package/schemas/store-content-generation-output.schema.json +102 -0
  42. package/schemas/store-intake.schema.json +205 -0
  43. package/schemas/store-ops-plan.schema.json +82 -0
  44. package/schemas/storefront-preview-review.schema.json +227 -0
  45. package/schemas/supplier-access-report.schema.json +36 -0
  46. package/schemas/supplier-extraction-report.schema.json +185 -0
  47. package/schemas/theme-build-report.schema.json +43 -0
  48. package/schemas/theme-code-change-summary.schema.json +65 -0
  49. package/schemas/theme-plan.schema.json +26 -0
  50. package/schemas/theme-push-report.schema.json +151 -0
  51. package/schemas/theme-workspace-validation-report.schema.json +61 -0
  52. package/schemas/workflow-manifest.schema.json +29 -0
  53. package/scripts/audit-run-state.mjs +472 -0
  54. package/scripts/execute-shopify-operation.mjs +190 -0
  55. package/scripts/generate-image-assets-openai.mjs +342 -0
  56. package/scripts/generate-media-assets.mjs +121 -0
  57. package/scripts/init-run-state.mjs +69 -0
  58. package/scripts/inspect-media-files.mjs +334 -0
  59. package/scripts/prepare-launch-envelope.mjs +47 -0
  60. package/scripts/shopify-access-preflight.mjs +432 -0
  61. package/scripts/upload-shopify-media.mjs +831 -0
  62. package/scripts/validate-agent-report.mjs +46 -0
  63. package/scripts/validate-artifact.mjs +196 -0
  64. package/scripts/validate-launch-envelope.mjs +50 -0
  65. package/scripts/validate-registries.mjs +50 -0
  66. package/scripts/validate-workflow-manifest.mjs +38 -0
  67. package/scripts/version.mjs +192 -0
package/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # Storewright CLI
2
+
3
+ Public CLI bootstrap and deterministic helper commands for Storewright.
4
+
5
+ Install:
6
+
7
+ ```bash
8
+ npm install -g @storewright/cli
9
+ ```
10
+
11
+ Install or refresh the private Codex Storewright plugin:
12
+
13
+ ```bash
14
+ storewright codex install
15
+ ```
16
+
17
+ This command registers the private Storewright marketplace, installs the Codex plugin, copies Storewright agent profiles from the installed plugin into `~/.codex/agents`, and writes `~/.codex/storewright/codex-install-report.json`.
18
+
19
+ After installation, start a new Codex session so the runtime discovers the agent profiles.
package/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.14.0
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env node
2
+ import { spawnSync } from "node:child_process";
3
+
4
+ import {
5
+ installCodexStorewright,
6
+ parseCodexInstallArgs,
7
+ resolveScriptForCommand,
8
+ scriptPathForCommand
9
+ } from "../lib/cli/storewright-cli.mjs";
10
+
11
+ function usage() {
12
+ return [
13
+ "Usage:",
14
+ " storewright codex install [--source git|local|marketplace] [--marketplace-root <path>] [--marketplace <name>] [--codex-home <path>]",
15
+ " storewright run init [init-run-state args]",
16
+ " storewright run audit [audit-run-state args]",
17
+ " storewright artifact validate [validate-artifact args]",
18
+ " storewright launch-envelope prepare|validate [args]",
19
+ " storewright agent-report validate [args]",
20
+ " storewright registries validate [--package-root <plugin-skill-root>]",
21
+ " storewright workflow-manifest validate [--package-root <plugin-skill-root>]",
22
+ " storewright shopify access-preflight [args]",
23
+ " storewright shopify operation execute [args]",
24
+ " storewright media inspect|generate|generate-openai|upload [args]",
25
+ " storewright version [version args]"
26
+ ].join("\n");
27
+ }
28
+
29
+ async function main(argv = process.argv.slice(2)) {
30
+ if (argv.length === 0 || argv.includes("--help") || argv.includes("-h")) {
31
+ console.log(usage());
32
+ return;
33
+ }
34
+
35
+ if (argv[0] === "codex" && argv[1] === "install") {
36
+ const report = await installCodexStorewright(parseCodexInstallArgs(argv.slice(2)));
37
+ console.log(JSON.stringify(report, null, 2));
38
+ console.error("Start a new Codex session so Storewright agent profiles are loaded into the runtime.");
39
+ return;
40
+ }
41
+
42
+ const resolved = resolveScriptForCommand(argv);
43
+ if (!resolved) {
44
+ throw new Error(`Unknown Storewright command: ${argv.join(" ")}\n\n${usage()}`);
45
+ }
46
+
47
+ const result = spawnSync(process.execPath, [scriptPathForCommand(resolved.script), ...resolved.passthrough], {
48
+ stdio: "inherit",
49
+ env: process.env
50
+ });
51
+ if (result.error) {
52
+ throw result.error;
53
+ }
54
+ process.exitCode = result.status ?? 1;
55
+ }
56
+
57
+ try {
58
+ await main();
59
+ } catch (error) {
60
+ console.error(error.message);
61
+ process.exitCode = 1;
62
+ }
@@ -0,0 +1,175 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "actions": {
4
+ "storewright.artifacts.write": {
5
+ "executor": {
6
+ "server": "workspace",
7
+ "tool": "artifact_write"
8
+ },
9
+ "requiredScopes": [],
10
+ "requiredPreconditions": [],
11
+ "impactClass": "local-only",
12
+ "approvalRequirement": "none"
13
+ },
14
+ "storewright.browser.captureEvidence": {
15
+ "executor": {
16
+ "server": "browser-evidence",
17
+ "tool": "capture_page"
18
+ },
19
+ "requiredScopes": [],
20
+ "requiredPreconditions": [],
21
+ "impactClass": "local-only",
22
+ "approvalRequirement": "workflow-gate"
23
+ },
24
+ "storewright.media.generate": {
25
+ "executor": {
26
+ "server": "media-generation",
27
+ "tool": "generate_media"
28
+ },
29
+ "requiredScopes": [],
30
+ "requiredPreconditions": [],
31
+ "impactClass": "local-only",
32
+ "approvalRequirement": "workflow-gate"
33
+ },
34
+ "shopify.auth.preflight": {
35
+ "executor": {
36
+ "server": "storewright-operations",
37
+ "tool": "shopify_preflight"
38
+ },
39
+ "requiredScopes": [],
40
+ "requiredPreconditions": [],
41
+ "impactClass": "remote-read",
42
+ "approvalRequirement": "workflow-gate"
43
+ },
44
+ "shopify.media.upload": {
45
+ "executor": {
46
+ "server": "storewright-operations",
47
+ "tool": "media_upload"
48
+ },
49
+ "requiredScopes": [
50
+ "write_files"
51
+ ],
52
+ "requiredPreconditions": [
53
+ "shopify-preflight-passed"
54
+ ],
55
+ "impactClass": "remote-draft",
56
+ "approvalRequirement": "workflow-gate"
57
+ },
58
+ "shopify.products.upsert": {
59
+ "executor": {
60
+ "server": "storewright-operations",
61
+ "tool": "catalog_upsert"
62
+ },
63
+ "requiredScopes": [
64
+ "write_products"
65
+ ],
66
+ "requiredPreconditions": [
67
+ "shopify-preflight-passed"
68
+ ],
69
+ "impactClass": "remote-draft",
70
+ "approvalRequirement": "workflow-gate"
71
+ },
72
+ "shopify.products.publishToOnlineStore": {
73
+ "executor": {
74
+ "server": "storewright-operations",
75
+ "tool": "publishable_publish"
76
+ },
77
+ "requiredScopes": [
78
+ "write_products",
79
+ "write_publications"
80
+ ],
81
+ "requiredPreconditions": [
82
+ "shopify-preflight-passed",
83
+ "online-store-publication-resolved"
84
+ ],
85
+ "impactClass": "remote-public",
86
+ "approvalRequirement": "explicit-user"
87
+ },
88
+ "shopify.collections.upsert": {
89
+ "executor": {
90
+ "server": "storewright-operations",
91
+ "tool": "collection_upsert"
92
+ },
93
+ "requiredScopes": [
94
+ "write_products"
95
+ ],
96
+ "requiredPreconditions": [
97
+ "shopify-preflight-passed"
98
+ ],
99
+ "impactClass": "remote-draft",
100
+ "approvalRequirement": "workflow-gate"
101
+ },
102
+ "shopify.collections.attachProducts": {
103
+ "executor": {
104
+ "server": "storewright-operations",
105
+ "tool": "collection_attach_products"
106
+ },
107
+ "requiredScopes": [
108
+ "write_products"
109
+ ],
110
+ "requiredPreconditions": [
111
+ "shopify-preflight-passed"
112
+ ],
113
+ "impactClass": "remote-draft",
114
+ "approvalRequirement": "workflow-gate"
115
+ },
116
+ "shopify.collections.publishToOnlineStore": {
117
+ "executor": {
118
+ "server": "storewright-operations",
119
+ "tool": "publishable_publish"
120
+ },
121
+ "requiredScopes": [
122
+ "write_products",
123
+ "write_publications"
124
+ ],
125
+ "requiredPreconditions": [
126
+ "shopify-preflight-passed",
127
+ "online-store-publication-resolved"
128
+ ],
129
+ "impactClass": "remote-public",
130
+ "approvalRequirement": "explicit-user"
131
+ },
132
+ "shopify.content.upsertPages": {
133
+ "executor": {
134
+ "server": "storewright-operations",
135
+ "tool": "content_upsert_pages"
136
+ },
137
+ "requiredScopes": [
138
+ "write_content"
139
+ ],
140
+ "requiredPreconditions": [
141
+ "shopify-preflight-passed"
142
+ ],
143
+ "impactClass": "remote-draft",
144
+ "approvalRequirement": "workflow-gate"
145
+ },
146
+ "shopify.navigation.upsertPreviewMenu": {
147
+ "executor": {
148
+ "server": "storewright-operations",
149
+ "tool": "navigation_upsert_preview_menu"
150
+ },
151
+ "requiredScopes": [
152
+ "write_online_store_navigation"
153
+ ],
154
+ "requiredPreconditions": [
155
+ "shopify-preflight-passed"
156
+ ],
157
+ "impactClass": "remote-draft",
158
+ "approvalRequirement": "workflow-gate"
159
+ },
160
+ "shopify.theme.pushUnpublished": {
161
+ "executor": {
162
+ "server": "storewright-operations",
163
+ "tool": "theme_push_unpublished"
164
+ },
165
+ "requiredScopes": [
166
+ "write_themes"
167
+ ],
168
+ "requiredPreconditions": [
169
+ "shopify-preflight-passed"
170
+ ],
171
+ "impactClass": "remote-draft",
172
+ "approvalRequirement": "workflow-gate"
173
+ }
174
+ }
175
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "profiles": {
4
+ "storewright-stage-worker": {
5
+ "allowedActions": [
6
+ "storewright.artifacts.write"
7
+ ]
8
+ },
9
+ "storewright-browser-worker": {
10
+ "allowedActions": [
11
+ "storewright.artifacts.write",
12
+ "storewright.browser.captureEvidence"
13
+ ]
14
+ },
15
+ "storewright-media-worker": {
16
+ "allowedActions": [
17
+ "storewright.artifacts.write",
18
+ "storewright.media.generate"
19
+ ]
20
+ },
21
+ "storewright-theme-worker": {
22
+ "allowedActions": [
23
+ "storewright.artifacts.write"
24
+ ]
25
+ },
26
+ "storewright-shopify-read-worker": {
27
+ "allowedActions": [
28
+ "storewright.artifacts.write",
29
+ "shopify.auth.preflight"
30
+ ]
31
+ },
32
+ "storewright-shopify-catalog-worker": {
33
+ "allowedActions": [
34
+ "storewright.artifacts.write",
35
+ "shopify.media.upload",
36
+ "shopify.products.upsert",
37
+ "shopify.products.publishToOnlineStore",
38
+ "shopify.collections.upsert",
39
+ "shopify.collections.attachProducts",
40
+ "shopify.collections.publishToOnlineStore"
41
+ ]
42
+ },
43
+ "storewright-shopify-content-worker": {
44
+ "allowedActions": [
45
+ "storewright.artifacts.write",
46
+ "shopify.content.upsertPages",
47
+ "shopify.navigation.upsertPreviewMenu"
48
+ ]
49
+ },
50
+ "storewright-shopify-theme-deploy-worker": {
51
+ "allowedActions": [
52
+ "storewright.artifacts.write",
53
+ "shopify.theme.pushUnpublished"
54
+ ]
55
+ },
56
+ "storewright-reviewer": {
57
+ "allowedActions": []
58
+ },
59
+ "storewright-verifier": {
60
+ "allowedActions": []
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,207 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "workflowId": "storewright-official-build",
4
+ "workflowVersion": "1.0.0",
5
+ "stages": [
6
+ {
7
+ "id": "01",
8
+ "name": "Intake",
9
+ "ownerProfile": "intake-worker",
10
+ "runtimeAgentType": "storewright-stage-worker",
11
+ "packet": "workflows/stages/01-intake.md",
12
+ "spec": "workflows/stage-specs/01-intake.json",
13
+ "gateSpec": "workflows/gate-specs/01-intake.json",
14
+ "actionPolicyRef": "storewright.local-authoring"
15
+ },
16
+ {
17
+ "id": "01A",
18
+ "name": "Shopify Access Preflight",
19
+ "ownerProfile": "shopify-access-preflight-worker",
20
+ "runtimeAgentType": "storewright-shopify-read-worker",
21
+ "packet": "workflows/stages/01A-shopify-access-preflight.md",
22
+ "spec": "workflows/stage-specs/01A-shopify-access-preflight.json",
23
+ "gateSpec": "workflows/gate-specs/01A-shopify-access-preflight.json",
24
+ "actionPolicyRef": "storewright.shopify-preflight"
25
+ },
26
+ {
27
+ "id": "02",
28
+ "name": "Product Source Normalize",
29
+ "ownerProfile": "product-source-normalize-worker",
30
+ "runtimeAgentType": "storewright-stage-worker",
31
+ "packet": "workflows/stages/02-product-source-normalize.md",
32
+ "spec": "workflows/stage-specs/02-product-source-normalize.json",
33
+ "gateSpec": "workflows/gate-specs/02-product-source-normalize.json",
34
+ "actionPolicyRef": "storewright.local-authoring"
35
+ },
36
+ {
37
+ "id": "03",
38
+ "name": "Supplier Extraction",
39
+ "ownerProfile": "supplier-extraction-worker",
40
+ "runtimeAgentType": "storewright-browser-worker",
41
+ "packet": "workflows/stages/03-supplier-extraction.md",
42
+ "spec": "workflows/stage-specs/03-supplier-extraction.json",
43
+ "gateSpec": "workflows/gate-specs/03-supplier-extraction.json",
44
+ "actionPolicyRef": "storewright.supplier-extraction.browser-evidence"
45
+ },
46
+ {
47
+ "id": "04",
48
+ "name": "Product Content",
49
+ "ownerProfile": "product-content-worker",
50
+ "runtimeAgentType": "storewright-stage-worker",
51
+ "packet": "workflows/stages/04-product-content.md",
52
+ "spec": "workflows/stage-specs/04-product-content.json",
53
+ "gateSpec": "workflows/gate-specs/04-product-content.json",
54
+ "actionPolicyRef": "storewright.local-authoring"
55
+ },
56
+ {
57
+ "id": "05",
58
+ "name": "Merchandising Strategy",
59
+ "ownerProfile": "merchandising-strategy-worker",
60
+ "runtimeAgentType": "storewright-stage-worker",
61
+ "packet": "workflows/stages/05-merchandising-strategy.md",
62
+ "spec": "workflows/stage-specs/05-merchandising-strategy.json",
63
+ "gateSpec": "workflows/gate-specs/05-merchandising-strategy.json",
64
+ "actionPolicyRef": "storewright.local-authoring"
65
+ },
66
+ {
67
+ "id": "06",
68
+ "name": "Brand Identity",
69
+ "ownerProfile": "brand-identity-worker",
70
+ "runtimeAgentType": "storewright-stage-worker",
71
+ "packet": "workflows/stages/06-brand-identity.md",
72
+ "spec": "workflows/stage-specs/06-brand-identity.json",
73
+ "gateSpec": "workflows/gate-specs/06-brand-identity.json",
74
+ "actionPolicyRef": "storewright.local-authoring"
75
+ },
76
+ {
77
+ "id": "07",
78
+ "name": "Store Content",
79
+ "ownerProfile": "store-content-worker",
80
+ "runtimeAgentType": "storewright-stage-worker",
81
+ "packet": "workflows/stages/07-store-content.md",
82
+ "spec": "workflows/stage-specs/07-store-content.json",
83
+ "gateSpec": "workflows/gate-specs/07-store-content.json",
84
+ "actionPolicyRef": "storewright.local-authoring"
85
+ },
86
+ {
87
+ "id": "08",
88
+ "name": "Design Direction",
89
+ "ownerProfile": "design-direction-worker",
90
+ "runtimeAgentType": "storewright-stage-worker",
91
+ "packet": "workflows/stages/08-design-direction.md",
92
+ "spec": "workflows/stage-specs/08-design-direction.json",
93
+ "gateSpec": "workflows/gate-specs/08-design-direction.json",
94
+ "actionPolicyRef": "storewright.local-authoring"
95
+ },
96
+ {
97
+ "id": "09",
98
+ "name": "Store Blueprint",
99
+ "ownerProfile": "store-blueprint-worker",
100
+ "runtimeAgentType": "storewright-stage-worker",
101
+ "packet": "workflows/stages/09-store-blueprint.md",
102
+ "spec": "workflows/stage-specs/09-store-blueprint.json",
103
+ "gateSpec": "workflows/gate-specs/09-store-blueprint.json",
104
+ "actionPolicyRef": "storewright.local-authoring"
105
+ },
106
+ {
107
+ "id": "09A",
108
+ "name": "Media Production",
109
+ "ownerProfile": "media-production-worker",
110
+ "runtimeAgentType": "storewright-media-worker",
111
+ "packet": "workflows/stages/09A-media-production.md",
112
+ "spec": "workflows/stage-specs/09A-media-production.json",
113
+ "gateSpec": "workflows/gate-specs/09A-media-production.json",
114
+ "actionPolicyRef": "storewright.media-production"
115
+ },
116
+ {
117
+ "id": "09B",
118
+ "name": "Shopify Media Upload",
119
+ "ownerProfile": "shopify-media-upload-worker",
120
+ "runtimeAgentType": "storewright-shopify-catalog-worker",
121
+ "packet": "workflows/stages/09B-shopify-media-upload.md",
122
+ "spec": "workflows/stage-specs/09B-shopify-media-upload.json",
123
+ "gateSpec": "workflows/gate-specs/09B-shopify-media-upload.json",
124
+ "actionPolicyRef": "storewright.shopify-media-upload"
125
+ },
126
+ {
127
+ "id": "10",
128
+ "name": "Theme Build And Apply",
129
+ "ownerProfile": "theme-build-worker",
130
+ "runtimeAgentType": "storewright-theme-worker",
131
+ "packet": "workflows/stages/10-theme-build-and-apply.md",
132
+ "spec": "workflows/stage-specs/10-theme-build-and-apply.json",
133
+ "gateSpec": "workflows/gate-specs/10-theme-build-and-apply.json",
134
+ "actionPolicyRef": "storewright.theme-local"
135
+ },
136
+ {
137
+ "id": "11A",
138
+ "name": "Shopify Preflight Auth Scope",
139
+ "ownerProfile": "store-ops-preflight-worker",
140
+ "runtimeAgentType": "storewright-shopify-read-worker",
141
+ "packet": "workflows/stages/11A-shopify-preflight-auth-scope.md",
142
+ "spec": "workflows/stage-specs/11A-shopify-preflight-auth-scope.json",
143
+ "gateSpec": "workflows/gate-specs/11A-shopify-preflight-auth-scope.json",
144
+ "actionPolicyRef": "storewright.shopify-preflight"
145
+ },
146
+ {
147
+ "id": "11B",
148
+ "name": "Shopify Products Collections",
149
+ "ownerProfile": "store-ops-products-worker",
150
+ "runtimeAgentType": "storewright-shopify-catalog-worker",
151
+ "packet": "workflows/stages/11B-shopify-products-collections.md",
152
+ "spec": "workflows/stage-specs/11B-shopify-products-collections.json",
153
+ "gateSpec": "workflows/gate-specs/11B-shopify-products-collections.json",
154
+ "actionPolicyRef": "storewright.shopify-catalog"
155
+ },
156
+ {
157
+ "id": "11C",
158
+ "name": "Shopify Content Navigation",
159
+ "ownerProfile": "store-ops-content-worker",
160
+ "runtimeAgentType": "storewright-shopify-content-worker",
161
+ "packet": "workflows/stages/11C-shopify-content-navigation.md",
162
+ "spec": "workflows/stage-specs/11C-shopify-content-navigation.json",
163
+ "gateSpec": "workflows/gate-specs/11C-shopify-content-navigation.json",
164
+ "actionPolicyRef": "storewright.shopify-content"
165
+ },
166
+ {
167
+ "id": "11D",
168
+ "name": "Shopify Theme Push",
169
+ "ownerProfile": "store-ops-theme-worker",
170
+ "runtimeAgentType": "storewright-shopify-theme-deploy-worker",
171
+ "packet": "workflows/stages/11D-shopify-theme-push.md",
172
+ "spec": "workflows/stage-specs/11D-shopify-theme-push.json",
173
+ "gateSpec": "workflows/gate-specs/11D-shopify-theme-push.json",
174
+ "actionPolicyRef": "storewright.shopify-theme-deploy"
175
+ },
176
+ {
177
+ "id": "11E",
178
+ "name": "Shopify Store Ops Consolidation",
179
+ "ownerProfile": "store-ops-consolidation-worker",
180
+ "runtimeAgentType": "storewright-shopify-read-worker",
181
+ "packet": "workflows/stages/11E-shopify-store-ops-consolidation.md",
182
+ "spec": "workflows/stage-specs/11E-shopify-store-ops-consolidation.json",
183
+ "gateSpec": "workflows/gate-specs/11E-shopify-store-ops-consolidation.json",
184
+ "actionPolicyRef": "storewright.shopify-consolidation"
185
+ },
186
+ {
187
+ "id": "11F",
188
+ "name": "Storefront Preview Acceptance Review",
189
+ "ownerProfile": "storefront-preview-review-worker",
190
+ "runtimeAgentType": "storewright-browser-worker",
191
+ "packet": "workflows/stages/11F-storefront-preview-acceptance-review.md",
192
+ "spec": "workflows/stage-specs/11F-storefront-preview-acceptance-review.json",
193
+ "gateSpec": "workflows/gate-specs/11F-storefront-preview-acceptance-review.json",
194
+ "actionPolicyRef": "storewright.storefront-preview-review"
195
+ },
196
+ {
197
+ "id": "12",
198
+ "name": "Launch Readiness",
199
+ "ownerProfile": "launch-readiness-worker",
200
+ "runtimeAgentType": "storewright-verifier",
201
+ "packet": "workflows/stages/12-launch-readiness.md",
202
+ "spec": "workflows/stage-specs/12-launch-readiness.json",
203
+ "gateSpec": "workflows/gate-specs/12-launch-readiness.json",
204
+ "actionPolicyRef": "storewright.launch-readiness"
205
+ }
206
+ ]
207
+ }