@fluentcommerce/ai-skills 0.1.0 → 0.3.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.

Potentially problematic release.


This version of @fluentcommerce/ai-skills might be problematic. Click here for more details.

Files changed (168) hide show
  1. package/README.md +866 -622
  2. package/bin/cli.mjs +2112 -1973
  3. package/content/cli/agents/fluent-cli/agent.json +149 -149
  4. package/content/cli/agents/fluent-cli.md +132 -132
  5. package/content/cli/skills/fluent-bootstrap/SKILL.md +214 -181
  6. package/content/cli/skills/fluent-cli-index/SKILL.md +1 -1
  7. package/content/cli/skills/fluent-cli-mcp-cicd/SKILL.md +117 -1
  8. package/content/cli/skills/fluent-cli-reference/SKILL.md +1040 -1031
  9. package/content/cli/skills/fluent-cli-retailer/SKILL.md +27 -2
  10. package/content/cli/skills/fluent-cli-settings/SKILL.md +21 -1
  11. package/content/cli/skills/fluent-connect/SKILL.md +937 -886
  12. package/content/cli/skills/fluent-module-deploy/SKILL.md +63 -5
  13. package/content/cli/skills/fluent-profile/SKILL.md +73 -0
  14. package/content/cli/skills/fluent-workflow/SKILL.md +360 -310
  15. package/content/dev/agents/fluent-backend-dev/AGENT.md +58 -0
  16. package/content/dev/agents/fluent-backend-dev/agent.json +69 -0
  17. package/content/dev/agents/fluent-backend-dev.md +287 -0
  18. package/content/dev/agents/fluent-dev/AGENT.md +98 -0
  19. package/content/dev/agents/fluent-dev/agent.json +14 -2
  20. package/content/dev/agents/fluent-dev.md +194 -525
  21. package/content/dev/agents/fluent-frontend-dev/AGENT.md +63 -0
  22. package/content/dev/agents/fluent-frontend-dev/agent.json +52 -0
  23. package/content/dev/agents/fluent-frontend-dev.md +323 -0
  24. package/content/dev/skills/fluent-archive/SKILL.md +234 -0
  25. package/content/dev/skills/fluent-build/SKILL.md +312 -192
  26. package/content/dev/skills/fluent-connection-analysis/SKILL.md +422 -386
  27. package/content/dev/skills/fluent-custom-code/SKILL.md +15 -9
  28. package/content/dev/skills/fluent-data-module-scaffold/SKILL.md +19 -2
  29. package/content/dev/skills/fluent-e2e-test/SKILL.md +501 -394
  30. package/content/dev/skills/fluent-event-api/SKILL.md +962 -945
  31. package/content/dev/skills/fluent-feature-explain/SKILL.md +680 -603
  32. package/content/dev/skills/fluent-feature-plan/PLAN_TEMPLATE.md +27 -2
  33. package/content/dev/skills/fluent-feature-plan/SKILL.md +478 -227
  34. package/content/dev/skills/fluent-feature-status/SKILL.md +335 -0
  35. package/content/dev/skills/fluent-feedback/SKILL.md +221 -0
  36. package/content/dev/skills/fluent-implementation-map/SKILL.md +644 -0
  37. package/content/dev/skills/fluent-job-batch/SKILL.md +10 -0
  38. package/content/dev/skills/fluent-module-scaffold/SKILL.md +64 -2
  39. package/content/dev/skills/fluent-module-validate/SKILL.md +778 -775
  40. package/content/dev/skills/fluent-mystique-analyze/SKILL.md +817 -0
  41. package/content/dev/skills/fluent-mystique-builder/COMPONENT_TEMPLATE.md +81 -0
  42. package/content/dev/skills/fluent-mystique-builder/README.md +63 -0
  43. package/content/dev/skills/fluent-mystique-builder/SKILL.md +1294 -0
  44. package/content/dev/skills/fluent-mystique-builder/components/INDEX.md +92 -0
  45. package/content/dev/skills/fluent-mystique-builder/components/fc.accordion.md +48 -0
  46. package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.fulfilmentpack.md +20 -0
  47. package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.multiparcel.md +21 -0
  48. package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.returnitems.md +21 -0
  49. package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.wavepick.md +21 -0
  50. package/content/dev/skills/fluent-mystique-builder/components/fc.action.inline.md +24 -0
  51. package/content/dev/skills/fluent-mystique-builder/components/fc.activity.entity.md +25 -0
  52. package/content/dev/skills/fluent-mystique-builder/components/fc.analytics.viz.md +20 -0
  53. package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.column.md +111 -0
  54. package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.json.md +20 -0
  55. package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.jsoneditor.md +54 -0
  56. package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.locationId.md +51 -0
  57. package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.retailerId.md +52 -0
  58. package/content/dev/skills/fluent-mystique-builder/components/fc.button.bar.md +57 -0
  59. package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.download.md +53 -0
  60. package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.inline.compatibility.md +60 -0
  61. package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.inline.md +53 -0
  62. package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.md +24 -0
  63. package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.pick.md +61 -0
  64. package/content/dev/skills/fluent-mystique-builder/components/fc.buttons.add.reject.md +20 -0
  65. package/content/dev/skills/fluent-mystique-builder/components/fc.card.attribute.md +73 -0
  66. package/content/dev/skills/fluent-mystique-builder/components/fc.card.attributes.grid.md +40 -0
  67. package/content/dev/skills/fluent-mystique-builder/components/fc.card.image.md +37 -0
  68. package/content/dev/skills/fluent-mystique-builder/components/fc.card.map.point.md +24 -0
  69. package/content/dev/skills/fluent-mystique-builder/components/fc.card.multi.md +79 -0
  70. package/content/dev/skills/fluent-mystique-builder/components/fc.card.product.md +27 -0
  71. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.area.md +34 -0
  72. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.area.wrapper.feed.md +98 -0
  73. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.bar.md +52 -0
  74. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.bar.wrapper.source.md +104 -0
  75. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.gauge.md +28 -0
  76. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.gauge.wrapper.threshold.md +118 -0
  77. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.line.md +32 -0
  78. package/content/dev/skills/fluent-mystique-builder/components/fc.conditional.md +62 -0
  79. package/content/dev/skills/fluent-mystique-builder/components/fc.dashboard.threshold.md +65 -0
  80. package/content/dev/skills/fluent-mystique-builder/components/fc.daterange.wrapper.forwarder.md +56 -0
  81. package/content/dev/skills/fluent-mystique-builder/components/fc.drawer.button.md +21 -0
  82. package/content/dev/skills/fluent-mystique-builder/components/fc.event.detail.md +20 -0
  83. package/content/dev/skills/fluent-mystique-builder/components/fc.events.search.md +21 -0
  84. package/content/dev/skills/fluent-mystique-builder/components/fc.field.daterange.md +83 -0
  85. package/content/dev/skills/fluent-mystique-builder/components/fc.field.filterComplex.md +106 -0
  86. package/content/dev/skills/fluent-mystique-builder/components/fc.field.intrange.md +82 -0
  87. package/content/dev/skills/fluent-mystique-builder/components/fc.field.multistring.md +50 -0
  88. package/content/dev/skills/fluent-mystique-builder/components/fc.filterPanel.md +53 -0
  89. package/content/dev/skills/fluent-mystique-builder/components/fc.json.editor.md +22 -0
  90. package/content/dev/skills/fluent-mystique-builder/components/fc.json.viewer.md +21 -0
  91. package/content/dev/skills/fluent-mystique-builder/components/fc.list.customAction.md +79 -0
  92. package/content/dev/skills/fluent-mystique-builder/components/fc.list.md +116 -0
  93. package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.bppmetrics.md +69 -0
  94. package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.feed.md +65 -0
  95. package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.source.md +64 -0
  96. package/content/dev/skills/fluent-mystique-builder/components/fc.modal.button.addItem.md +60 -0
  97. package/content/dev/skills/fluent-mystique-builder/components/fc.modal.button.md +21 -0
  98. package/content/dev/skills/fluent-mystique-builder/components/fc.mutation.inline.md +88 -0
  99. package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.attributes.md +83 -0
  100. package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.text.md +33 -0
  101. package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.link.md +30 -0
  102. package/content/dev/skills/fluent-mystique-builder/components/fc.order.itemDetails.md +20 -0
  103. package/content/dev/skills/fluent-mystique-builder/components/fc.order.shipmentDetails.md +20 -0
  104. package/content/dev/skills/fluent-mystique-builder/components/fc.page.filter.select.md +87 -0
  105. package/content/dev/skills/fluent-mystique-builder/components/fc.page.md +64 -0
  106. package/content/dev/skills/fluent-mystique-builder/components/fc.page.refresh.md +48 -0
  107. package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.column.md +71 -0
  108. package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.header.md +61 -0
  109. package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.md +59 -0
  110. package/content/dev/skills/fluent-mystique-builder/components/fc.page.wizard.md +45 -0
  111. package/content/dev/skills/fluent-mystique-builder/components/fc.page.wizard.summary.md +56 -0
  112. package/content/dev/skills/fluent-mystique-builder/components/fc.progress.circular.md +20 -0
  113. package/content/dev/skills/fluent-mystique-builder/components/fc.provider.graphql.md +71 -0
  114. package/content/dev/skills/fluent-mystique-builder/components/fc.quantity.list.md +87 -0
  115. package/content/dev/skills/fluent-mystique-builder/components/fc.repeater.md +56 -0
  116. package/content/dev/skills/fluent-mystique-builder/components/fc.reports.ipuipc.md +54 -0
  117. package/content/dev/skills/fluent-mystique-builder/components/fc.return.rowExpansion.md +19 -0
  118. package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.barcode.md +21 -0
  119. package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.barcodeFilter.md +72 -0
  120. package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.camera.md +20 -0
  121. package/content/dev/skills/fluent-mystique-builder/components/fc.settingForm.md +64 -0
  122. package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.drawer.button.md +19 -0
  123. package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.modal.button.md +64 -0
  124. package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.strategy.modal.button.md +20 -0
  125. package/content/dev/skills/fluent-mystique-builder/components/fc.stepper.md +20 -0
  126. package/content/dev/skills/fluent-mystique-builder/components/fc.tab.content.md +56 -0
  127. package/content/dev/skills/fluent-mystique-builder/components/fc.tabs.card.md +64 -0
  128. package/content/dev/skills/fluent-mystique-builder/components/fc.tabs.md +69 -0
  129. package/content/dev/skills/fluent-mystique-builder/components/fc.tile.metric.md +73 -0
  130. package/content/dev/skills/fluent-mystique-builder/components/fc.workflow.provider.md +77 -0
  131. package/content/dev/skills/fluent-mystique-builder/validate-docs.ps1 +260 -0
  132. package/content/dev/skills/fluent-mystique-scaffold/SKILL.md +1830 -0
  133. package/content/dev/skills/fluent-mystique-validate/SKILL.md +646 -0
  134. package/content/dev/skills/fluent-pre-deploy-check/SKILL.md +1144 -1108
  135. package/content/dev/skills/fluent-retailer-config/SKILL.md +1162 -1111
  136. package/content/dev/skills/fluent-rollback/SKILL.md +387 -0
  137. package/content/dev/skills/fluent-rule-scaffold/SKILL.md +515 -385
  138. package/content/dev/skills/fluent-scope-decompose/SKILL.md +1123 -1021
  139. package/content/dev/skills/fluent-session-audit-export/SKILL.md +880 -632
  140. package/content/dev/skills/fluent-session-summary/SKILL.md +320 -195
  141. package/content/dev/skills/fluent-settings/SKILL.md +160 -1
  142. package/content/dev/skills/fluent-source-onboard/SKILL.md +31 -3
  143. package/content/dev/skills/fluent-sourcing/SKILL.md +1185 -0
  144. package/content/dev/skills/fluent-system-monitoring/SKILL.md +771 -767
  145. package/content/dev/skills/fluent-test-data/SKILL.md +514 -513
  146. package/content/dev/skills/fluent-trace/SKILL.md +1169 -1143
  147. package/content/dev/skills/fluent-transition-api/SKILL.md +364 -346
  148. package/content/dev/skills/fluent-use-case-discover/SKILL.md +593 -0
  149. package/content/dev/skills/fluent-use-case-discover/SPEC_TEMPLATE.md +281 -0
  150. package/content/dev/skills/fluent-version-manage/SKILL.md +53 -2
  151. package/content/dev/skills/fluent-workflow-analyzer/SKILL.md +995 -959
  152. package/content/dev/skills/fluent-workflow-builder/SKILL.md +668 -319
  153. package/content/dev/skills/fluent-workflow-deploy/SKILL.md +480 -267
  154. package/content/dev/skills/fluent-workspace-tree/SKILL.md +281 -0
  155. package/content/mcp-extn/agents/fluent-mcp.md +133 -69
  156. package/content/mcp-extn/skills/fluent-mcp-tools/SKILL.md +812 -461
  157. package/content/mcp-official/agents/fluent-mcp-core.md +91 -91
  158. package/content/mcp-official/skills/fluent-mcp-core/SKILL.md +94 -94
  159. package/content/rfl/skills/fluent-rfl-assess/SKILL.md +172 -172
  160. package/docs/CAPABILITY_MAP.md +106 -77
  161. package/docs/DEPLOYMENT_PROMOTION_RUNBOOK.md +218 -0
  162. package/docs/DESIGN-implementation-map.md +698 -0
  163. package/docs/DEV_WORKFLOW.md +814 -802
  164. package/docs/FLOW_RUN.md +142 -142
  165. package/docs/GETTING_STARTED.md +427 -0
  166. package/docs/USE_CASES.md +909 -52
  167. package/metadata.json +184 -156
  168. package/package.json +3 -2
