@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
@@ -0,0 +1,185 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://example.local/storewright/supplier-extraction-report.schema.json",
4
+ "title": "Supplier Extraction Report",
5
+ "type": "object",
6
+ "required": [
7
+ "schemaVersion",
8
+ "runId",
9
+ "authoring",
10
+ "supplierExtraction"
11
+ ],
12
+ "properties": {
13
+ "schemaVersion": {
14
+ "type": "string"
15
+ },
16
+ "runId": {
17
+ "type": "string",
18
+ "minLength": 1
19
+ },
20
+ "authoring": {
21
+ "type": "object",
22
+ "required": [
23
+ "mode",
24
+ "createdBy",
25
+ "sourceInputArtifacts"
26
+ ],
27
+ "properties": {
28
+ "mode": {
29
+ "type": "string",
30
+ "const": "worker-authored"
31
+ },
32
+ "createdBy": {
33
+ "type": "string",
34
+ "minLength": 1
35
+ },
36
+ "sourceInputArtifacts": {
37
+ "type": "array",
38
+ "minItems": 1,
39
+ "items": {
40
+ "type": "string",
41
+ "minLength": 1
42
+ }
43
+ }
44
+ }
45
+ },
46
+ "supplierExtraction": {
47
+ "type": "object",
48
+ "required": [
49
+ "extractionState",
50
+ "items"
51
+ ],
52
+ "properties": {
53
+ "extractionState": {
54
+ "type": "string"
55
+ },
56
+ "items": {
57
+ "type": "array",
58
+ "items": {
59
+ "type": "object",
60
+ "required": [
61
+ "candidateId",
62
+ "sourceUrl",
63
+ "evidenceStatus",
64
+ "imageSignals",
65
+ "localMediaPaths",
66
+ "localMediaEvidence"
67
+ ],
68
+ "properties": {
69
+ "candidateId": {
70
+ "type": "string",
71
+ "minLength": 1
72
+ },
73
+ "sourceUrl": {
74
+ "type": "string",
75
+ "minLength": 1
76
+ },
77
+ "finalUrl": {
78
+ "type": "string"
79
+ },
80
+ "evidenceStatus": {
81
+ "type": "string",
82
+ "minLength": 1
83
+ },
84
+ "pageState": {
85
+ "type": "string"
86
+ },
87
+ "titleText": {
88
+ "type": "string"
89
+ },
90
+ "priceSignals": {
91
+ "type": "array"
92
+ },
93
+ "imageSignals": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "string"
97
+ }
98
+ },
99
+ "localMediaPaths": {
100
+ "type": "array",
101
+ "items": {
102
+ "type": "string",
103
+ "minLength": 1
104
+ }
105
+ },
106
+ "localMediaEvidence": {
107
+ "type": "array",
108
+ "items": {
109
+ "type": "object",
110
+ "required": [
111
+ "sourceUrl",
112
+ "localPath",
113
+ "bytes",
114
+ "status",
115
+ "selectionDecision",
116
+ "selectionReason",
117
+ "inspectionFindingRefs"
118
+ ],
119
+ "properties": {
120
+ "sourceUrl": {
121
+ "type": "string",
122
+ "minLength": 1
123
+ },
124
+ "localPath": {
125
+ "type": "string",
126
+ "minLength": 1
127
+ },
128
+ "contentType": {
129
+ "type": "string"
130
+ },
131
+ "bytes": {
132
+ "type": "number",
133
+ "minimum": 0
134
+ },
135
+ "status": {
136
+ "type": "string",
137
+ "minLength": 1
138
+ },
139
+ "selectionDecision": {
140
+ "type": "string",
141
+ "enum": [
142
+ "usable",
143
+ "rejected",
144
+ "provenance-only"
145
+ ]
146
+ },
147
+ "selectionReason": {
148
+ "type": "string",
149
+ "minLength": 1
150
+ },
151
+ "inspectionFindingRefs": {
152
+ "type": "array",
153
+ "items": {
154
+ "type": "string",
155
+ "minLength": 1
156
+ }
157
+ },
158
+ "pageEvidence": {
159
+ "type": "string"
160
+ }
161
+ }
162
+ }
163
+ },
164
+ "rawSignals": {
165
+ "type": "object"
166
+ },
167
+ "errors": {
168
+ "type": "array"
169
+ },
170
+ "warnings": {
171
+ "type": "array"
172
+ }
173
+ }
174
+ }
175
+ },
176
+ "errors": {
177
+ "type": "array"
178
+ },
179
+ "warnings": {
180
+ "type": "array"
181
+ }
182
+ }
183
+ }
184
+ }
185
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://example.local/storewright/theme-build-report.schema.json",
4
+ "title": "Storewright Theme Build Report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "runId", "themeBuild"],
8
+ "properties": {
9
+ "schemaVersion": { "type": "string", "const": "1.0.0" },
10
+ "runId": { "type": "string", "minLength": 1 },
11
+ "themeBuild": {
12
+ "type": "object",
13
+ "additionalProperties": false,
14
+ "required": ["themeName", "themeDir", "baseThemeDir", "filesChanged", "validation"],
15
+ "properties": {
16
+ "themeName": { "type": "string", "minLength": 1 },
17
+ "themeDir": { "type": "string", "minLength": 1 },
18
+ "baseThemeDir": { "type": "string", "minLength": 1 },
19
+ "filesChanged": { "type": "array", "items": { "type": "string" } },
20
+ "push": {
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "properties": {
24
+ "status": { "type": "string", "enum": ["pending", "pushed", "error"] },
25
+ "themeId": { "type": "string" },
26
+ "previewUrl": { "type": "string" },
27
+ "published": { "type": "boolean", "const": false }
28
+ }
29
+ },
30
+ "validation": {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "required": ["validationResult", "checks"],
34
+ "properties": {
35
+ "validationResult": { "type": "string", "enum": ["pending", "ok", "error"] },
36
+ "checks": { "type": "array", "items": { "type": "string" } }
37
+ }
38
+ },
39
+ "notes": { "type": "array", "items": { "type": "string" } }
40
+ }
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://example.local/storewright/theme-code-change-summary.schema.json",
4
+ "title": "Theme Code Change Summary",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "runId", "authoring", "themeCodeChange"],
8
+ "properties": {
9
+ "schemaVersion": { "type": "string", "const": "1.0.0" },
10
+ "runId": { "type": "string", "minLength": 1 },
11
+ "authoring": {
12
+ "type": "object",
13
+ "additionalProperties": false,
14
+ "required": ["mode", "createdBy", "sourceInputArtifacts"],
15
+ "properties": {
16
+ "mode": { "type": "string", "const": "agent-authored" },
17
+ "createdBy": { "type": "string", "minLength": 1 },
18
+ "sourceInputArtifacts": {
19
+ "type": "array",
20
+ "minItems": 1,
21
+ "items": { "type": "string", "minLength": 1 }
22
+ }
23
+ }
24
+ },
25
+ "themeCodeChange": {
26
+ "type": "object",
27
+ "additionalProperties": false,
28
+ "required": ["themeDir", "changedFiles", "changes", "sourceArtifacts", "baseThemePreservationNotes"],
29
+ "properties": {
30
+ "themeDir": { "type": "string", "minLength": 1 },
31
+ "changedFiles": {
32
+ "type": "array",
33
+ "minItems": 1,
34
+ "items": { "type": "string", "minLength": 1 }
35
+ },
36
+ "changes": {
37
+ "type": "array",
38
+ "items": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": ["file", "rationale"],
42
+ "properties": {
43
+ "file": { "type": "string", "minLength": 1 },
44
+ "rationale": { "type": "string", "minLength": 1 }
45
+ }
46
+ }
47
+ },
48
+ "sourceArtifacts": {
49
+ "type": "array",
50
+ "minItems": 1,
51
+ "items": { "type": "string", "minLength": 1 }
52
+ },
53
+ "baseThemePreservationNotes": {
54
+ "type": "array",
55
+ "minItems": 1,
56
+ "items": { "type": "string", "minLength": 1 }
57
+ },
58
+ "notes": {
59
+ "type": "array",
60
+ "items": { "type": "string" }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://example.local/storewright/theme-plan.schema.json",
4
+ "title": "Theme Plan",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "runId", "themePlan"],
7
+ "properties": {
8
+ "schemaVersion": { "type": "string" },
9
+ "runId": { "type": "string" },
10
+ "themePlan": {
11
+ "type": "object",
12
+ "required": ["inputs"],
13
+ "properties": {
14
+ "inputs": {
15
+ "type": "object",
16
+ "required": ["merchandisingBriefPath"],
17
+ "properties": {
18
+ "storeIntakePath": { "type": "string" },
19
+ "merchandisingBriefPath": { "type": "string" }
20
+ }
21
+ },
22
+ "previewUrl": { "type": "string" }
23
+ }
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,151 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://example.local/storewright/theme-push-report.schema.json",
4
+ "title": "Storewright Theme Push Report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "runId", "authoring", "themePush"],
8
+ "properties": {
9
+ "schemaVersion": { "type": "string", "const": "1.0.0" },
10
+ "runId": { "type": "string", "minLength": 1 },
11
+ "authoring": {
12
+ "type": "object",
13
+ "additionalProperties": false,
14
+ "required": ["mode", "createdBy", "sourceInputArtifacts"],
15
+ "properties": {
16
+ "mode": { "type": "string", "const": "worker-authored" },
17
+ "createdBy": { "type": "string", "minLength": 1 },
18
+ "sourceInputArtifacts": {
19
+ "type": "array",
20
+ "minItems": 1,
21
+ "items": { "type": "string", "minLength": 1 }
22
+ }
23
+ }
24
+ },
25
+ "themePush": {
26
+ "type": "object",
27
+ "additionalProperties": false,
28
+ "required": [
29
+ "targetStore",
30
+ "previewTheme",
31
+ "themeCheck",
32
+ "unpublishedPush",
33
+ "serverAcceptance",
34
+ "remoteVerification",
35
+ "commandAttempts"
36
+ ],
37
+ "properties": {
38
+ "targetStore": { "type": "string", "minLength": 1 },
39
+ "previewTheme": {
40
+ "type": "object",
41
+ "additionalProperties": false,
42
+ "required": ["themeId", "themeName", "previewUrl", "editorUrl"],
43
+ "properties": {
44
+ "themeId": { "type": "string", "minLength": 1 },
45
+ "themeName": { "type": "string", "minLength": 1 },
46
+ "previewUrl": { "type": "string", "minLength": 1 },
47
+ "editorUrl": { "type": "string", "minLength": 1 }
48
+ }
49
+ },
50
+ "themeCheck": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "required": ["commandResult", "warningCount", "errorCount"],
54
+ "properties": {
55
+ "commandResult": { "type": "string", "enum": ["ok", "warning", "error", "skipped"] },
56
+ "warningCount": { "type": "number", "minimum": 0 },
57
+ "errorCount": { "type": "number", "minimum": 0 },
58
+ "rawOutputPath": { "type": "string", "minLength": 1 }
59
+ }
60
+ },
61
+ "unpublishedPush": {
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "required": [
65
+ "commandResult",
66
+ "pushState",
67
+ "pushedWithErrors",
68
+ "localFileCount",
69
+ "remoteFileCount",
70
+ "remoteMissingFiles"
71
+ ],
72
+ "properties": {
73
+ "commandResult": { "type": "string", "enum": ["ok", "warning", "error", "skipped"] },
74
+ "pushState": { "type": "string", "enum": ["complete", "partial", "failed", "skipped"] },
75
+ "pushedWithErrors": { "type": "boolean" },
76
+ "localFileCount": { "type": "number", "minimum": 0 },
77
+ "remoteFileCount": { "type": "number", "minimum": 0 },
78
+ "remoteMissingFiles": {
79
+ "type": "array",
80
+ "items": { "type": "string", "minLength": 1 }
81
+ },
82
+ "rawOutputPath": { "type": "string", "minLength": 1 }
83
+ }
84
+ },
85
+ "serverAcceptance": {
86
+ "type": "object",
87
+ "additionalProperties": false,
88
+ "required": ["accepted", "failureSignals"],
89
+ "properties": {
90
+ "accepted": { "type": "boolean" },
91
+ "failureSignals": {
92
+ "type": "array",
93
+ "items": { "type": "string", "minLength": 1 }
94
+ }
95
+ }
96
+ },
97
+ "remoteVerification": {
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": ["verificationResult", "themePreviewReady", "checks"],
101
+ "properties": {
102
+ "verificationResult": { "type": "string", "enum": ["ok", "warning", "error", "skipped"] },
103
+ "themePreviewReady": { "type": "boolean" },
104
+ "previewUrl": { "type": "string", "minLength": 1 },
105
+ "checks": {
106
+ "type": "array",
107
+ "items": {
108
+ "type": "object",
109
+ "additionalProperties": false,
110
+ "required": ["name", "result"],
111
+ "properties": {
112
+ "name": { "type": "string", "minLength": 1 },
113
+ "result": { "type": "string", "enum": ["ok", "warning", "error", "skipped"] },
114
+ "details": { "type": "string" },
115
+ "rawOutputPath": { "type": "string", "minLength": 1 }
116
+ }
117
+ }
118
+ }
119
+ }
120
+ },
121
+ "commandAttempts": {
122
+ "type": "array",
123
+ "items": {
124
+ "type": "object",
125
+ "additionalProperties": false,
126
+ "required": [
127
+ "command",
128
+ "cwd",
129
+ "exitCode",
130
+ "commandResult",
131
+ "stdoutSummary",
132
+ "stderrSummary",
133
+ "parsedFacts",
134
+ "rawOutputPath"
135
+ ],
136
+ "properties": {
137
+ "command": { "type": "string", "minLength": 1 },
138
+ "cwd": { "type": "string", "minLength": 1 },
139
+ "exitCode": { "type": "number" },
140
+ "commandResult": { "type": "string", "enum": ["ok", "warning", "error", "timeout", "skipped"] },
141
+ "stdoutSummary": { "type": "string" },
142
+ "stderrSummary": { "type": "string" },
143
+ "parsedFacts": { "type": "object" },
144
+ "rawOutputPath": { "type": "string", "minLength": 1 }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ }
150
+ }
151
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://example.local/storewright/theme-workspace-validation-report.schema.json",
4
+ "title": "Theme Workspace Validation Report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "runId", "authoring", "themeWorkspaceValidation"],
8
+ "properties": {
9
+ "schemaVersion": { "type": "string", "const": "1.0.0" },
10
+ "runId": { "type": "string", "minLength": 1 },
11
+ "authoring": {
12
+ "type": "object",
13
+ "additionalProperties": false,
14
+ "required": ["mode", "createdBy", "sourceInputArtifacts"],
15
+ "properties": {
16
+ "mode": { "type": "string", "const": "worker-authored" },
17
+ "createdBy": { "type": "string", "minLength": 1 },
18
+ "sourceInputArtifacts": {
19
+ "type": "array",
20
+ "minItems": 1,
21
+ "items": { "type": "string", "minLength": 1 }
22
+ }
23
+ }
24
+ },
25
+ "themeWorkspaceValidation": {
26
+ "type": "object",
27
+ "additionalProperties": false,
28
+ "required": ["validationResult", "themeDir", "baseThemeDir", "checkedFiles", "checks", "errors", "warnings"],
29
+ "properties": {
30
+ "validationResult": { "type": "string", "enum": ["ok", "needs-repair"] },
31
+ "themeDir": { "type": "string", "minLength": 1 },
32
+ "baseThemeDir": { "type": "string", "minLength": 1 },
33
+ "checkedFiles": {
34
+ "type": "array",
35
+ "items": { "type": "string", "minLength": 1 }
36
+ },
37
+ "checks": {
38
+ "type": "array",
39
+ "items": {
40
+ "type": "object",
41
+ "additionalProperties": false,
42
+ "required": ["name", "result"],
43
+ "properties": {
44
+ "name": { "type": "string", "minLength": 1 },
45
+ "result": { "type": "string", "enum": ["ok", "error", "warning"] },
46
+ "details": { "type": "string" }
47
+ }
48
+ }
49
+ },
50
+ "errors": {
51
+ "type": "array",
52
+ "items": { "type": "string" }
53
+ },
54
+ "warnings": {
55
+ "type": "array",
56
+ "items": { "type": "string" }
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "type": "object",
3
+ "required": ["schemaVersion", "workflowId", "workflowVersion", "stages"],
4
+ "properties": {
5
+ "schemaVersion": { "const": "1.0.0" },
6
+ "workflowId": { "type": "string", "minLength": 1 },
7
+ "workflowVersion": { "type": "string", "minLength": 1 },
8
+ "stages": {
9
+ "type": "array",
10
+ "minItems": 1,
11
+ "items": {
12
+ "type": "object",
13
+ "required": ["id", "name", "ownerProfile", "runtimeAgentType", "packet", "spec", "gateSpec", "actionPolicyRef"],
14
+ "properties": {
15
+ "id": { "type": "string", "minLength": 1 },
16
+ "name": { "type": "string", "minLength": 1 },
17
+ "ownerProfile": { "type": "string", "minLength": 1 },
18
+ "runtimeAgentType": { "type": "string", "minLength": 1 },
19
+ "packet": { "type": "string", "minLength": 1 },
20
+ "spec": { "type": "string", "minLength": 1 },
21
+ "gateSpec": { "type": "string", "minLength": 1 },
22
+ "actionPolicyRef": { "type": "string", "minLength": 1 }
23
+ },
24
+ "additionalProperties": false
25
+ }
26
+ }
27
+ },
28
+ "additionalProperties": false
29
+ }