@stacksjs/defaults 0.75.361 → 0.75.366
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.
- package/ai/skills/stacks-ai/SKILL.md +22 -0
- package/ai/skills/stacks-native/CATALOG.md +5 -5
- package/ai/skills/stacks-payments/SKILL.md +10 -0
- package/ai/skills/stacks-technical-diagrams/LICENSE +202 -22
- package/ai/skills/stacks-technical-diagrams/LICENSE-MIT +22 -0
- package/ai/skills/stacks-technical-diagrams/NOTICE +26 -0
- package/ai/skills/stacks-technical-diagrams/SKILL.md +106 -266
- package/ai/skills/stacks-technical-diagrams/THIRD_PARTY_NOTICES.md +11 -2
- package/ai/skills/stacks-technical-diagrams/UPSTREAM.json +12 -0
- package/ai/skills/stacks-technical-diagrams/agents/openai.yaml +2 -2
- package/ai/skills/stacks-technical-diagrams/assets/template.html +3655 -3798
- package/ai/skills/stacks-technical-diagrams/bin/archify.mjs +7290 -0
- package/ai/skills/stacks-technical-diagrams/bin/delivery-update.mjs +7 -0
- package/ai/skills/stacks-technical-diagrams/bin/diagrams +1 -0
- package/ai/skills/stacks-technical-diagrams/bin/finalize.mjs +1056 -0
- package/ai/skills/stacks-technical-diagrams/bin/open-artifact.mjs +72 -12
- package/ai/skills/stacks-technical-diagrams/bin/preview.mjs +348 -31
- package/ai/skills/stacks-technical-diagrams/bin/recover-output.mjs +41 -0
- package/ai/skills/stacks-technical-diagrams/bin/technical-diagrams.mjs +3 -2097
- package/ai/skills/stacks-technical-diagrams/bin/visual-check.mjs +2142 -157
- package/ai/skills/stacks-technical-diagrams/brand-marks/README.md +3 -3
- package/ai/skills/stacks-technical-diagrams/delta/architecture-delta.mjs +130 -33
- package/ai/skills/stacks-technical-diagrams/examples/agent-run.lifecycle.json +25 -30
- package/ai/skills/stacks-technical-diagrams/examples/agent-tool-call.workflow.json +0 -20
- package/ai/skills/stacks-technical-diagrams/examples/archify-dev-activity.timeline.json +176 -0
- package/ai/skills/stacks-technical-diagrams/examples/archify-repository.tree.json +197 -0
- package/ai/skills/stacks-technical-diagrams/examples/async-job-roundtrip.sequence.json +1 -6
- package/ai/skills/stacks-technical-diagrams/examples/brand-aware-delivery.architecture.json +3 -16
- package/ai/skills/stacks-technical-diagrams/examples/cache-miss-request.sequence.json +2 -7
- package/ai/skills/stacks-technical-diagrams/examples/checkout-platform.base.architecture.json +2 -1
- package/ai/skills/stacks-technical-diagrams/examples/checkout-platform.head.architecture.json +2 -1
- package/ai/skills/stacks-technical-diagrams/examples/checkout-request.waterfall.json +20 -0
- package/ai/skills/stacks-technical-diagrams/examples/class-payment-processors-rendered.html +14987 -0
- package/ai/skills/stacks-technical-diagrams/examples/class-payments-rendered.html +14787 -0
- package/ai/skills/stacks-technical-diagrams/examples/dataflow-product-analytics.html +14880 -0
- package/ai/skills/stacks-technical-diagrams/examples/delivery.explainer.json +155 -0
- package/ai/skills/stacks-technical-diagrams/examples/deployment-release.lifecycle.json +57 -34
- package/ai/skills/stacks-technical-diagrams/examples/erd-orders-rendered.html +15112 -0
- package/ai/skills/stacks-technical-diagrams/examples/event-stream.dataflow.json +1 -6
- package/ai/skills/stacks-technical-diagrams/examples/example-rebuild.waterfall.json +212 -0
- package/ai/skills/stacks-technical-diagrams/examples/holiday-planning.workflow.json +143 -0
- package/ai/skills/stacks-technical-diagrams/examples/incident-response.workflow.json +1 -6
- package/ai/skills/stacks-technical-diagrams/examples/lifecycle-agent-run.html +14892 -0
- package/ai/skills/stacks-technical-diagrams/examples/locales/de.json +463 -0
- package/ai/skills/stacks-technical-diagrams/examples/locales/fr.json +463 -0
- package/ai/skills/stacks-technical-diagrams/examples/locales/fr.partial.json +22 -0
- package/ai/skills/stacks-technical-diagrams/examples/locales/it.json +463 -0
- package/ai/skills/stacks-technical-diagrams/examples/locales/ja.json +463 -0
- package/ai/skills/stacks-technical-diagrams/examples/locales/pt.json +463 -0
- package/ai/skills/stacks-technical-diagrams/examples/locales/ru.json +463 -0
- package/ai/skills/stacks-technical-diagrams/examples/orders.erd.json +337 -0
- package/ai/skills/stacks-technical-diagrams/examples/payment-incident.timeline.json +24 -0
- package/ai/skills/stacks-technical-diagrams/examples/payment-platform.tree.json +22 -0
- package/ai/skills/stacks-technical-diagrams/examples/payment-processors.class.json +177 -0
- package/ai/skills/stacks-technical-diagrams/examples/payments.class.json +85 -0
- package/ai/skills/stacks-technical-diagrams/examples/product-analytics.dataflow.json +1 -6
- package/ai/skills/stacks-technical-diagrams/examples/production-deployment.architecture.json +3 -23
- package/ai/skills/stacks-technical-diagrams/examples/release-delivery.workflow.json +1 -6
- package/ai/skills/stacks-technical-diagrams/examples/sequence-cache-miss-request.html +14895 -0
- package/ai/skills/stacks-technical-diagrams/examples/subscription-billing-rendered.html +15369 -0
- package/ai/skills/stacks-technical-diagrams/examples/subscription-billing.erd.json +548 -0
- package/ai/skills/stacks-technical-diagrams/examples/timeline-archify-dev-activity-rendered.html +15002 -0
- package/ai/skills/stacks-technical-diagrams/examples/timeline-payment-incident-rendered.html +14772 -0
- package/ai/skills/stacks-technical-diagrams/examples/tree-archify-repository-rendered.html +15071 -0
- package/ai/skills/stacks-technical-diagrams/examples/tree-payment-platform-rendered.html +14810 -0
- package/ai/skills/stacks-technical-diagrams/examples/waterfall-checkout-request-rendered.html +14754 -0
- package/ai/skills/stacks-technical-diagrams/examples/waterfall-example-rebuild-rendered.html +14940 -0
- package/ai/skills/stacks-technical-diagrams/examples/web-app-rendered.html +14889 -0
- package/ai/skills/stacks-technical-diagrams/examples/web-app.architecture.json +1 -6
- package/ai/skills/stacks-technical-diagrams/examples/workflow-agent-tool-call-rendered.html +14907 -0
- package/ai/skills/stacks-technical-diagrams/explainer/browser-check.mjs +208 -0
- package/ai/skills/stacks-technical-diagrams/explainer/charts.mjs +70 -0
- package/ai/skills/stacks-technical-diagrams/explainer/check.mjs +168 -0
- package/ai/skills/stacks-technical-diagrams/explainer/diagrams.mjs +518 -0
- package/ai/skills/stacks-technical-diagrams/explainer/diff.mjs +124 -0
- package/ai/skills/stacks-technical-diagrams/explainer/inline.mjs +155 -0
- package/ai/skills/stacks-technical-diagrams/explainer/layout.mjs +35 -0
- package/ai/skills/stacks-technical-diagrams/explainer/page-bundle.mjs +16 -0
- package/ai/skills/stacks-technical-diagrams/explainer/parse.mjs +300 -0
- package/ai/skills/stacks-technical-diagrams/explainer/patch.mjs +117 -0
- package/ai/skills/stacks-technical-diagrams/explainer/prepare.mjs +131 -0
- package/ai/skills/stacks-technical-diagrams/explainer/reader.css +472 -0
- package/ai/skills/stacks-technical-diagrams/explainer/reader.js +667 -0
- package/ai/skills/stacks-technical-diagrams/explainer/render.mjs +224 -0
- package/ai/skills/stacks-technical-diagrams/explainer/revision.mjs +20 -0
- package/ai/skills/stacks-technical-diagrams/explainer/sources.mjs +318 -0
- package/ai/skills/stacks-technical-diagrams/explainer/validate.mjs +138 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/LICENSE +40 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/README.md +5 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/3DKXF73K.js +4 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/42UTT654.js +3 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/DKTLEL5E.js +1 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/EEIX5ZYH.js +2 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/EJ5KOXYD.js +25 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/GUJTEFZK.js +1 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/IZOKQ2GT.js +4 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/L4LY553T.js +3 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/MSKIJHB2.js +2 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/RVARI57O.js +1 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/UKSIWDDN.js +2 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/UPTXNAXN.js +2 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/XTDUIGUI.js +9 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/chunks/YAYTP6L5.js +9 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/core.js +1 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/pie.js +1 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/quadrantChart.js +1 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/radar.js +1 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/sankey.js +1 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/venn.js +1 -0
- package/ai/skills/stacks-technical-diagrams/explainer/vendor/pele/diagrams/xychart.js +1 -0
- package/ai/skills/stacks-technical-diagrams/explainer/writing.mjs +139 -0
- package/ai/skills/stacks-technical-diagrams/locales/README.md +40 -0
- package/ai/skills/stacks-technical-diagrams/locales/ar.json +488 -0
- package/ai/skills/stacks-technical-diagrams/locales/en.json +488 -0
- package/ai/skills/stacks-technical-diagrams/locales/es.json +488 -0
- package/ai/skills/stacks-technical-diagrams/locales/ko.json +488 -0
- package/ai/skills/stacks-technical-diagrams/locales/manifest.json +10 -0
- package/ai/skills/stacks-technical-diagrams/locales/zh-CN.json +488 -0
- package/ai/skills/stacks-technical-diagrams/locales/zh-TW.json +488 -0
- package/ai/skills/stacks-technical-diagrams/migrations/workflow-v2.mjs +1 -0
- package/ai/skills/stacks-technical-diagrams/recipes/scenarios.mjs +115 -51
- package/ai/skills/stacks-technical-diagrams/references/architecture-layout-repair.md +18 -0
- package/ai/skills/stacks-technical-diagrams/references/authoring-contract.md +453 -51
- package/ai/skills/stacks-technical-diagrams/references/authoring-defaults.md +57 -0
- package/ai/skills/stacks-technical-diagrams/references/brand-marks.md +57 -3
- package/ai/skills/stacks-technical-diagrams/references/delivery-contract.md +603 -58
- package/ai/skills/stacks-technical-diagrams/references/explainer-authoring.md +274 -0
- package/ai/skills/stacks-technical-diagrams/references/repository-authoring.md +126 -0
- package/ai/skills/stacks-technical-diagrams/references/update-awareness.md +13 -0
- package/ai/skills/stacks-technical-diagrams/references/viewer-runtime.md +18 -11
- package/ai/skills/stacks-technical-diagrams/renderers/architecture/grid.mjs +1 -1
- package/ai/skills/stacks-technical-diagrams/renderers/architecture/labels.mjs +2 -0
- package/ai/skills/stacks-technical-diagrams/renderers/architecture/render-architecture.mjs +550 -424
- package/ai/skills/stacks-technical-diagrams/renderers/architecture/routing.mjs +1469 -0
- package/ai/skills/stacks-technical-diagrams/renderers/class/README.md +129 -0
- package/ai/skills/stacks-technical-diagrams/renderers/class/render-class.mjs +1095 -0
- package/ai/skills/stacks-technical-diagrams/renderers/dataflow/README.md +89 -17
- package/ai/skills/stacks-technical-diagrams/renderers/dataflow/dataflow-compiler.mjs +1605 -0
- package/ai/skills/stacks-technical-diagrams/renderers/dataflow/joint-label-routing.mjs +165 -0
- package/ai/skills/stacks-technical-diagrams/renderers/dataflow/label-capacity.mjs +81 -0
- package/ai/skills/stacks-technical-diagrams/renderers/dataflow/render-dataflow.mjs +14 -474
- package/ai/skills/stacks-technical-diagrams/renderers/erd/README.md +246 -0
- package/ai/skills/stacks-technical-diagrams/renderers/erd/grid.mjs +150 -0
- package/ai/skills/stacks-technical-diagrams/renderers/erd/render-erd.mjs +1588 -0
- package/ai/skills/stacks-technical-diagrams/renderers/explainer/render-explainer.mjs +42 -0
- package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/README.md +83 -94
- package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/render-lifecycle.mjs +990 -417
- package/ai/skills/stacks-technical-diagrams/renderers/sequence/README.md +49 -17
- package/ai/skills/stacks-technical-diagrams/renderers/sequence/render-sequence.mjs +735 -94
- package/ai/skills/stacks-technical-diagrams/renderers/shared/atomic-output.mjs +1982 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/automatic-labels.mjs +290 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/brand-marks.mjs +169 -26
- package/ai/skills/stacks-technical-diagrams/renderers/shared/cli.mjs +266 -54
- package/ai/skills/stacks-technical-diagrams/renderers/shared/desktop-readability.mjs +106 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/diagnostics.mjs +0 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/generated-validators.mjs +268 -2
- package/ai/skills/stacks-technical-diagrams/renderers/shared/geometry.mjs +774 -124
- package/ai/skills/stacks-technical-diagrams/renderers/shared/i18n.mjs +289 -556
- package/ai/skills/stacks-technical-diagrams/renderers/shared/layout-report.mjs +18 -1
- package/ai/skills/stacks-technical-diagrams/renderers/shared/legend.mjs +16 -6
- package/ai/skills/stacks-technical-diagrams/renderers/shared/node-card-style.mjs +32 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/output-path.mjs +329 -229
- package/ai/skills/stacks-technical-diagrams/renderers/shared/owned-temp-directory.mjs +82 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/path-semantics.mjs +1017 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/portable-path.mjs +408 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/repository-evidence.mjs +235 -79
- package/ai/skills/stacks-technical-diagrams/renderers/shared/repository-location.mjs +17 -4
- package/ai/skills/stacks-technical-diagrams/renderers/shared/route-quality.mjs +670 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/sidecar-path.mjs +38 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/software-notices.mjs +6 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/spatial-grid.mjs +66 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/svg-path-analysis.mjs +135 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/text-fit.mjs +59 -3
- package/ai/skills/stacks-technical-diagrams/renderers/shared/utils.mjs +63 -35
- package/ai/skills/stacks-technical-diagrams/renderers/shared/validator.mjs +2 -5
- package/ai/skills/stacks-technical-diagrams/renderers/timeline/README.md +76 -0
- package/ai/skills/stacks-technical-diagrams/renderers/timeline/render-timeline.mjs +576 -0
- package/ai/skills/stacks-technical-diagrams/renderers/tree/README.md +96 -0
- package/ai/skills/stacks-technical-diagrams/renderers/tree/render-tree.mjs +573 -0
- package/ai/skills/stacks-technical-diagrams/renderers/waterfall/README.md +73 -0
- package/ai/skills/stacks-technical-diagrams/renderers/waterfall/render-waterfall.mjs +413 -0
- package/ai/skills/stacks-technical-diagrams/renderers/workflow/README.md +137 -23
- package/ai/skills/stacks-technical-diagrams/renderers/workflow/render-workflow.mjs +18 -6
- package/ai/skills/stacks-technical-diagrams/renderers/workflow/workflow-compiler.mjs +2230 -710
- package/ai/skills/stacks-technical-diagrams/renderers/workflow/workflow-migration-geometry.mjs +17 -0
- package/ai/skills/stacks-technical-diagrams/renderers/workflow/workflow-placement-repair.mjs +94 -0
- package/ai/skills/stacks-technical-diagrams/schemas/README.md +87 -40
- package/ai/skills/stacks-technical-diagrams/schemas/architecture.schema.json +7 -33
- package/ai/skills/stacks-technical-diagrams/schemas/class.schema.json +345 -0
- package/ai/skills/stacks-technical-diagrams/schemas/common.schema.json +68 -2
- package/ai/skills/stacks-technical-diagrams/schemas/dataflow.schema.json +14 -3
- package/ai/skills/stacks-technical-diagrams/schemas/erd.schema.json +381 -0
- package/ai/skills/stacks-technical-diagrams/schemas/explainer.schema.json +927 -0
- package/ai/skills/stacks-technical-diagrams/schemas/lifecycle.schema.json +23 -110
- package/ai/skills/stacks-technical-diagrams/schemas/sequence.schema.json +15 -4
- package/ai/skills/stacks-technical-diagrams/schemas/timeline.schema.json +160 -0
- package/ai/skills/stacks-technical-diagrams/schemas/tree.schema.json +141 -0
- package/ai/skills/stacks-technical-diagrams/schemas/waterfall.schema.json +147 -0
- package/ai/skills/stacks-technical-diagrams/schemas/workflow.schema.json +14 -3
- package/ai/skills/stacks-technical-diagrams/scripts/check-render-output.mjs +876 -243
- package/ai/skills/stacks-technical-diagrams/scripts/check-update.mjs +1717 -0
- package/ai/skills/stacks-technical-diagrams/scripts/delivery-update-child.mjs +26 -0
- package/ai/skills/stacks-technical-diagrams/scripts/generate-brand-marks.mjs +141 -0
- package/ai/skills/stacks-technical-diagrams/scripts/generate-validators.mjs +105 -0
- package/ai/skills/stacks-technical-diagrams/scripts/render-examples.mjs +11 -1
- package/ai/skills/stacks-technical-diagrams/scripts/update-contract.mjs +187 -0
- package/ai/skills/stacks-technical-diagrams/skill-release.json +10 -0
- package/ai/skills/stacks-testing/SKILL.md +8 -1
- package/ide/vscode/package.json +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
const RAW_RECIPES = [
|
|
2
2
|
{
|
|
3
3
|
id: 'system-overview', type: 'architecture', proof: 'web-app',
|
|
4
|
-
presentation: { preset: 'classic', motion: 'static'
|
|
4
|
+
presentation: { preset: 'classic', motion: 'static' },
|
|
5
5
|
start: {
|
|
6
|
-
en: { descriptionPrompt: 'Use
|
|
7
|
-
zh: { descriptionPrompt: '
|
|
6
|
+
en: { descriptionPrompt: 'Use Archify to turn this plain-language system description into a high-level architecture diagram: [describe the users, core components, primary path, external dependencies, and boundaries]. No repository is required. Ask only for missing facts that would materially change the diagram, mark any remaining unknowns instead of inventing them, and keep one obvious primary path across 8–12 core components.' },
|
|
7
|
+
zh: { descriptionPrompt: '用 Archify 把下面这段自然语言系统描述画成高层架构图:[在这里描述用户、核心组件、主要路径、外部依赖和边界]。不需要代码库。只追问会实质影响图的缺失信息,其余不确定内容要标明而不是编造;保留 8–12 个核心组件和一条一眼可见的主路径。' },
|
|
8
8
|
},
|
|
9
9
|
signals: [['system overview', 12], ['architecture', 10], ['components', 6], ['services', 4], ['repository', 5], ['trust boundary', 8], ['架构', 10], ['系统总览', 12], ['组件', 6], ['服务', 4], ['仓库', 5], ['信任边界', 8]],
|
|
10
10
|
en: {
|
|
@@ -12,21 +12,21 @@ const RAW_RECIPES = [
|
|
|
12
12
|
summary: 'A bounded map of core components, external dependencies, primary paths, and trust boundaries.',
|
|
13
13
|
useWhen: 'Onboarding, design reviews, repository orientation, or explaining a service landscape.',
|
|
14
14
|
avoidWhen: 'The audience needs exact call order, state transitions, or row-level data lineage.',
|
|
15
|
-
include: ['8
|
|
16
|
-
prompt: 'Analyze this repository, then use
|
|
15
|
+
include: ['8–12 core components', 'one primary path', 'external dependencies', 'trust boundaries'],
|
|
16
|
+
prompt: 'Analyze this repository, then use Archify to create a high-level architecture diagram. Show 8–12 core runtime components, one primary request or data path, external dependencies, ownership or trust boundaries, and put supporting detail in cards instead of adding more edges.',
|
|
17
17
|
},
|
|
18
18
|
zh: {
|
|
19
19
|
title: '系统总览', question: '系统里有什么、归谁负责、彼此如何连接?',
|
|
20
20
|
summary: '用一张有边界的图展示核心组件、外部依赖、主路径和信任边界。',
|
|
21
21
|
useWhen: '适合新人上手、方案评审、仓库梳理和服务全景说明。',
|
|
22
22
|
avoidWhen: '如果重点是精确调用顺序、状态流转或字段级血缘,请换其他配方。',
|
|
23
|
-
include: ['8
|
|
24
|
-
prompt: '
|
|
23
|
+
include: ['8–12 个核心组件', '一条主路径', '外部依赖', '归属或信任边界'],
|
|
24
|
+
prompt: '分析这个仓库,然后用 Archify 生成高层系统架构图。展示 8–12 个核心运行时组件、一条主要请求或数据路径、外部依赖、归属或信任边界;支持性细节放进卡片,不要继续堆连线。',
|
|
25
25
|
},
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
id: 'deployment-ownership', type: 'architecture', proof: 'deployment-ownership',
|
|
29
|
-
presentation: { preset: 'blueprint', motion: 'trace'
|
|
29
|
+
presentation: { preset: 'blueprint', motion: 'trace' },
|
|
30
30
|
signals: [['deployment topology', 14], ['region', 7], ['vpc', 9], ['cluster', 6], ['availability zone', 8], ['ownership', 7], ['cloud deployment', 12], ['部署拓扑', 14], ['区域', 6], ['集群', 6], ['可用区', 8], ['资源归属', 9], ['跨区', 8]],
|
|
31
31
|
en: {
|
|
32
32
|
title: 'Deployment ownership', question: 'Where does each workload run, and what crosses a boundary?',
|
|
@@ -34,7 +34,7 @@ const RAW_RECIPES = [
|
|
|
34
34
|
useWhen: 'Cloud reviews, production readiness, multi-region planning, or infrastructure ownership handoffs.',
|
|
35
35
|
avoidWhen: 'Deployment facts are unknown or the real question is application behavior rather than placement.',
|
|
36
36
|
include: ['regions and networks', 'workload ownership', 'stateful services', 'named boundary crossings'],
|
|
37
|
-
prompt: 'Use
|
|
37
|
+
prompt: 'Use Archify to draw the production deployment topology. Group resources by region, network, cluster, and owner; show workloads and stateful services; label every cross-boundary mechanism. Do not invent deployment facts—mark unknown areas explicitly. If the user wants a fail-closed deployment review, ask before setting meta.engineering_profile to deployment-ownership; otherwise leave the engineering profile unset.',
|
|
38
38
|
},
|
|
39
39
|
zh: {
|
|
40
40
|
title: '部署与归属', question: '每个工作负载运行在哪里,哪些连接跨越了边界?',
|
|
@@ -42,15 +42,15 @@ const RAW_RECIPES = [
|
|
|
42
42
|
useWhen: '适合云上评审、生产就绪、多区域规划和基础设施交接。',
|
|
43
43
|
avoidWhen: '部署事实不清楚,或真正问题是应用行为而不是资源位置时不要使用。',
|
|
44
44
|
include: ['区域与网络', '工作负载归属', '有状态服务', '明确的跨边界机制'],
|
|
45
|
-
prompt: '
|
|
45
|
+
prompt: '用 Archify 绘制生产部署拓扑。按区域、网络、集群和负责人分组,展示工作负载与有状态服务,并标注每一种跨边界机制。不要编造部署事实,不确定的区域要明确标出。如果用户需要失败即阻断的部署评审,先征得确认,再把 meta.engineering_profile 设为 deployment-ownership;否则不要启用工程画像。',
|
|
46
46
|
},
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
id: 'agent-tool-call', type: 'workflow', proof: 'agent-tool-call',
|
|
50
|
-
presentation: { preset: 'signal-flow', motion: 'trace'
|
|
50
|
+
presentation: { preset: 'signal-flow', motion: 'trace' },
|
|
51
51
|
start: {
|
|
52
|
-
en: { descriptionPrompt: 'Use
|
|
53
|
-
zh: { descriptionPrompt: '
|
|
52
|
+
en: { descriptionPrompt: 'Use Archify workflow mode to turn this description into a diagram: [paste the actors, main steps, decisions, approvals, and exception paths]. Use lanes for distinct owners, keep one unmistakable happy path, and mark missing ownership or unresolved branches instead of inventing them.' },
|
|
53
|
+
zh: { descriptionPrompt: '用 Archify 工作流模式把下面的描述画成图:[粘贴参与者、主要步骤、决策、审批和异常路径]。不同负责方使用独立泳道,保留一条明确的成功主路径,缺失的负责人或未定分支要标明而不是编造。' },
|
|
54
54
|
},
|
|
55
55
|
signals: [['agent tool call', 16], ['tool call', 12], ['approval gate', 10], ['human in the loop', 9], ['mcp', 7], ['planner', 6], ['agent loop', 10], ['智能体工具调用', 16], ['工具调用', 12], ['审批门', 10], ['人在回路', 9], ['规划器', 6], ['智能体循环', 10]],
|
|
56
56
|
en: {
|
|
@@ -59,7 +59,7 @@ const RAW_RECIPES = [
|
|
|
59
59
|
useWhen: 'Explaining agent runtimes, MCP/tool orchestration, approvals, retries, or observability.',
|
|
60
60
|
avoidWhen: 'The goal is only to show static agent components or exact API message timing.',
|
|
61
61
|
include: ['request and planning', 'policy or approval gate', 'tool execution', 'exception and evidence paths'],
|
|
62
|
-
prompt: 'Use
|
|
62
|
+
prompt: 'Use Archify workflow mode to explain this agent tool-call loop. Separate user surface, agent runtime, policy boundary, exception handling, tool execution, and observability into lanes. Make the successful path primary and show approval, retry, blocked, and evidence paths explicitly.',
|
|
63
63
|
},
|
|
64
64
|
zh: {
|
|
65
65
|
title: '智能体工具调用', question: '智能体如何规划、获批、执行、恢复并汇报?',
|
|
@@ -67,12 +67,12 @@ const RAW_RECIPES = [
|
|
|
67
67
|
useWhen: '适合解释 Agent Runtime、MCP/工具编排、审批、重试和可观测性。',
|
|
68
68
|
avoidWhen: '如果只想看静态组件,或重点是精确 API 消息时序,请换其他配方。',
|
|
69
69
|
include: ['请求与规划', '策略或审批门', '工具执行', '异常与证据路径'],
|
|
70
|
-
prompt: '
|
|
70
|
+
prompt: '用 Archify 工作流模式解释这段智能体工具调用。把用户界面、Agent Runtime、策略边界、异常处理、工具执行和可观测性分成泳道;突出成功主路径,并明确展示审批、重试、阻塞和证据路径。',
|
|
71
71
|
},
|
|
72
72
|
},
|
|
73
73
|
{
|
|
74
74
|
id: 'delivery-workflow', type: 'workflow', proof: 'delivery-workflow',
|
|
75
|
-
presentation: { preset: 'classic', motion: 'trace'
|
|
75
|
+
presentation: { preset: 'classic', motion: 'trace' },
|
|
76
76
|
signals: [['ci/cd', 14], ['release workflow', 14], ['deployment pipeline', 11], ['pull request', 7], ['staging', 7], ['rollback', 8], ['发布流程', 14], ['流水线', 9], ['上线', 7], ['预发', 7], ['回滚', 8], ['审批发布', 10]],
|
|
77
77
|
en: {
|
|
78
78
|
title: 'Delivery workflow', question: 'How does a change move safely from commit to production?',
|
|
@@ -80,7 +80,7 @@ const RAW_RECIPES = [
|
|
|
80
80
|
useWhen: 'CI/CD design, release reviews, deployment governance, or onboarding developers to delivery.',
|
|
81
81
|
avoidWhen: 'The question is where infrastructure runs or what states a deployment object can occupy.',
|
|
82
82
|
include: ['trigger and build', 'blocking checks', 'approval and environments', 'rollback and verification'],
|
|
83
|
-
prompt: 'Use
|
|
83
|
+
prompt: 'Use Archify workflow mode to draw this delivery process from commit to production. Separate developer, CI, approval, environment, and exception lanes; mark blocking checks, smoke tests, ownership, and the rollback path. Keep one unmistakable happy path.',
|
|
84
84
|
},
|
|
85
85
|
zh: {
|
|
86
86
|
title: '研发交付流程', question: '一次变更如何安全地从提交走到生产?',
|
|
@@ -88,12 +88,12 @@ const RAW_RECIPES = [
|
|
|
88
88
|
useWhen: '适合 CI/CD 设计、发布评审、部署治理和研发新人上手。',
|
|
89
89
|
avoidWhen: '如果重点是基础设施位置或部署对象的状态集合,请换架构图或生命周期图。',
|
|
90
90
|
include: ['触发与构建', '阻断检查', '审批与环境', '回滚与验证'],
|
|
91
|
-
prompt: '
|
|
91
|
+
prompt: '用 Archify 工作流模式绘制从代码提交到生产发布的流程。拆分开发者、CI、审批、环境和异常泳道;标出阻断检查、冒烟测试、负责人和回滚路径,并保留一条一眼可见的成功主路径。',
|
|
92
92
|
},
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
id: 'incident-runbook', type: 'workflow', proof: 'incident-runbook',
|
|
96
|
-
presentation: { preset: 'signal-flow', motion: 'trace'
|
|
96
|
+
presentation: { preset: 'signal-flow', motion: 'trace' },
|
|
97
97
|
signals: [['incident response', 15], ['runbook', 12], ['outage', 9], ['triage', 8], ['mitigation', 8], ['escalation', 7], ['事故处置', 15], ['故障', 9], ['应急预案', 12], ['排障', 9], ['缓解', 7], ['升级响应', 8]],
|
|
98
98
|
en: {
|
|
99
99
|
title: 'Incident runbook', question: 'How do responders detect, triage, mitigate, verify, and escalate?',
|
|
@@ -101,7 +101,7 @@ const RAW_RECIPES = [
|
|
|
101
101
|
useWhen: 'Incident playbooks, on-call handoffs, reliability reviews, and tabletop exercises.',
|
|
102
102
|
avoidWhen: 'The audience needs live metrics or a post-incident component topology instead of response actions.',
|
|
103
103
|
include: ['detection signal', 'triage owner', 'mitigation and rollback', 'verification and communication'],
|
|
104
|
-
prompt: 'Use
|
|
104
|
+
prompt: 'Use Archify workflow mode to turn this incident runbook into responder lanes. Show detection, triage, mitigation, escalation, communication, rollback, and recovery verification. Separate decision gates from actions and make missing ownership visible.',
|
|
105
105
|
},
|
|
106
106
|
zh: {
|
|
107
107
|
title: '事故处置 Runbook', question: '响应者如何发现、分诊、缓解、验证并升级?',
|
|
@@ -109,15 +109,15 @@ const RAW_RECIPES = [
|
|
|
109
109
|
useWhen: '适合故障预案、On-call 交接、稳定性评审和桌面演练。',
|
|
110
110
|
avoidWhen: '如果受众需要实时指标仪表盘或事故后的组件拓扑,而不是响应动作,请换其他视图。',
|
|
111
111
|
include: ['发现信号', '分诊负责人', '缓解与回滚', '恢复验证与沟通'],
|
|
112
|
-
prompt: '
|
|
112
|
+
prompt: '用 Archify 工作流模式把事故处置预案画成响应者泳道。展示发现、分诊、缓解、升级、沟通、回滚和恢复验证;把决策门与操作分开,并让缺失的负责人清晰可见。',
|
|
113
113
|
},
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
116
|
id: 'api-request', type: 'sequence', proof: 'cache-miss',
|
|
117
|
-
presentation: { preset: 'classic', motion: 'trace'
|
|
117
|
+
presentation: { preset: 'classic', motion: 'trace' },
|
|
118
118
|
start: {
|
|
119
|
-
en: { descriptionPrompt: 'Use
|
|
120
|
-
zh: { descriptionPrompt: '
|
|
119
|
+
en: { descriptionPrompt: 'Use Archify sequence mode to draw this interaction: [paste the participants, calls, returns, fallback, and asynchronous side effects]. Keep message order unambiguous, labels short, and unknown behavior explicit. No repository is required.' },
|
|
120
|
+
zh: { descriptionPrompt: '用 Archify 时序模式绘制下面的交互:[粘贴参与者、调用、返回、回退和异步副作用]。确保消息顺序无歧义、标签简短,并明确标注未知行为。不需要代码库。' },
|
|
121
121
|
},
|
|
122
122
|
signals: [['api request', 14], ['request response', 12], ['call chain', 11], ['cache miss', 13], ['jwt', 8], ['who calls whom', 12], ['api 请求', 14], ['请求响应', 12], ['调用链', 11], ['缓存未命中', 13], ['谁调用谁', 12], ['鉴权链路', 9]],
|
|
123
123
|
en: {
|
|
@@ -126,7 +126,7 @@ const RAW_RECIPES = [
|
|
|
126
126
|
useWhen: 'API documentation, debugging request latency, auth reviews, or explaining cache fallback.',
|
|
127
127
|
avoidWhen: 'Order is unimportant and the audience only needs the stable service topology.',
|
|
128
128
|
include: ['callers and callees', 'request and return messages', 'fallback or error path', 'async side effects'],
|
|
129
|
-
prompt: 'Use
|
|
129
|
+
prompt: 'Use Archify sequence mode to show this request from caller to final response. Include authentication, cache hit or miss, persistence fallback, return messages, and asynchronous trace or event emission. Keep message labels short and order unambiguous.',
|
|
130
130
|
},
|
|
131
131
|
zh: {
|
|
132
132
|
title: 'API 请求链', question: '谁调用谁、顺序如何、最终返回什么?',
|
|
@@ -134,12 +134,12 @@ const RAW_RECIPES = [
|
|
|
134
134
|
useWhen: '适合 API 文档、请求耗时排查、鉴权评审和缓存回退说明。',
|
|
135
135
|
avoidWhen: '如果顺序不重要,受众只需要稳定的服务拓扑,请用架构图。',
|
|
136
136
|
include: ['调用方与被调用方', '请求与返回消息', '回退或错误路径', '异步副作用'],
|
|
137
|
-
prompt: '
|
|
137
|
+
prompt: '用 Archify 时序模式展示从调用方到最终响应的完整请求。包含鉴权、缓存命中或未命中、持久化回退、返回消息,以及异步 Trace 或事件上报;消息标签保持简短,顺序必须明确。',
|
|
138
138
|
},
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
141
|
id: 'async-roundtrip', type: 'sequence', proof: 'async-roundtrip',
|
|
142
|
-
presentation: { preset: 'signal-flow', motion: 'trace'
|
|
142
|
+
presentation: { preset: 'signal-flow', motion: 'trace' },
|
|
143
143
|
signals: [['async roundtrip', 14], ['webhook', 10], ['callback', 10], ['acknowledgement', 8], ['timeout', 7], ['retry message', 8], ['异步回调', 14], ['回调', 10], ['确认消息', 8], ['超时', 7], ['消息重试', 9], ['webhook', 10]],
|
|
144
144
|
en: {
|
|
145
145
|
title: 'Async roundtrip', question: 'What happens after the initial request returns?',
|
|
@@ -147,7 +147,7 @@ const RAW_RECIPES = [
|
|
|
147
147
|
useWhen: 'Webhooks, jobs, queues, payment callbacks, eventual consistency, or async API contracts.',
|
|
148
148
|
avoidWhen: 'The primary question is topic topology and consumer ownership rather than time order.',
|
|
149
149
|
include: ['initial acknowledgement', 'queue or scheduler', 'background work', 'callback, retry, and timeout'],
|
|
150
|
-
prompt: 'Use
|
|
150
|
+
prompt: 'Use Archify sequence mode to explain this asynchronous roundtrip. Show the initial acknowledgement, enqueue or scheduling step, background processing, callback or polling, retry and timeout behavior, and the point where the caller can observe final consistency.',
|
|
151
151
|
},
|
|
152
152
|
zh: {
|
|
153
153
|
title: '异步往返链路', question: '初始请求返回之后,后台还会发生什么?',
|
|
@@ -155,12 +155,12 @@ const RAW_RECIPES = [
|
|
|
155
155
|
useWhen: '适合 Webhook、后台任务、队列、支付回调、最终一致和异步 API 契约。',
|
|
156
156
|
avoidWhen: '如果重点是 Topic 拓扑和消费者归属,而不是时间顺序,请用事件数据流配方。',
|
|
157
157
|
include: ['初始确认', '队列或调度器', '后台处理', '回调、重试与超时'],
|
|
158
|
-
prompt: '
|
|
158
|
+
prompt: '用 Archify 时序模式解释这段异步往返链路。展示初始确认、入队或调度、后台处理、回调或轮询、重试与超时,以及调用方何时能观察到最终一致结果。',
|
|
159
159
|
},
|
|
160
160
|
},
|
|
161
161
|
{
|
|
162
162
|
id: 'data-lineage', type: 'dataflow', proof: 'product-analytics',
|
|
163
|
-
presentation: { preset: 'classic', motion: 'trace'
|
|
163
|
+
presentation: { preset: 'classic', motion: 'trace' },
|
|
164
164
|
signals: [['data lineage', 15], ['etl', 12], ['warehouse', 9], ['pii', 11], ['governance', 9], ['analytics pipeline', 12], ['数据血缘', 15], ['数据管道', 11], ['数仓', 9], ['治理', 9], ['隐私数据', 10], ['用户同意', 9]],
|
|
165
165
|
en: {
|
|
166
166
|
title: 'Data lineage', question: 'Where does data come from, how does it change, and who consumes it?',
|
|
@@ -168,7 +168,7 @@ const RAW_RECIPES = [
|
|
|
168
168
|
useWhen: 'Analytics architecture, ETL/ELT review, PII assessment, warehouse design, or model feature lineage.',
|
|
169
169
|
avoidWhen: 'The audience needs request timing or operational task ownership rather than data assets.',
|
|
170
170
|
include: ['sources and assets', 'transform stages', 'classification or consent', 'stores and consumers'],
|
|
171
|
-
prompt: 'Use
|
|
171
|
+
prompt: 'Use Archify dataflow mode to map this data lineage. Name every data asset and transform, show consent or classification boundaries, distinguish streaming from batch paths, and identify stores plus downstream consumers. Do not use unlabeled flows.',
|
|
172
172
|
},
|
|
173
173
|
zh: {
|
|
174
174
|
title: '数据血缘', question: '数据从哪里来、如何变化、最终被谁消费?',
|
|
@@ -176,24 +176,24 @@ const RAW_RECIPES = [
|
|
|
176
176
|
useWhen: '适合分析架构、ETL/ELT 评审、PII 评估、数仓设计和特征血缘。',
|
|
177
177
|
avoidWhen: '如果受众需要请求时序或操作负责人,而不是数据资产,请换其他配方。',
|
|
178
178
|
include: ['数据来源与资产', '转换阶段', '分类或同意边界', '存储与消费者'],
|
|
179
|
-
prompt: '
|
|
179
|
+
prompt: '用 Archify 数据流模式梳理这段数据血缘。为每个数据资产和转换命名,展示用户同意或数据分类边界,区分流式与批处理路径,并标明存储和下游消费者;所有数据流都必须有标签。',
|
|
180
180
|
},
|
|
181
181
|
},
|
|
182
182
|
{
|
|
183
183
|
id: 'event-stream', type: 'dataflow', proof: 'event-stream',
|
|
184
|
-
presentation: { preset: 'signal-flow', motion: 'trace'
|
|
184
|
+
presentation: { preset: 'signal-flow', motion: 'trace' },
|
|
185
185
|
start: {
|
|
186
|
-
en: { descriptionPrompt: 'Use
|
|
187
|
-
zh: { descriptionPrompt: '
|
|
186
|
+
en: { descriptionPrompt: 'Use Archify dataflow mode to map this data journey: [paste the sources, data assets, transforms, stores, boundaries, and consumers]. Label every flow, distinguish streaming from batch where relevant, and mark unknown classifications or ownership instead of inventing them.' },
|
|
187
|
+
zh: { descriptionPrompt: '用 Archify 数据流模式梳理下面的数据路径:[粘贴来源、数据资产、转换、存储、边界和消费者]。为每条数据流标注名称,在有意义时区分流式与批处理,未知的分类或归属要标明而不是编造。' },
|
|
188
188
|
},
|
|
189
189
|
signals: [['event stream', 15], ['kafka topology', 14], ['topic', 8], ['consumer group', 11], ['dead letter', 10], ['dlq', 10], ['事件流', 15], ['kafka 拓扑', 14], ['主题', 7], ['消费者组', 11], ['死信', 10], ['事件地铁图', 12]],
|
|
190
190
|
en: {
|
|
191
191
|
title: 'Event-stream topology', question: 'Which events move through which topics, processors, groups, and failure paths?',
|
|
192
192
|
summary: 'A stream map of producers, topics, ordered processors, consumer groups, state, replay, and DLQ.',
|
|
193
193
|
useWhen: 'Kafka/event-platform design, stream processing reviews, ownership, replay, and failure handling.',
|
|
194
|
-
avoidWhen: 'Topic names, consumer groups, and delivery semantics are not known
|
|
194
|
+
avoidWhen: 'Topic names, consumer groups, and delivery semantics are not known—use a generic workflow instead.',
|
|
195
195
|
include: ['producers and event names', 'topics and ordering', 'processors and consumer groups', 'state, replay, and DLQ'],
|
|
196
|
-
prompt: 'Use
|
|
196
|
+
prompt: 'Use Archify dataflow mode to draw this event-stream topology. Name producers, events, topics, ordered processors, consumer groups, state stores, replay paths, and the DLQ. Show ownership and delivery semantics only when supported by evidence.',
|
|
197
197
|
},
|
|
198
198
|
zh: {
|
|
199
199
|
title: '事件流拓扑', question: '哪些事件经过哪些 Topic、处理器、消费者组和失败路径?',
|
|
@@ -201,15 +201,15 @@ const RAW_RECIPES = [
|
|
|
201
201
|
useWhen: '适合 Kafka/事件平台设计、流处理评审、归属、重放和失败处理。',
|
|
202
202
|
avoidWhen: '如果 Topic、消费者组和投递语义都不清楚,请先用通用工作流,不要编造事件拓扑。',
|
|
203
203
|
include: ['生产者与事件名', 'Topic 与顺序', '处理器与消费者组', '状态、重放与 DLQ'],
|
|
204
|
-
prompt: '
|
|
204
|
+
prompt: '用 Archify 数据流模式绘制这段事件流拓扑。命名生产者、事件、Topic、有序处理器、消费者组、状态存储、重放路径和 DLQ;只有在证据充分时才标注归属和投递语义。',
|
|
205
205
|
},
|
|
206
206
|
},
|
|
207
207
|
{
|
|
208
208
|
id: 'object-lifecycle', type: 'lifecycle', proof: 'agent-run',
|
|
209
|
-
presentation: { preset: 'classic', motion: 'trace'
|
|
209
|
+
presentation: { preset: 'classic', motion: 'trace' },
|
|
210
210
|
start: {
|
|
211
|
-
en: { descriptionPrompt: 'Use
|
|
212
|
-
zh: { descriptionPrompt: '
|
|
211
|
+
en: { descriptionPrompt: 'Use Archify lifecycle mode to model this object: [paste its states, transition events, waits, retries, cancellation, and terminal outcomes]. Separate active, waiting, recoverable-failure, and terminal states, and never hide an ending. No repository is required.' },
|
|
212
|
+
zh: { descriptionPrompt: '用 Archify 生命周期模式建模这个对象:[粘贴它的状态、转换事件、等待、重试、取消和终态]。分开执行、等待、可恢复失败和终态,不要隐藏任何结束方式。不需要代码库。' },
|
|
213
213
|
},
|
|
214
214
|
signals: [['state machine', 15], ['object lifecycle', 14], ['status transition', 11], ['terminal state', 9], ['retry state', 8], ['状态机', 15], ['生命周期', 13], ['状态流转', 11], ['终态', 9], ['等待态', 8], ['重试状态', 8]],
|
|
215
215
|
en: {
|
|
@@ -218,7 +218,7 @@ const RAW_RECIPES = [
|
|
|
218
218
|
useWhen: 'Tasks, orders, tickets, subscriptions, jobs, agent runs, or any durable object with status.',
|
|
219
219
|
avoidWhen: 'The object has no durable state and the real question is participant interaction over time.',
|
|
220
220
|
include: ['start and active states', 'event-labelled transitions', 'wait and retry states', 'all terminal outcomes'],
|
|
221
|
-
prompt: 'Use
|
|
221
|
+
prompt: 'Use Archify lifecycle mode to model this object. Separate main progress, waiting or interruption states, and terminal outcomes. Label transitions with events, include retry, cancellation, timeout, success, and failure where real, and never hide an ending.',
|
|
222
222
|
},
|
|
223
223
|
zh: {
|
|
224
224
|
title: '对象生命周期', question: '有哪些状态、什么事件触发流转、最终如何结束?',
|
|
@@ -226,12 +226,12 @@ const RAW_RECIPES = [
|
|
|
226
226
|
useWhen: '适合任务、订单、工单、订阅、作业、Agent Run 等带持久状态的对象。',
|
|
227
227
|
avoidWhen: '对象没有持久状态,真正问题是参与者随时间的交互时,请使用时序图。',
|
|
228
228
|
include: ['开始与执行态', '带事件的转换', '等待与重试态', '所有终态'],
|
|
229
|
-
prompt: '
|
|
229
|
+
prompt: '用 Archify 生命周期模式建模这个对象。分开主进度、等待或中断状态和终态;用事件标注转换,并在真实存在时展示重试、取消、超时、成功和失败,不能隐藏任何结束方式。',
|
|
230
230
|
},
|
|
231
231
|
},
|
|
232
232
|
{
|
|
233
233
|
id: 'deployment-lifecycle', type: 'lifecycle', proof: 'deployment-lifecycle',
|
|
234
|
-
presentation: { preset: 'signal-flow', motion: 'trace'
|
|
234
|
+
presentation: { preset: 'signal-flow', motion: 'trace' },
|
|
235
235
|
signals: [['deployment lifecycle', 15], ['release state', 10], ['promotion state', 9], ['approval status', 8], ['rollback state', 10], ['部署生命周期', 15], ['发布状态', 10], ['晋级', 7], ['审批状态', 8], ['回滚状态', 10]],
|
|
236
236
|
en: {
|
|
237
237
|
title: 'Deployment lifecycle', question: 'What state is a release in, and what can happen next?',
|
|
@@ -239,7 +239,7 @@ const RAW_RECIPES = [
|
|
|
239
239
|
useWhen: 'Release controllers, GitOps reconciliation, environment promotion, or deployment status APIs.',
|
|
240
240
|
avoidWhen: 'The question is the human/CI sequence of delivery actions rather than the deployment object state.',
|
|
241
241
|
include: ['queued and running states', 'verification and approval', 'promotion and rollback', 'success, failure, cancellation'],
|
|
242
|
-
prompt: 'Use
|
|
242
|
+
prompt: 'Use Archify lifecycle mode to model the deployment object. Show queued, building, verifying, waiting for approval, promoting, rolling back, and every terminal outcome. Label the events and guards that permit each transition.',
|
|
243
243
|
},
|
|
244
244
|
zh: {
|
|
245
245
|
title: '部署生命周期', question: '一次发布当前处于什么状态,下一步可能发生什么?',
|
|
@@ -247,7 +247,71 @@ const RAW_RECIPES = [
|
|
|
247
247
|
useWhen: '适合发布控制器、GitOps 对账、环境晋级和部署状态 API。',
|
|
248
248
|
avoidWhen: '如果重点是人员与 CI 的交付动作顺序,而不是部署对象状态,请用交付工作流。',
|
|
249
249
|
include: ['排队与执行态', '验证与审批', '晋级与回滚', '成功、失败与取消'],
|
|
250
|
-
prompt: '
|
|
250
|
+
prompt: '用 Archify 生命周期模式建模部署对象。展示排队、构建、验证、等待审批、晋级、回滚以及所有终态,并标注允许每次状态转换的事件和守卫条件。',
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
id: 'database-schema', type: 'erd', proof: 'orders',
|
|
255
|
+
presentation: { preset: 'classic', motion: 'static', views: 'optional' },
|
|
256
|
+
start: {
|
|
257
|
+
en: { descriptionPrompt: 'Use Archify to model this data model as an entity-relationship diagram: [paste the schema DDL, or describe the tables, their key columns, and how they relate]. No repository is required. Include every column the reader needs rather than a summary, mark primary, foreign, and unique keys, and draw each foreign-key relationship with the cardinality and optionality of both ends.' },
|
|
258
|
+
zh: { descriptionPrompt: '用 Archify 把这份数据模型画成实体关系图:[粘贴建表 DDL,或描述表、关键字段以及表之间的关联]。不需要代码库。字段要完整而不是摘要,标注主键、外键和唯一键,并为每条外键关系画出两端的基数和可选性。' },
|
|
259
|
+
},
|
|
260
|
+
signals: [['entity relationship', 14], ['er diagram', 15], ['database schema', 13], ['table schema', 12], ['foreign key', 11], ['primary key', 9], ['cardinality', 9], ['实体关系图', 15], ['ER 图', 15], ['表结构', 13], ['数据库设计', 12], ['外键', 11], ['主键', 9], ['实体关系', 12]],
|
|
261
|
+
en: {
|
|
262
|
+
title: 'Database schema', question: 'Which tables exist, what columns and keys do they carry, and how do they relate?',
|
|
263
|
+
summary: 'An entity-relationship map of tables with their complete column lists, key markers, and the cardinality between them.',
|
|
264
|
+
useWhen: 'Schema reviews, data-model onboarding, migration planning, or explaining a foreign-key graph.',
|
|
265
|
+
avoidWhen: 'The question is row-level movement between systems (data flow) or access order at runtime (sequence).',
|
|
266
|
+
include: ['tables with their complete column lists', 'primary, foreign, and unique key markers', 'cardinality and optionality at both ends', 'cards reserved for supplementary notes'],
|
|
267
|
+
prompt: 'Use Archify ERD mode to model this schema. Show every physical column inside its table — the field list is this diagram\'s primary content, not a summary — and mark primary, foreign, and unique keys. Draw every foreign-key relationship with its cardinality and optionality at both ends, and group related tables into contiguous domain blocks. Keep cards for supplementary notes instead of moving columns out of the tables.',
|
|
268
|
+
},
|
|
269
|
+
zh: {
|
|
270
|
+
title: '数据库表结构', question: '有哪些表、各自带哪些字段和键、彼此如何关联?',
|
|
271
|
+
summary: '用实体关系图展示表及其完整字段清单、键标记和表之间的基数关系。',
|
|
272
|
+
useWhen: '适合表结构评审、数据模型上手、迁移规划和解释外键关系图。',
|
|
273
|
+
avoidWhen: '如果重点是系统之间的行级数据流动或运行期访问顺序,请用数据流图或时序图。',
|
|
274
|
+
include: ['表及其完整字段清单', '主键、外键、唯一键标记', '两端的基数与可选性', '卡片只放补充说明'],
|
|
275
|
+
prompt: '用 Archify ERD 模式建模这份表结构。每张表的完整物理字段都画在表内——字段清单是这张图的主要内容,不是摘要——并标注主键、外键和唯一键。为每条外键关系画出两端的基数和可选性,把相关表组织成连续的领域块。卡片只保留补充说明,不要用它把字段移出表外。',
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
id: 'layout-repair', type: 'architecture', proof: 'web-app',
|
|
280
|
+
presentation: { preset: 'classic', motion: 'static' },
|
|
281
|
+
signals: [
|
|
282
|
+
['layout repair', 20], ['repair order', 20], ['fix order', 20],
|
|
283
|
+
['viewport overflow', 20], ['overflow', 16], ['scrollheight', 16], ['scrollwidth', 16],
|
|
284
|
+
['overlap', 16], ['label overlap', 20], ['edge through node', 20], ['crossing', 8],
|
|
285
|
+
['via', 7], ['waypoint', 14],
|
|
286
|
+
['布局修复', 20], ['修复顺序', 20], ['视口溢出', 20], ['溢出', 16], ['滚动高度', 16], ['滚动宽度', 16],
|
|
287
|
+
['重叠', 16], ['标签重叠', 20], ['连线穿过节点', 20], ['连线穿节点', 20], ['交叉', 8],
|
|
288
|
+
['途经点', 14], ['路径点', 14], ['拐点', 14],
|
|
289
|
+
],
|
|
290
|
+
en: {
|
|
291
|
+
title: 'Layout repair', question: 'Why does the existing diagram overflow, overlap, or route through nodes, and what should be fixed first?',
|
|
292
|
+
summary: 'Repair an existing diagram in its current mode using validation diagnostics, explicit waypoint semantics, and a measured desktop viewport budget.',
|
|
293
|
+
useWhen: 'An existing architecture, workflow, sequence, dataflow, or lifecycle diagram needs layout repair; keep its diagram type and presentation settings.',
|
|
294
|
+
avoidWhen: 'The task is choosing a new diagram type. Do not change topology, delete meaningful labels, or hide overflow just to pass checks.',
|
|
295
|
+
include: [
|
|
296
|
+
'repair order: schema → overlap → direction → crossings → labels',
|
|
297
|
+
'via contract: absolute [x, y] intermediate points; route = [start, ...via, end]',
|
|
298
|
+
'desktop viewport budget for the complete page, including header and necessary cards',
|
|
299
|
+
'validate after each edit, then inspect the final HTML in a browser',
|
|
300
|
+
],
|
|
301
|
+
prompt: 'Use Archify to repair this existing diagram while preserving its diagram type, topology, meaningful labels, and presentation settings. Follow references/authoring-contract.md in this order: (1) schema and missing/invalid meta.quality_profile; (2) node overlap or out-of-range placement; (3) edge-through-node and endpoint-direction errors; (4) crossings, ambiguous corridors, border runs, excessive detours, and route rhythm; (5) labels: label-to-node, label-to-label, then label-to-route clearance. Run validate after every edit and use diagnostics[] code, subject, evidence, and supportedFixes; apply one diagnosed geometry control at a time. Where the current schema supports via, it is an ordered array of absolute SVG [x, y] intermediate points: the route is [start, ...via, end], with start/end supplied by the node anchors. Explicit via points override automatic routing; they are not offsets or a request for automatic obstacle avoidance. For an orthogonal repair, align adjacent points on the same x or y and make the first/final segment respect fromSide/toSide; use only controls supported by the current diagram mode. Follow references/delivery-contract.md for the viewport budget: check 1440×900, 1600×1000, 1920×1080, and 2048×1320; require document.documentElement.scrollWidth <= window.innerWidth. Prefer document.documentElement.scrollHeight <= window.innerHeight, but preserve a Reader-declared readable vertical page scroll when browser-check explicitly accepts it after reaching the projected-text floor. Budget the entire page, including header, diagram, and necessary cards. Repair every other overflow by removing only redundant content or compacting spacing first; do not hide overflow, clip content, introduce an internal diagram scroller, stretch the SVG, or shrink typography to force a pass. Let finalize run the required browser evidence; run perceptual visual review only when requested or escalated by the delivery contract.',
|
|
302
|
+
},
|
|
303
|
+
zh: {
|
|
304
|
+
title: '布局修复', question: '现有图为什么仍然溢出、重叠或连线穿过节点,应该先修什么?',
|
|
305
|
+
summary: '保留现有图表模式,依据验证诊断、途经点语义和实测桌面视口预算修复布局。',
|
|
306
|
+
useWhen: '已有架构图、工作流、时序图、数据流或生命周期图需要修复布局;保留原来的图表类型和表现设置。',
|
|
307
|
+
avoidWhen: '任务是为新图选择类型时不要使用。不要为了通过检查改变拓扑、删除有意义的标签或隐藏溢出。',
|
|
308
|
+
include: [
|
|
309
|
+
'修复顺序:schema → 重叠 → 方向 → 交叉 → 标签',
|
|
310
|
+
'via 契约:绝对 [x, y] 中间点;路径 = [start, ...via, end]',
|
|
311
|
+
'包含标题和必要卡片的整页桌面视口预算',
|
|
312
|
+
'每次修改后 validate,最终在浏览器中检查 HTML',
|
|
313
|
+
],
|
|
314
|
+
prompt: '用 Archify 修复这张现有图,保留图表类型、拓扑、有意义的标签和表现设置。遵循 references/authoring-contract.md 的顺序:(1) schema 错误及缺失或无效的 meta.quality_profile;(2) 节点重叠或越界;(3) 连线穿过节点及端点方向错误;(4) 交叉、含混的共享通道、贴边走线、过度绕行和转弯节奏;(5) 标签与节点、标签与标签、标签与连线的间距。每次修改后运行 validate,依据 diagnostics[] 的 code、subject、evidence 和 supportedFixes,每次只应用一项有诊断依据的几何控制。当前 schema 支持 via 时,它是按顺序排列的绝对 SVG [x, y] 中间点数组:路径为 [start, ...via, end],起终点由节点锚点提供。显式 via 会覆盖自动路由,不是偏移量,也不会请求自动绕障。修复正交走线时,相邻点应共享 x 或 y,首尾线段应遵守 fromSide/toSide;只使用当前模式支持的控制字段。视口预算遵循 references/delivery-contract.md:检查 1440×900、1600×1000、1920×1080 和 2048×1320,要求 document.documentElement.scrollWidth <= window.innerWidth。优先满足 document.documentElement.scrollHeight <= window.innerHeight;如果 browser-check 明确确认 Reader 已达到投影文字下限并接受可读的页面纵向滚动,则保留该滚动。预算覆盖整页,包括标题、主图和必要卡片。其他溢出先通过移除冗余内容或压缩间距修复,不得靠隐藏溢出、裁切、内部滚动区、拉伸 SVG 或缩小字体强行通过。让 finalize 执行必需的浏览器证据;只在用户要求或 delivery contract 规定的升级条件下进行感知视觉审阅。',
|
|
251
315
|
},
|
|
252
316
|
},
|
|
253
317
|
];
|
|
@@ -343,11 +407,11 @@ export function recommendScenario(query, options = {}) {
|
|
|
343
407
|
export function formatScenarioList(lang = 'en') {
|
|
344
408
|
const isZh = lang === 'zh';
|
|
345
409
|
const heading = isZh
|
|
346
|
-
?
|
|
347
|
-
: `
|
|
410
|
+
? `Archify 场景配方(${SCENARIO_RECIPES.length})`
|
|
411
|
+
: `Archify scenario recipes (${SCENARIO_RECIPES.length})`;
|
|
348
412
|
const intro = isZh
|
|
349
|
-
? '先选择你要回答的问题,再选择图表类型。可运行:
|
|
350
|
-
: 'Choose the question before the diagram type. Run:
|
|
413
|
+
? '先选择你要回答的问题,再选择图表类型。可运行:archify guide "你的场景"'
|
|
414
|
+
: 'Choose the question before the diagram type. Run: archify guide "your scenario"';
|
|
351
415
|
return [heading, '', intro, '', ...listScenarioRecipes(lang).flatMap((recipe) => [
|
|
352
416
|
`${recipe.id} [${recipe.type}] ${recipe.title}`,
|
|
353
417
|
` ${recipe.question}`,
|
|
@@ -370,7 +434,7 @@ export function formatScenarioRecommendation(result) {
|
|
|
370
434
|
`${labels.use}: ${recipe.useWhen}`,
|
|
371
435
|
`${labels.avoid}: ${recipe.avoidWhen}`,
|
|
372
436
|
`${labels.include}: ${recipe.include.join(isZh ? '、' : '; ')}`,
|
|
373
|
-
`${labels.presentation}: ${recipe.presentation.preset} · ${recipe.presentation.motion}
|
|
437
|
+
`${labels.presentation}: ${recipe.presentation.preset} · ${recipe.presentation.motion}`,
|
|
374
438
|
'',
|
|
375
439
|
`${labels.prompt}:`,
|
|
376
440
|
recipe.prompt,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Architecture layout repair
|
|
2
|
+
|
|
3
|
+
Use this after actual visual review finds several tangled routes. A successful machine receipt does not settle composition. Work on the existing candidate, retaining all required components, relationships, labels, evidence, boundaries, and node sizes.
|
|
4
|
+
|
|
5
|
+
## Choose the repair scope
|
|
6
|
+
|
|
7
|
+
If the main and secondary chains already read clearly, repair the isolated defect locally. If a main chain is blocked, several routes tangle, or a local fix moves the defect onto another route, reflow the connected scene in one edit. Preserve all semantics and user-fixed geometry; agent-generated positions and route controls may change. After moving nodes, remove stale generated route overrides so automatic routing can use the new placement.
|
|
8
|
+
|
|
9
|
+
The receipt's `directCorridorBlockers`, when present, names nodes between an edge's aligned endpoints. This is geometric evidence, not proof that the edge is the main path or a new validation failure. Trace the reader's actual main path first. When a listed blocker interrupts that path, reposition the connected group instead of adding another detour.
|
|
10
|
+
|
|
11
|
+
## One coherent repair
|
|
12
|
+
|
|
13
|
+
1. Trace the affected relationships and their endpoints in the JSON. Before choosing coordinates, write the reader’s main path as an ordered list of existing edges, then identify shared state and real feedback cycles. Every neighboring pair in that main path must have the relationship being explained; place other components on branches beside their actual owner. Use `validate architecture <candidate.json> --layout-json --repo-root <root>` once if the compact receipt and screenshot do not reveal the needed route or label geometry; omit `--repo-root` only for a design without repository evidence. Do not guess repeated waypoint coordinates.
|
|
14
|
+
2. Place those connected main-path neighbors in reading order. Put shared state between its readers/writers, on an adjacent row if necessary, so one writer does not need a line across the whole execution area. Arrange a feedback cycle in its actual edge order around an open rectangle, with other consumers beside their owner. For example, if the edges are `client → API → dispatcher → worker → collector → runner → dispatcher`, put the first four on the upper row, collector below worker, and runner below dispatcher: the return then uses the lower row and a short upward edge. This illustrates adjacency, not a graph or set of coordinates to copy; use only relationships present in the candidate. Preserve every edge and its actual direction.
|
|
15
|
+
3. Keep automatic endpoints for the new placement. Constrain a side only when a branch or return needs a specific corridor; check that corridor against every affected relationship, including storage branches. If that local constraint introduces another conflict, return to the connected placement instead of cycling through side combinations. Only use detailed `via` or label coordinates for a remaining measured defect. Keep external actors outside the resolved boundary rectangle, including its padding; not listing a node in `wraps` does not visually exclude it. Keep an internal relationship and its label inside the shared boundary unless crossing it conveys a real fact; do not imply an external hop merely to avoid another route.
|
|
16
|
+
4. When `composition/label-gap` reports a measured minimum, enlarge that clear gap or move the connected group onto another readable row. Keep the full label beside its own route; placing it in distant empty space does not repair the relationship. Compact unused gaps while preserving measured label space and the previous text size. Keep the main interaction and all required nodes readable in the default desktop view; do not trade crossings for a large blank canvas, tiny text, or a chain that doubles back without a semantic reason.
|
|
17
|
+
|
|
18
|
+
Run the complete `finalize` once after the edit, then `visual-check` on the successful artifact and inspect its desktop captures. When replacing an already reviewed artifact, use one fresh `--out-dir` for both commands as described in [the delivery contract](delivery-contract.md#a-new-candidate-at-an-existing-output-path). Trace the main path, each secondary chain, and every affected arrow and label. A bounded second repair may address a remaining specific defect. If it still fails visual acceptance, retain the candidate and report the concrete gap; do not count it as a successful repair or continue blind coordinate changes.
|