@@ -0,0 +1,69 @@
1
+ ---
2
+ alias: "fc.list.wrapper.bppmetrics"
3
+ aliases:
4
+ - fc.list.wrapper.bppmetrics
5
+ category: wrapper
6
+ module: Core
7
+ ---
8
+ # fc.list.wrapper.bppmetrics
9
+
10
+ List wrapper that transforms Metrics API batch-processing data into a format readable by the `fc.list` component, used for BPP (Batch Processing Pipeline) metrics dashboards.
11
+
12
+ ## When to Use
13
+ - Displaying batch-processing pipeline metrics in a tabular list
14
+ - BPP Metrics Dashboard pages
15
+ - Any page that needs to render Metrics API batch data in an `fc.list` table
16
+
17
+ ## Key Props
18
+ | Prop | Type | Required | What it controls |
19
+ |------|------|----------|------------------|
20
+ | `rowLimit` | number | No | Maximum number of rows displayed in the table (default: `100`) |
21
+ | `hideEmptyRecords` | boolean | No | When `true`, hides rows where all cells except the date column are empty |
22
+
23
+ ## Data Binding
24
+ Transforms Metrics API batch-processing response data into the row/column format expected by `fc.list`. The page-level `data.query` should point to a Metrics API BPP endpoint.
25
+
26
+ ## Descendants
27
+ Yes -- accepts `fc.list` (or other list-compatible components) as children. The wrapper feeds transformed data into its descendants.
28
+
29
+ ## Composition Patterns
30
+ - `fc.page` > `fc.list.wrapper.bppmetrics` > `fc.list` for a BPP metrics table
31
+ - Combine with gauge or bar chart wrappers for a full BPP dashboard
32
+ - Use `hideEmptyRecords: true` with `rowLimit` to focus on active processing periods
33
+
34
+ ## Gotchas
35
+ - Only transforms Metrics API BPP data -- will not work with standard GraphQL entity queries
36
+ - Must wrap an `fc.list` descendant to be useful -- the wrapper itself renders nothing visible
37
+ - `rowLimit` defaults to 100 -- set explicitly for pages with large datasets
38
+ - `hideEmptyRecords` only affects rows where non-date columns are all empty
39
+
40
+ ## Manifest Example
41
+ ```json
42
+ {
43
+ "component": "fc.list.wrapper.bppmetrics",
44
+ "props": {
45
+ "rowLimit": 50,
46
+ "hideEmptyRecords": true
47
+ },
48
+ "descendants": [
49
+ {
50
+ "component": "fc.list",
51
+ "props": {
52
+ "dataSource": "bppMetrics",
53
+ "attributes": [
54
+ { "label": "Date", "value": "{{node.date}}" },
55
+ { "label": "Processed", "value": "{{node.processed}}" },
56
+ { "label": "Failed", "value": "{{node.failed}}" },
57
+ { "label": "Pending", "value": "{{node.pending}}" }
58
+ ]
59
+ }
60
+ }
61
+ ]
62
+ }
63
+ ```
64
+
65
+ ## AI Parse Notes
66
+ - **Primary intent:** Declarative Mystique component definition for manifests.
67
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
68
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
69
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,65 @@
1
+ ---
2
+ alias: "fc.list.wrapper.feed"
3
+ aliases:
4
+ - fc.list.wrapper.feed
5
+ category: wrapper
6
+ module: Core
7
+ ---
8
+ # fc.list.wrapper.feed
9
+
10
+ List wrapper that converts Metrics API feed data into a format readable by the `fc.list` component, used for Feeds Dashboard displays.
11
+
12
+ ## When to Use
13
+ - Displaying inventory feed metrics in a tabular list
14
+ - Any page that needs to render Metrics API feed data in an `fc.list` table
15
+ - Feeds Dashboard in the Big Inventory web app
16
+
17
+ ## Key Props
18
+ | Prop | Type | Required | What it controls |
19
+ |------|------|----------|------------------|
20
+
21
+ No component-specific configuration properties. Uses standard `dataSource` and `descendants` configuration.
22
+
23
+ ## Data Binding
24
+ Transforms Metrics API feed response data into the row/column format expected by `fc.list`. The page-level `data.query` should point to a Metrics API feed endpoint. This wrapper handles the data shape conversion automatically.
25
+
26
+ ## Descendants
27
+ Yes -- accepts `fc.list` (or other list-compatible components) as children. The wrapper feeds transformed data into its descendants.
28
+
29
+ ## Composition Patterns
30
+ - `fc.page` > `fc.list.wrapper.feed` > `fc.list` for a feeds metrics table
31
+ - Often paired with `fc.chart.area.wrapper.feed` on the same dashboard page
32
+ - Combine with `fc.daterange.wrapper.forwarder` for time-filtered feed data
33
+
34
+ ## Gotchas
35
+ - Only transforms Metrics API feed data -- will not work with standard GraphQL entity queries
36
+ - Must wrap an `fc.list` descendant to be useful -- the wrapper itself renders nothing visible
37
+ - Designed specifically for the Feeds Dashboard use case in Fluent Big Inventory
38
+ - Similar to `fc.list.wrapper.source` but for feed data (different Metrics API shape)
39
+
40
+ ## Manifest Example
41
+ ```json
42
+ {
43
+ "component": "fc.list.wrapper.feed",
44
+ "descendants": [
45
+ {
46
+ "component": "fc.list",
47
+ "props": {
48
+ "dataSource": "feedMetrics",
49
+ "attributes": [
50
+ { "label": "Feed", "value": "{{node.name}}" },
51
+ { "label": "Total", "value": "{{node.total}}" },
52
+ { "label": "Success", "value": "{{node.success}}" },
53
+ { "label": "Failed", "value": "{{node.failed}}" }
54
+ ]
55
+ }
56
+ }
57
+ ]
58
+ }
59
+ ```
60
+
61
+ ## AI Parse Notes
62
+ - **Primary intent:** Declarative Mystique component definition for manifests.
63
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
64
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
65
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,64 @@
1
+ ---
2
+ alias: "fc.list.wrapper.source"
3
+ aliases:
4
+ - fc.list.wrapper.source
5
+ category: wrapper
6
+ module: Core
7
+ ---
8
+ # fc.list.wrapper.source
9
+
10
+ List wrapper that converts Metrics API data into a format readable by the `fc.list` component, used for Sources Dashboard displays.
11
+
12
+ ## When to Use
13
+ - Displaying inventory source metrics in a tabular list
14
+ - Any page that needs to render Metrics API data in an `fc.list` table
15
+ - Sources Dashboard in the Big Inventory web app
16
+
17
+ ## Key Props
18
+ | Prop | Type | Required | What it controls |
19
+ |------|------|----------|------------------|
20
+
21
+ No component-specific configuration properties. Uses standard `dataSource` and `descendants` configuration.
22
+
23
+ ## Data Binding
24
+ Transforms Metrics API response data into the row/column format expected by `fc.list`. The page-level `data.query` should point to a Metrics API endpoint. This wrapper handles the data shape conversion automatically.
25
+
26
+ ## Descendants
27
+ Yes -- accepts `fc.list` (or other list-compatible components) as children. The wrapper feeds transformed data into its descendants.
28
+
29
+ ## Composition Patterns
30
+ - `fc.page` > `fc.list.wrapper.source` > `fc.list` for a sources metrics table
31
+ - Often paired with `fc.chart.bar.wrapper.source` on the same dashboard page
32
+ - Combine with `fc.daterange.wrapper.forwarder` for time-filtered source data
33
+
34
+ ## Gotchas
35
+ - Only transforms Metrics API data -- will not work with standard GraphQL entity queries
36
+ - Must wrap an `fc.list` descendant to be useful -- the wrapper itself renders nothing visible
37
+ - Designed specifically for the Sources Dashboard use case in Fluent Big Inventory
38
+
39
+ ## Manifest Example
40
+ ```json
41
+ {
42
+ "component": "fc.list.wrapper.source",
43
+ "descendants": [
44
+ {
45
+ "component": "fc.list",
46
+ "props": {
47
+ "dataSource": "sourceMetrics",
48
+ "attributes": [
49
+ { "label": "Source", "value": "{{node.name}}" },
50
+ { "label": "Total", "value": "{{node.total}}" },
51
+ { "label": "Success", "value": "{{node.success}}" },
52
+ { "label": "Failed", "value": "{{node.failed}}" }
53
+ ]
54
+ }
55
+ }
56
+ ]
57
+ }
58
+ ```
59
+
60
+ ## AI Parse Notes
61
+ - **Primary intent:** Declarative Mystique component definition for manifests.
62
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
63
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
64
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,60 @@
1
+ ---
2
+ alias: "fc.modal.button.addItem"
3
+ aliases:
4
+ - fc.modal.button.addItem
5
+ category: action
6
+ module: OMS
7
+ ---
8
+
9
+ # fc.modal.button.addItem
10
+
11
+ Add-item button used inside product search modals for order revision. Renders as an icon button (+) that calls an `onAddItem` callback with the current row's data.
12
+
13
+ ## When to Use
14
+ - Inside a product search list within an order revision modal
15
+ - As an action column in a product search `fc.list` to add items to an order
16
+ - Part of the OMS order revision workflow
17
+
18
+ ## Key Props
19
+ | Prop | Type | Required | What it controls |
20
+ |------|------|----------|------------------|
21
+ | `onAddItem` | `(item: any) => void` | Yes | Callback function invoked with the selected product's node data when the button is clicked |
22
+
23
+ ## Data Binding
24
+ Reads the current row's data from the `useData()` hook (`context.data.node`). When clicked, passes the entire node object to the `onAddItem` callback.
25
+
26
+ ## Descendants
27
+ No -- renders a single `IconButton` with a `+` icon.
28
+
29
+ ## Composition Patterns
30
+ - Used internally by the OMS `ProductSearchModal` component
31
+ - Injected as a column in the product search list: `type: "component"` > `fc.modal.button.addItem`
32
+ - The `onAddItem` callback is typically wired to the order revision logic to add the selected product
33
+
34
+ ## Gotchas
35
+ - This is an OMS module component -- requires the OMS plugin to be loaded.
36
+ - The `onAddItem` prop is a function reference, not a manifest-configurable string. It is typically injected programmatically by `ProductSearchModal`, not directly in manifest JSON.
37
+ - Reads from `useData().context.data.node` which means it must be inside a list row context where `node` is the current item.
38
+ - Renders as a small icon button with `GoPlus` icon -- not a full-size button.
39
+ - Registered with category `content` in the OMS component registry.
40
+
41
+ ## Manifest Example
42
+ ```json
43
+ {
44
+ "label": "",
45
+ "type": "component",
46
+ "align": "right",
47
+ "options": {
48
+ "component": "fc.modal.button.addItem",
49
+ "props": {
50
+ "onAddItem": "handleAddItem"
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## AI Parse Notes
57
+ - **Primary intent:** Declarative Mystique component definition for manifests.
58
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
59
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
60
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,21 @@
1
+ ---
2
+ alias: "fc.modal.button"
3
+ aliases:
4
+ - fc.modal.button
5
+ category: action
6
+ module: Core
7
+ ---
8
+ # fc.modal.button
9
+
10
+ Button that opens a modal dialog. Can execute a GraphQL query and display results in the modal.
11
+
12
+ ## When to Use
13
+ - Show detail information in a popup
14
+ - Confirmation dialogs
15
+ - Secondary data display without page navigation
16
+
17
+ ## AI Parse Notes
18
+ - **Primary intent:** Declarative Mystique component definition for manifests.
19
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
20
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
21
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,88 @@
1
+ ---
2
+ alias: "fc.mutation.inline"
3
+ aliases:
4
+ - fc.mutation.inline
5
+ category: action
6
+ module: Core
7
+ ---
8
+
9
+ # fc.mutation.inline
10
+
11
+ Inline mutation card that auto-generates a form from a GraphQL mutation schema, renders it in a card, and submits the mutation on form submit.
12
+
13
+ ## When to Use
14
+ - Display an inline editable form for a GraphQL mutation (e.g. `updateOrder`, `createFulfilment`)
15
+ - Build quick-edit cards that introspect the mutation schema to generate form fields automatically
16
+ - Provide inline update forms on detail pages without requiring a drawer or modal
17
+
18
+ ## Key Props
19
+ | Prop | Type | Required | What it controls |
20
+ |------|------|----------|------------------|
21
+ | `title` | string | No | Card title displayed above the form |
22
+ | `width` | CardWidth | No | Card width on 12-column grid |
23
+ | `highlight` | string | No | Top border highlight color |
24
+ | `mutation` | MutationConfig | Yes | Mutation configuration object (see below) |
25
+
26
+ ### MutationConfig Structure
27
+ | Field | Type | Required | Description |
28
+ |-------|------|----------|-------------|
29
+ | `name` | string | Yes | GraphQL mutation name (e.g. `"updateOrder"`, `"createFulfilment"`) |
30
+ | `label` | string | Yes | Display label for the mutation action |
31
+ | `args` | Record<string, any> | No | Pre-filled argument values -- supports template strings `"{{id}}"` |
32
+ | `overrides` | Record<string, ExtendedFormField> | No | Per-field overrides for label, component, value, validation, etc. |
33
+ | `filter` | MutationFieldFilter | No | Include/exclude specific fields: `{ type: "include"\|"exclude", names: string[] }` |
34
+ | `postSubmit` | PostSubmitType | No | Action after successful submission (e.g. refresh page, navigate) |
35
+
36
+ ## Data Binding
37
+ For update mutations, the component auto-generates a query from the mutation name (e.g. `updateOrder` -> `order` query) to pre-populate form fields. Template strings in `args` are resolved against the current data context.
38
+
39
+ ## Descendants
40
+ No -- form fields are auto-generated from the GraphQL mutation schema.
41
+
42
+ ## Composition Patterns
43
+ - `fc.page` > `fc.mutation.inline` for inline edit forms on detail pages
44
+ - `fc.column` > `fc.mutation.inline` alongside `fc.card.attribute` for view + edit layout
45
+ - For drawer-based mutations, use `fc.mutation.button` (MutationButton) instead
46
+
47
+ ## Gotchas
48
+ - The `mutation.name` must exactly match a GraphQL mutation in the schema. The component introspects the schema via `getMutationInputArg()`.
49
+ - For `update` mutations (name starts with "update"), the component auto-fetches current entity data to pre-populate the form.
50
+ - Fields with pre-set values in `args` are hidden from the form (treated as locked values) and re-injected on submit.
51
+ - The `filter` prop allows include/exclude lists to control which fields appear in the generated form.
52
+ - `overrides` can customize individual field components, labels, default values, and validation rules.
53
+ - On submit, shows a loading overlay and calls `refreshPage()` after completion. Error toast appears on failure.
54
+ - Registered with category `content` in the component registry.
55
+
56
+ ## Manifest Example
57
+ ```json
58
+ {
59
+ "component": "fc.mutation.inline",
60
+ "props": {
61
+ "title": "Update Order",
62
+ "width": "half",
63
+ "mutation": {
64
+ "name": "updateOrder",
65
+ "label": "Save Changes",
66
+ "args": {
67
+ "id": "{{id}}"
68
+ },
69
+ "filter": {
70
+ "type": "include",
71
+ "names": ["status", "type", "attributes"]
72
+ },
73
+ "overrides": {
74
+ "type": {
75
+ "label": "Order Type",
76
+ "component": "fc.mutation.order.type"
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ ```
83
+
84
+ ## AI Parse Notes
85
+ - **Primary intent:** Declarative Mystique component definition for manifests.
86
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
87
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
88
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,83 @@
1
+ ---
2
+ alias: "fc.mystique.collapsible.attributes"
3
+ aliases:
4
+ - fc.mystique.collapsible.attributes
5
+ category: content
6
+ module: Core
7
+ ---
8
+
9
+ # fc.mystique.collapsible.attributes
10
+
11
+ Collapsible display for entity attributes with expand/collapse toggle, supporting both comma-separated character mode and line-by-line display modes.
12
+
13
+ ## When to Use
14
+ - Displaying a large number of entity attributes in a compact, expandable format
15
+ - List row cells where space is limited but attributes need to be accessible
16
+ - Any component that shows entity attributes with a "More / Less" toggle pattern
17
+
18
+ ## Key Props
19
+ | Prop | Type | Required | What it controls |
20
+ |------|------|----------|------------------|
21
+ | `collapseOn` | `"characters"` / `"lines"` | No | Display and collapse mode. `"characters"` shows comma-separated truncated by character count; `"lines"` shows one attribute per line truncated by line count. Default behavior is `"characters"` (fallback for no config or misconfiguration). |
22
+ | `collapseLimit` | number | Yes | Cutoff value: number of characters (when `collapseOn: "characters"`) or number of lines (when `collapseOn: "lines"`) before truncation |
23
+ | `hideKeys` | boolean | No | When `true`, hides attribute names and shows values only. Default: `false` -- shows **Name:** value format with bold keys. |
24
+ | `exclude` | string[] | No | Array of attribute names to exclude from the display |
25
+
26
+ ## Data Binding
27
+ Requires `dataSource` pointing to an array of attributes or a GraphQL Connection of attributes. The data must be objects with `name` and `value` fields. The component handles both flat arrays and Connection format (with `edges[].node`).
28
+
29
+ Example: `"dataSource": "node.product.attributes"`
30
+
31
+ ## Descendants
32
+ No -- self-contained display component.
33
+
34
+ ## Composition Patterns
35
+ - `fc.list` column `type: "component"` > `fc.mystique.collapsible.attributes` for expandable attribute cells
36
+ - `fc.card.attribute` alongside `fc.mystique.collapsible.attributes` for mixed detail views
37
+ - Inside `fc.tabs.card` for an "Attributes" tab with collapsible display
38
+
39
+ ## Gotchas
40
+ - `collapseLimit` is required -- without it, the component cannot determine when to truncate.
41
+ - In `"characters"` mode: counts the total character length of the comma-separated string, appends "..." when collapsed, and renders attribute keys as bold HTML (uses `dangerouslySetInnerHTML`).
42
+ - In `"lines"` mode: counts the number of attribute rows (one attribute per line), slices the array at the limit.
43
+ - The "More" / "Less" toggle only appears when the content exceeds the `collapseLimit`.
44
+ - If `collapseOn` is set to an invalid value, an error is logged and the component falls back to character-based truncation.
45
+ - The data prop accepts both `Attribute[]` and `Connection<Attribute>` -- it auto-detects Connection format via the `edges` property.
46
+ - Different from `fc.mystique.collapsible.text` which collapses a single text string by character count.
47
+
48
+ ## Manifest Example
49
+ ```json
50
+ {
51
+ "component": "fc.mystique.collapsible.attributes",
52
+ "dataSource": "node.product.attributes",
53
+ "props": {
54
+ "collapseOn": "lines",
55
+ "collapseLimit": 3,
56
+ "hideKeys": false,
57
+ "exclude": ["internalId", "systemRef"]
58
+ }
59
+ }
60
+ ```
61
+
62
+ ### Inside a list column
63
+ ```json
64
+ {
65
+ "label": "Attributes",
66
+ "type": "component",
67
+ "options": {
68
+ "component": "fc.mystique.collapsible.attributes",
69
+ "props": {
70
+ "collapseOn": "characters",
71
+ "collapseLimit": 80,
72
+ "hideKeys": true
73
+ },
74
+ "dataSource": "node.attributes"
75
+ }
76
+ }
77
+ ```
78
+
79
+ ## AI Parse Notes
80
+ - **Primary intent:** Declarative Mystique component definition for manifests.
81
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
82
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
83
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,33 @@
1
+ ---
2
+ alias: "fc.mystique.collapsible.text"
3
+ aliases:
4
+ - fc.mystique.collapsible.text
5
+ category: content
6
+ module: Core
7
+ ---
8
+ # fc.mystique.collapsible.text
9
+
10
+ Show more/less text with character cutoff toggle.
11
+
12
+ ## Key Props
13
+ | Prop | Type | Required | What it controls |
14
+ |------|------|----------|------------------|
15
+ | `text` | string | **Yes** | Content text |
16
+ | `charCutoff` | number | **Yes** | Character threshold for collapsing |
17
+
18
+ ## Validation Rules
19
+ P13 (CRITICAL — both text and charCutoff required)
20
+
21
+ ## Manifest Example
22
+ ```json
23
+ {
24
+ "component": "fc.mystique.collapsible.text",
25
+ "props": { "text": "{{description}}", "charCutoff": 200 }
26
+ }
27
+ ```
28
+
29
+ ## AI Parse Notes
30
+ - **Primary intent:** Declarative Mystique component definition for manifests.
31
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
32
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
33
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,30 @@
1
+ ---
2
+ alias: "fc.mystique.link"
3
+ aliases:
4
+ - fc.mystique.link
5
+ category: content
6
+ module: Core
7
+ ---
8
+ # fc.mystique.link
9
+
10
+ Styled hyperlink for navigation within the app or to external URLs.
11
+
12
+ ## Key Props
13
+ | Prop | Type | Required | What it controls |
14
+ |------|------|----------|------------------|
15
+ | `label` | string | No | Display text |
16
+ | `link` | string | No | Destination URL (supports templates) |
17
+
18
+ ## Manifest Example
19
+ ```json
20
+ {
21
+ "component": "fc.mystique.link",
22
+ "props": { "label": "View Order", "link": "/orders/{{id}}" }
23
+ }
24
+ ```
25
+
26
+ ## AI Parse Notes
27
+ - **Primary intent:** Declarative Mystique component definition for manifests.
28
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
29
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
30
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,20 @@
1
+ ---
2
+ alias: "fc.order.itemDetails"
3
+ aliases:
4
+ - fc.order.itemDetails
5
+ category: content
6
+ module: OMS
7
+ ---
8
+ # fc.order.itemDetails
9
+
10
+ Drawer showing detailed order item information — product, quantity, pricing, attributes.
11
+
12
+ ## When to Use
13
+ - Order detail page — click item to see full details
14
+ - Item-level attribute inspection
15
+
16
+ ## AI Parse Notes
17
+ - **Primary intent:** Declarative Mystique component definition for manifests.
18
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
19
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
20
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,20 @@
1
+ ---
2
+ alias: "fc.order.shipmentDetails"
3
+ aliases:
4
+ - fc.order.shipmentDetails
5
+ category: content
6
+ module: OMS
7
+ ---
8
+ # fc.order.shipmentDetails
9
+
10
+ Drawer showing shipment/consignment tracking details.
11
+
12
+ ## When to Use
13
+ - Fulfilment detail page — shipment tracking view
14
+ - Consignment tracking display
15
+
16
+ ## AI Parse Notes
17
+ - **Primary intent:** Declarative Mystique component definition for manifests.
18
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
19
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
20
+ - **Safety checks:** Validate required props and data bindings before manifest generation.
@@ -0,0 +1,87 @@
1
+ ---
2
+ alias: "fc.page.filter.select"
3
+ aliases:
4
+ - fc.page.filter.select
5
+ category: layout
6
+ module: Core
7
+ ---
8
+ # fc.page.filter.select
9
+
10
+ Page-level dropdown select that changes a variable on the page GraphQL query, enabling dynamic data filtering.
11
+
12
+ ## When to Use
13
+ - Filtering a list page by status, type, or category
14
+ - Switching data views on a dashboard (e.g., time period, entity type)
15
+ - Any page where the user should be able to select from predefined filter options that alter the page query
16
+
17
+ ## Key Props
18
+ | Prop | Type | Required | What it controls |
19
+ |------|------|----------|------------------|
20
+ | `name` | string | No | Variable name on the GraphQL query (default: `"filter_value"`) |
21
+ | `options` | SelectOption[] | **Yes** | Dropdown options array: `[{ label, value }]` |
22
+ | `defaultValue` | string | No | Pre-selected value on page load |
23
+
24
+ ### SelectOption
25
+ | Prop | Type | Required | What it controls |
26
+ |------|------|----------|------------------|
27
+ | `label` | string | **Yes** | Human-readable display text |
28
+ | `value` | string | **Yes** | Value passed to the GraphQL query variable |
29
+
30
+ ## Data Binding
31
+ Sets a variable (named by `name` prop, default `"filter_value"`) on the page-level GraphQL query. The page query must reference this variable for the filter to take effect.
32
+
33
+ ## Descendants
34
+ No -- this is a self-contained input component.
35
+
36
+ ## Composition Patterns
37
+ - `fc.page` > `fc.page.filter.select` + `fc.list` for filtered list pages
38
+ - Multiple `fc.page.filter.select` components for multi-dimension filtering
39
+ - Combine with `fc.filterPanel` for advanced filtering setups
40
+
41
+ ## Gotchas
42
+ - The `name` prop must match a variable in the page-level GraphQL query -- otherwise the selection has no effect
43
+ - `options` is required -- an empty options array renders a blank dropdown
44
+ - Default value must match one of the option `value` strings exactly
45
+
46
+ ## Manifest Example
47
+ ```json
48
+ {
49
+ "component": "fc.page",
50
+ "props": {
51
+ "title": "Orders"
52
+ },
53
+ "data": {
54
+ "query": "query ($filter_value: [String]) { orders(status: $filter_value) { edges { node { id ref status } } } }"
55
+ },
56
+ "descendants": [
57
+ {
58
+ "component": "fc.page.filter.select",
59
+ "props": {
60
+ "name": "filter_value",
61
+ "defaultValue": "CREATED",
62
+ "options": [
63
+ { "label": "Created", "value": "CREATED" },
64
+ { "label": "Complete", "value": "COMPLETE" },
65
+ { "label": "All", "value": "" }
66
+ ]
67
+ }
68
+ },
69
+ {
70
+ "component": "fc.list",
71
+ "props": {
72
+ "dataSource": "orders",
73
+ "attributes": [
74
+ { "label": "Ref", "value": "{{node.ref}}" },
75
+ { "label": "Status", "value": "{{node.status}}" }
76
+ ]
77
+ }
78
+ }
79
+ ]
80
+ }
81
+ ```
82
+
83
+ ## AI Parse Notes
84
+ - **Primary intent:** Declarative Mystique component definition for manifests.
85
+ - **Selection signals:** Match by `alias`, category, and required `Key Props`.
86
+ - **Assembly hints:** Combine with compatible parent/child components listed in `Composition Patterns`.
87
+ - **Safety checks:** Validate required props and data bindings before manifest generation.