@adia-ai/adia-ui-forge 0.8.36 → 0.8.38
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/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +53 -18
- package/README.md +17 -17
- package/agents/{a2ui-builder.corpus.json → a2ui-maintenance-agent.corpus.json} +1 -1
- package/agents/{a2ui-builder.md → a2ui-maintenance-agent.md} +6 -6
- package/agents/framework-reviewer.md +6 -6
- package/agents/{release-builder.corpus.json → package-release-agent.corpus.json} +3 -3
- package/agents/{release-builder.md → package-release-agent.md} +7 -7
- package/agents/{component-author.corpus.json → primitive-authoring-agent.corpus.json} +2 -2
- package/agents/{component-author.md → primitive-authoring-agent.md} +7 -7
- package/agents/routing-corpus.json +40 -40
- package/commands/{dogfood.md → demo-audit.md} +2 -1
- package/commands/{gen-review.md → gen-ui-review.md} +3 -2
- package/commands/{release.md → package-release.md} +3 -2
- package/commands/{deploy.md → site-deployment.md} +2 -1
- package/package.json +1 -1
- package/references/contracts/a2ui-mcp-surface.md +16 -8
- package/references/contracts/migration-guide-format.md +4 -4
- package/scripts/demo-postwrite-pattern-gate +2 -2
- package/scripts/release-pretag-docs-gate +2 -2
- package/scripts/sidecar-prewrite-guard +3 -3
- package/skills/{adia-a2ui → a2ui-maintenance}/SKILL.md +10 -9
- package/skills/{adia-a2ui → a2ui-maintenance}/evals/evals.json +8 -8
- package/skills/{adia-a2ui → a2ui-maintenance}/evals/routing-corpus.json +51 -51
- package/skills/{adia-a2ui → a2ui-maintenance}/references/anti-patterns.md +2 -2
- package/skills/{adia-a2ui → a2ui-maintenance}/references/chunk-authoring.md +2 -2
- package/skills/{adia-a2ui → a2ui-maintenance}/references/eval-diagnostics.md +3 -3
- package/skills/{adia-a2ui → a2ui-maintenance}/references/format-extension-decisions.md +2 -2
- package/skills/{adia-a2ui → a2ui-maintenance}/references/mcp-pipeline-ops.md +5 -5
- package/skills/{adia-a2ui → a2ui-maintenance}/references/mcp-tool-reference.md +5 -4
- package/skills/{adia-a2ui → a2ui-maintenance}/references/pipeline-overview.md +18 -18
- package/skills/{adia-a2ui → a2ui-maintenance}/references/semantic-fail-lifting.md +2 -2
- package/skills/{adia-a2ui → a2ui-maintenance}/references/strategy-engines.md +2 -2
- package/skills/{adia-a2ui → a2ui-maintenance}/references/zettel-calibration.md +2 -2
- package/skills/{adia-dogfood → demo-audit}/SKILL.md +8 -8
- package/skills/{adia-dogfood → demo-audit}/evals/evals.json +7 -7
- package/skills/{adia-dogfood → demo-audit}/evals/routing-corpus.json +43 -43
- package/skills/{adia-dogfood → demo-audit}/references/visual-probe-triage.md +1 -1
- package/skills/{adia-dogfood → demo-audit}/scripts/analyze.mjs +2 -2
- package/skills/{adia-gen-review → gen-ui-review}/SKILL.md +13 -13
- package/skills/{adia-gen-review → gen-ui-review}/evals/evals.json +7 -7
- package/skills/{adia-gen-review → gen-ui-review}/evals/routing-corpus.json +43 -43
- package/skills/{adia-gen-review → gen-ui-review}/references/corpus-html-patterns.md +4 -4
- package/skills/{adia-gen-review → gen-ui-review}/references/loop-protocol.md +11 -11
- package/skills/{adia-gen-review → gen-ui-review}/references/scores.schema.json +1 -1
- package/skills/{adia-gen-review → gen-ui-review}/scripts/gen-review-coverage-audit.mjs +4 -4
- package/skills/{adia-gen-review → gen-ui-review}/scripts/gen-review-decompose.mjs +6 -6
- package/skills/{adia-gen-review → gen-ui-review}/scripts/gen-review-status.mjs +5 -5
- package/skills/{adia-gen-review → gen-ui-review}/scripts/validate-cycle-scores.mjs +5 -5
- package/skills/{adia-llm-internals → llm-client-maintenance}/SKILL.md +7 -7
- package/skills/{adia-llm-internals → llm-client-maintenance}/evals/evals.json +7 -7
- package/skills/{adia-llm-internals → llm-client-maintenance}/evals/routing-corpus.json +49 -49
- package/skills/{adia-llm-internals → llm-client-maintenance}/references/adapter-contract.md +3 -3
- package/skills/{adia-llm-internals → llm-client-maintenance}/references/add-a-provider.md +5 -5
- package/skills/{adia-llm-internals → llm-client-maintenance}/references/bridge-facade.md +2 -2
- package/skills/{adia-llm-internals → llm-client-maintenance}/references/browser-proxy-boundary.md +2 -2
- package/skills/{adia-llm-internals → llm-client-maintenance}/references/model-registry.md +2 -2
- package/skills/{adia-llm-internals → llm-client-maintenance}/references/streaming-sse.md +2 -2
- package/skills/{adia-release → package-release}/SKILL.md +16 -16
- package/skills/{adia-release → package-release}/evals/evals.json +7 -7
- package/skills/{adia-release → package-release}/evals/routing-corpus.json +45 -45
- package/skills/{adia-release → package-release}/references/changelog-discipline.md +4 -4
- package/skills/{adia-release → package-release}/references/cut-procedure.md +84 -30
- package/skills/{adia-release → package-release}/references/gates-catalog.md +7 -6
- package/skills/{adia-release → package-release}/references/independent-package-release.md +2 -2
- package/skills/{adia-release → package-release}/references/migration-guide-authoring.md +12 -3
- package/skills/{adia-release → package-release}/references/recovery-paths.md +5 -5
- package/skills/{adia-release → package-release}/scripts/bump.mjs +87 -37
- package/skills/{adia-release → package-release}/scripts/dispatch-publish.mjs +1 -1
- package/skills/{adia-release → package-release}/scripts/gate-roster.mjs +17 -6
- package/skills/{adia-release → package-release}/scripts/insert-stub.mjs +30 -8
- package/skills/{adia-release → package-release}/scripts/package-paths.mjs +47 -18
- package/skills/{adia-release → package-release}/scripts/pr-bridge.mjs +1 -1
- package/skills/{adia-release → package-release}/scripts/promote-unreleased.mjs +1 -1
- package/skills/{adia-release → package-release}/scripts/release-pack.mjs +29 -8
- package/skills/{adia-release → package-release}/scripts/tag-lockstep.mjs +2 -2
- package/skills/{adia-author → primitive-authoring}/SKILL.md +7 -7
- package/skills/{adia-author → primitive-authoring}/evals/evals.json +7 -7
- package/skills/{adia-author → primitive-authoring}/evals/routing-corpus.json +61 -61
- package/skills/{adia-author → primitive-authoring}/references/INDEX.md +2 -2
- package/skills/{adia-author → primitive-authoring}/references/authoring-cycle.md +1 -1
- package/skills/{adia-author → primitive-authoring}/references/code-style.md +5 -5
- package/skills/{adia-author → primitive-authoring}/references/common-gotchas.md +1 -1
- package/skills/{adia-author → primitive-authoring}/references/llm-bridge.md +17 -17
- package/skills/{adia-author → primitive-authoring}/references/module-promotion.md +5 -5
- package/skills/{adia-author → primitive-authoring}/references/shell-patterns.md +2 -2
- package/skills/{adia-author → primitive-authoring}/references/trait-pages.md +1 -1
- package/skills/{adia-author → primitive-authoring}/scripts/build-canonical-pattern-index.mjs +1 -1
- package/skills/{adia-deploy → site-deployment}/SKILL.md +6 -6
- package/skills/{adia-deploy → site-deployment}/evals/evals.json +8 -8
- package/skills/{adia-deploy → site-deployment}/evals/routing-corpus.json +49 -49
- package/skills/{adia-deploy → site-deployment}/references/deploy-playbooks.md +10 -10
- package/skills/{adia-site-docs → site-docs-authoring}/SKILL.md +4 -4
- package/skills/{adia-site-docs → site-docs-authoring}/evals/evals.json +7 -7
- package/skills/{adia-site-docs → site-docs-authoring}/evals/routing-corpus.json +51 -51
- package/skills/{adia-site-docs → site-docs-authoring}/intent.md +8 -8
- package/skills/{adia-ssr → ssr-compatibility}/SKILL.md +8 -8
- package/skills/{adia-ssr → ssr-compatibility}/evals/evals.json +7 -7
- package/skills/{adia-ssr → ssr-compatibility}/evals/routing-corpus.json +43 -43
- package/skills/{adia-ssr → ssr-compatibility}/references/failure-shapes.md +1 -1
- package/skills/{adia-ssr → ssr-compatibility}/references/guard-patterns.md +1 -1
- /package/skills/{adia-a2ui → a2ui-maintenance}/references/corpus-discipline.md +0 -0
- /package/skills/{adia-a2ui → a2ui-maintenance}/references/leverage-rules.md +0 -0
- /package/skills/{adia-dogfood → demo-audit}/references/admin-shell-anatomy.md +0 -0
- /package/skills/{adia-dogfood → demo-audit}/references/app-shell-pitfalls.md +0 -0
- /package/skills/{adia-dogfood → demo-audit}/references/card-anatomy-sweep.md +0 -0
- /package/skills/{adia-dogfood → demo-audit}/references/html-attr-sweep.md +0 -0
- /package/skills/{adia-dogfood → demo-audit}/references/native-leak-annotations.md +0 -0
- /package/skills/{adia-gen-review → gen-ui-review}/references/rubric-cosmetic.md +0 -0
- /package/skills/{adia-gen-review → gen-ui-review}/references/rubric-decompose.md +0 -0
- /package/skills/{adia-gen-review → gen-ui-review}/references/rubric-score.md +0 -0
- /package/skills/{adia-release → package-release}/references/notes-authoring.md +0 -0
- /package/skills/{adia-release → package-release}/scripts/assert-monorepo-root.mjs +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/anti-patterns.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/api-contract.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/canonical-pattern-index.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/composite-demo-protocol.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/css-patterns.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/lifecycle-patterns.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/primitive-audit.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/token-contract.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/worked-example.md +0 -0
- /package/skills/{adia-author → primitive-authoring}/references/yaml-contract.md +0 -0
- /package/skills/{adia-ssr → ssr-compatibility}/references/consumer-workarounds.md +0 -0
- /package/skills/{adia-ssr → ssr-compatibility}/references/status-ledger.md +0 -0
- /package/skills/{adia-ssr → ssr-compatibility}/references/test-without-linkedom.md +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"skill": "
|
|
2
|
+
"skill": "primitive-authoring",
|
|
3
3
|
"note": "Trigger-routing suite (gh#369). expect=trigger: the skill should fire on the prompt in a fresh session. expect=no-trigger: a near-miss owned elsewhere (owner named per case) or generic knowledge with no AdiaUI skill involved. Cases derived from evals/routing-corpus.json's phrases array (gh#355 vetted corpus) plus the SKILL.md description's own trigger/NOT-fence language.",
|
|
4
4
|
"cases": [
|
|
5
5
|
{ "id": "t01", "prompt": "Add a new <toggle-ui> primitive component from scratch", "expect": "trigger" },
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
{ "id": "t07", "prompt": "Audit the four-axis contract for table-ui — token usage and lifecycle symmetry", "expect": "trigger" },
|
|
12
12
|
{ "id": "t08", "prompt": "Author a demo for the billing-overview composite, an examples.html", "expect": "trigger" },
|
|
13
13
|
{ "id": "t09", "prompt": "Add a pane behaviour to admin-shell per the bespoke shell-tier convention", "expect": "trigger" },
|
|
14
|
-
{ "id": "n01", "prompt": "Compose this Figma mock into AdiaUI components for our consumer app", "expect": "no-trigger", "owner": "
|
|
15
|
-
{ "id": "n02", "prompt": "Cut a release of the next version and publish the npm packages", "expect": "no-trigger", "owner": "
|
|
16
|
-
{ "id": "n03", "prompt": "Tune the zettel composition coverage, the eval is at 38%", "expect": "no-trigger", "owner": "
|
|
17
|
-
{ "id": "n04", "prompt": "Deploy the API service to the hosting platform", "expect": "no-trigger", "owner": "
|
|
18
|
-
{ "id": "n05", "prompt": "The gemini adapter is dropping usage tokens on streamed responses", "expect": "no-trigger", "owner": "
|
|
19
|
-
{ "id": "n06", "prompt": "Extend the LLM bridge in @adia-ai/llm to add a new provider", "expect": "no-trigger", "owner": "
|
|
14
|
+
{ "id": "n01", "prompt": "Compose this Figma mock into AdiaUI components for our consumer app", "expect": "no-trigger", "owner": "screen-composition" },
|
|
15
|
+
{ "id": "n02", "prompt": "Cut a release of the next version and publish the npm packages", "expect": "no-trigger", "owner": "package-release" },
|
|
16
|
+
{ "id": "n03", "prompt": "Tune the zettel composition coverage, the eval is at 38%", "expect": "no-trigger", "owner": "a2ui-maintenance" },
|
|
17
|
+
{ "id": "n04", "prompt": "Deploy the API service to the hosting platform", "expect": "no-trigger", "owner": "site-deployment" },
|
|
18
|
+
{ "id": "n05", "prompt": "The gemini adapter is dropping usage tokens on streamed responses", "expect": "no-trigger", "owner": "llm-client-maintenance" },
|
|
19
|
+
{ "id": "n06", "prompt": "Extend the LLM bridge in @adia-ai/llm to add a new provider", "expect": "no-trigger", "owner": "llm-client-maintenance" },
|
|
20
20
|
{ "id": "n07", "prompt": "Explain how React hooks work in general", "expect": "no-trigger" }
|
|
21
21
|
]
|
|
22
22
|
}
|
|
@@ -1,155 +1,155 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"name": "
|
|
3
|
+
"name": "primitive-authoring routing accuracy corpus",
|
|
4
4
|
"version": "2.1.0",
|
|
5
|
-
"purpose": "Routing-eval corpus for
|
|
5
|
+
"purpose": "Routing-eval corpus for primitive-authoring. Each phrase declares the skill (expected), a forbidden skill (expected_not, for phrases the source data only ever asserted as \"not this skill\"), or neither. Scored by scripts/skills/run-skill-evals.mjs (TF-IDF token overlap over per-skill description+triggers).",
|
|
6
6
|
"scoring_notes": "Heuristic signal, not ground truth. Treat misroutes as a prompt to tighten the skill description, never as a reason to keyword-stuff it. Real harness routing is LLM-driven.",
|
|
7
|
-
"scope": "
|
|
7
|
+
"scope": "primitive-authoring routing \u2014 does this phrase activate primitive-authoring?",
|
|
8
8
|
"phrases": [
|
|
9
9
|
{
|
|
10
|
-
"id": "
|
|
10
|
+
"id": "primitive-authoring-pos-01",
|
|
11
11
|
"phrase": "add a new button-ui primitive component",
|
|
12
|
-
"expected": "
|
|
12
|
+
"expected": "primitive-authoring"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
"id": "
|
|
15
|
+
"id": "primitive-authoring-pos-02",
|
|
16
16
|
"phrase": "build a new <toggle-ui> component from scratch",
|
|
17
|
-
"expected": "
|
|
17
|
+
"expected": "primitive-authoring"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
"id": "
|
|
20
|
+
"id": "primitive-authoring-pos-03",
|
|
21
21
|
"phrase": "create a new primitive web component in packages/web-components",
|
|
22
|
-
"expected": "
|
|
22
|
+
"expected": "primitive-authoring"
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
|
-
"id": "
|
|
25
|
+
"id": "primitive-authoring-pos-04",
|
|
26
26
|
"phrase": "add a new prop to table-ui",
|
|
27
|
-
"expected": "
|
|
27
|
+
"expected": "primitive-authoring"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
"id": "
|
|
30
|
+
"id": "primitive-authoring-pos-05",
|
|
31
31
|
"phrase": "fix the CSS in card-ui to handle the new bleed variant",
|
|
32
|
-
"expected": "
|
|
32
|
+
"expected": "primitive-authoring"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
|
-
"id": "
|
|
35
|
+
"id": "primitive-authoring-pos-06",
|
|
36
36
|
"phrase": "update the input-ui yaml to add a placeholder attribute",
|
|
37
|
-
"expected": "
|
|
37
|
+
"expected": "primitive-authoring"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
"id": "
|
|
40
|
+
"id": "primitive-authoring-pos-07",
|
|
41
41
|
"phrase": "build the chat-shell composition with the new sidebar slot",
|
|
42
|
-
"expected": "
|
|
42
|
+
"expected": "primitive-authoring"
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
|
-
"id": "
|
|
45
|
+
"id": "primitive-authoring-pos-08",
|
|
46
46
|
"phrase": "author a new web-module shell at packages/web-modules/editor/editor-shell",
|
|
47
|
-
"expected": "
|
|
47
|
+
"expected": "primitive-authoring"
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
|
-
"id": "
|
|
50
|
+
"id": "primitive-authoring-pos-09",
|
|
51
51
|
"phrase": "add a pane behaviour to admin-shell per the bespoke shell-tier convention",
|
|
52
|
-
"expected": "
|
|
52
|
+
"expected": "primitive-authoring"
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
|
-
"id": "
|
|
55
|
+
"id": "primitive-authoring-pos-10",
|
|
56
56
|
"phrase": "promote this inline content to a shared web-modules module",
|
|
57
|
-
"expected": "
|
|
57
|
+
"expected": "primitive-authoring"
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
|
-
"id": "
|
|
60
|
+
"id": "primitive-authoring-pos-11",
|
|
61
61
|
"phrase": "this content keeps repeating across apps, extract to a shared module",
|
|
62
|
-
"expected": "
|
|
62
|
+
"expected": "primitive-authoring"
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
|
-
"id": "
|
|
65
|
+
"id": "primitive-authoring-pos-12",
|
|
66
66
|
"phrase": "lift this billing-summary block from apps/saas to web-modules",
|
|
67
|
-
"expected": "
|
|
67
|
+
"expected": "primitive-authoring"
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
|
-
"id": "
|
|
70
|
+
"id": "primitive-authoring-pos-13",
|
|
71
71
|
"phrase": "audit the four-axis contract for table-ui",
|
|
72
|
-
"expected": "
|
|
72
|
+
"expected": "primitive-authoring"
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
|
-
"id": "
|
|
75
|
+
"id": "primitive-authoring-pos-14",
|
|
76
76
|
"phrase": "check the token usage in card-ui for drift",
|
|
77
|
-
"expected": "
|
|
77
|
+
"expected": "primitive-authoring"
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
|
-
"id": "
|
|
80
|
+
"id": "primitive-authoring-pos-15",
|
|
81
81
|
"phrase": "lifecycle audit on dropdown-ui \u2014 symmetric connected/disconnected?",
|
|
82
|
-
"expected": "
|
|
82
|
+
"expected": "primitive-authoring"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
|
-
"id": "
|
|
85
|
+
"id": "primitive-authoring-pos-16",
|
|
86
86
|
"phrase": "author a demo for the billing-overview composite",
|
|
87
|
-
"expected": "
|
|
87
|
+
"expected": "primitive-authoring"
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
|
-
"id": "
|
|
90
|
+
"id": "primitive-authoring-pos-17",
|
|
91
91
|
"phrase": "compose the examples.html for dashboard-layout",
|
|
92
|
-
"expected": "
|
|
92
|
+
"expected": "primitive-authoring"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
|
-
"id": "
|
|
95
|
+
"id": "primitive-authoring-pos-18",
|
|
96
96
|
"phrase": "write the demo for <integrations-page-ui> in packages/web-modules/settings",
|
|
97
|
-
"expected": "
|
|
97
|
+
"expected": "primitive-authoring"
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
|
-
"id": "
|
|
100
|
+
"id": "primitive-authoring-neg-01",
|
|
101
101
|
"phrase": "compose this Figma mock into AdiaUI components for our consumer app",
|
|
102
|
-
"expected_not": "
|
|
102
|
+
"expected_not": "primitive-authoring"
|
|
103
103
|
},
|
|
104
104
|
{
|
|
105
|
-
"id": "
|
|
105
|
+
"id": "primitive-authoring-neg-02",
|
|
106
106
|
"phrase": "cut a release of the next version and publish the npm packages",
|
|
107
|
-
"expected_not": "
|
|
107
|
+
"expected_not": "primitive-authoring"
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
|
-
"id": "
|
|
110
|
+
"id": "primitive-authoring-neg-03",
|
|
111
111
|
"phrase": "tune the zettel composition coverage; eval is at 38%",
|
|
112
|
-
"expected_not": "
|
|
112
|
+
"expected_not": "primitive-authoring"
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
|
-
"id": "
|
|
115
|
+
"id": "primitive-authoring-neg-04",
|
|
116
116
|
"phrase": "build a user profile card with avatar and edit actions",
|
|
117
|
-
"expected_not": "
|
|
117
|
+
"expected_not": "primitive-authoring"
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
|
-
"id": "
|
|
120
|
+
"id": "primitive-authoring-neg-05",
|
|
121
121
|
"phrase": "deploy the api service to the hosting platform",
|
|
122
|
-
"expected_not": "
|
|
122
|
+
"expected_not": "primitive-authoring"
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
|
-
"id": "
|
|
125
|
+
"id": "primitive-authoring-neg-06",
|
|
126
126
|
"phrase": "explain how React hooks work",
|
|
127
|
-
"expected_not": "
|
|
127
|
+
"expected_not": "primitive-authoring"
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
|
-
"id": "
|
|
130
|
+
"id": "primitive-authoring-neg-07",
|
|
131
131
|
"phrase": "the gemini adapter is dropping usage tokens on streamed responses",
|
|
132
|
-
"expected": "
|
|
132
|
+
"expected": "llm-client-maintenance"
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
|
-
"id": "
|
|
135
|
+
"id": "primitive-authoring-neg-08",
|
|
136
136
|
"phrase": "fix the openai stopReason mapping in the llm client",
|
|
137
|
-
"expected_not": "
|
|
137
|
+
"expected_not": "primitive-authoring"
|
|
138
138
|
},
|
|
139
139
|
{
|
|
140
|
-
"id": "
|
|
140
|
+
"id": "primitive-authoring-neg-09",
|
|
141
141
|
"phrase": "extend the LLM bridge to add a new provider",
|
|
142
|
-
"expected_not": "
|
|
142
|
+
"expected_not": "primitive-authoring"
|
|
143
143
|
},
|
|
144
144
|
{
|
|
145
|
-
"id": "
|
|
145
|
+
"id": "primitive-authoring-neg-10",
|
|
146
146
|
"phrase": "modify createAdapter in @adia-ai/llm to add chunk-shape support",
|
|
147
|
-
"expected_not": "
|
|
147
|
+
"expected_not": "primitive-authoring"
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
|
-
"id": "
|
|
150
|
+
"id": "primitive-authoring-neg-11",
|
|
151
151
|
"phrase": "set up the LLM-bridge surface for a new tool-call provider",
|
|
152
|
-
"expected_not": "
|
|
152
|
+
"expected_not": "primitive-authoring"
|
|
153
153
|
}
|
|
154
154
|
],
|
|
155
155
|
"_measured_historical": {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# primitive-authoring references — retrieval map
|
|
2
2
|
|
|
3
3
|
One line per file: `path — the question it answers`. Load this first; load
|
|
4
4
|
files on demand from it. Axes are topical (no severity ranking applies).
|
|
@@ -38,4 +38,4 @@ file, including the depth references those entries cross-link.
|
|
|
38
38
|
|
|
39
39
|
## Historical
|
|
40
40
|
|
|
41
|
-
- [llm-bridge.md](llm-bridge.md) — superseded 2026-07-18 pointer: `@adia-ai/llm` internals belong to `
|
|
41
|
+
- [llm-bridge.md](llm-bridge.md) — superseded 2026-07-18 pointer: `@adia-ai/llm` internals belong to `llm-client-maintenance`; kept only to redirect.
|
|
@@ -233,7 +233,7 @@ npm run verify:palette # CVD thresholds across theme × scheme
|
|
|
233
233
|
node -c path/to/new/file.js # JS syntax check
|
|
234
234
|
```
|
|
235
235
|
|
|
236
|
-
The full release-side gate roster lives in the sibling **
|
|
236
|
+
The full release-side gate roster lives in the sibling **package-release** skill; run its pre-flight sweep after any structural change.
|
|
237
237
|
|
|
238
238
|
If a gate fails, fix before declaring done.
|
|
239
239
|
|
|
@@ -132,7 +132,7 @@ Static markup written by hand uses the components directly. UIs generated from i
|
|
|
132
132
|
|
|
133
133
|
The runtime handles `createSurface` / `updateComponents` / `wireComponents` messages and binds `FormController` / `DataStreamController` controllers automatically. Don't roll your own message handler — the wiring lives in `@adia-ai/a2ui-runtime`.
|
|
134
134
|
|
|
135
|
-
For multi-turn refinement, pass back `state_id` from prior responses so the engine can chain through `parent_state_id`. See the sibling **
|
|
135
|
+
For multi-turn refinement, pass back `state_id` from prior responses so the engine can chain through `parent_state_id`. See the sibling **a2ui-maintenance** skill for the operator playbook.
|
|
136
136
|
|
|
137
137
|
## Two-block `@scope` CSS
|
|
138
138
|
|
|
@@ -316,7 +316,7 @@ Other deprecated forms swept in an early cut:
|
|
|
316
316
|
- `'chat-submit'` event → `'submit'`
|
|
317
317
|
- `<field-ui error="…">` → message moves to the slotted control
|
|
318
318
|
|
|
319
|
-
For a wholesale consumer-side migration, use `
|
|
319
|
+
For a wholesale consumer-side migration, use `app-migration` (adia-factory plugin) — it reads the MIGRATION GUIDE and runs the mechanical sweeps.
|
|
320
320
|
|
|
321
321
|
## Validate, always
|
|
322
322
|
|
|
@@ -328,7 +328,7 @@ For consumer markup (HTML pages, exemplars, training data), the checks are manua
|
|
|
328
328
|
- Run the project's lint if applicable: `npx eslint <path>`.
|
|
329
329
|
- Smoke the rendered output via `npm run dev` and load the touched page.
|
|
330
330
|
|
|
331
|
-
For component source under `packages/web-components/components/**`, the gate is heavier — see [authoring-cycle.md](authoring-cycle.md) Step 5 + the full release-side gate roster in the sibling **
|
|
331
|
+
For component source under `packages/web-components/components/**`, the gate is heavier — see [authoring-cycle.md](authoring-cycle.md) Step 5 + the full release-side gate roster in the sibling **package-release** skill.
|
|
332
332
|
|
|
333
333
|
## Cross-references
|
|
334
334
|
|
|
@@ -339,6 +339,6 @@ For component source under `packages/web-components/components/**`, the gate is
|
|
|
339
339
|
- [token-contract.md](token-contract.md) — token audit procedure
|
|
340
340
|
- [module-promotion.md](module-promotion.md) — promote inline → module
|
|
341
341
|
- [anti-patterns.md](anti-patterns.md) — failure-mode catalogue with file:line refs
|
|
342
|
-
- **
|
|
343
|
-
- **
|
|
342
|
+
- **a2ui-maintenance** (sibling skill) — generator / corpus / MCP pipeline
|
|
343
|
+
- **demo-audit** (sibling skill) — cross-surface visual / static QA
|
|
344
344
|
- the **adia-factory** plugin — composition playbook for consumers building apps on the framework
|
|
@@ -125,7 +125,7 @@ async #loadContent(route) {
|
|
|
125
125
|
|
|
126
126
|
## 7. Minting a wrapper-shaped component before its registry.js entry lands — site-a2ui silently deletes the node, not just mis-types it
|
|
127
127
|
|
|
128
|
-
**Pattern**: a tag is gated first and only, for `*-ui` tags, by `packages/a2ui/
|
|
128
|
+
**Pattern**: a tag is gated first and only, for `*-ui` tags, by `packages/gen-ui/a2ui/registry.js`'s hand-maintained `registry` map — inverted into `reverseRegistry` at `transpiler-maps.js`'s module init, consulted first thing in `compose/transpiler/transpiler.js:149-150`. `registry.js` is hand-edited, not generated by `node scripts/build/components.mjs` (that script writes sidecars/prop-catalog data, consumed only for prop-extraction fidelity on tags the transpiler ALREADY resolved — `transpiler-maps.js:22-26`); a runtime `registerType()` call doesn't rescue a stale row either — `reverseRegistry` is a one-time init snapshot, not live. Regenerate a site-a2ui row for a demo using a component minted in the SAME change, before its `registry.js` line lands, and the tag falls through to `transpiler.js`'s "Unknown → Column" branch (line 180-183) — same mechanism as gh#535's toolbar-group breakage, which at least rendered visibly-wrong. A NEW component is usually wrapper-shaped (one child, author-defined attributes like `anchor="bottom"` the transpiler doesn't map to any real A2UI prop). That shape trips a SECOND, separate rule right after — "single-child container chains flatten" (`transpiler.js:282-285`): a retyped Column with exactly one child and zero recognized props is discarded outright, and its child is spliced directly into the PARENT's children in its place. The wrapper's own id and node are never pushed to the tree at all — not visible-but-wrong, just gone. The row is then internally self-consistent (content hash matches source) so `check:chunks-fresh`/`verify:site-a2ui` both report clean.
|
|
129
129
|
|
|
130
130
|
**Example**: minting `anchor-bar-ui` (gh#495, PR #569) and regenerating the `bulk-action-toolbar` pattern's site-a2ui row before the worktree's `registry.js` entry for it existed. Git-verified on the pre-fix commit (`ebf71832d`): `site-a2ui/pages/site__patterns__bulk-action-toolbar.a2ui.json` contains zero occurrences of `pat-bulk-float-bar` (the anchor-bar-ui's own authored id) anywhere — not retyped-and-visible, genuinely absent — while its single child (the toolbar content) survived, reparented one level up. `verify:site-a2ui` reported 321/321 clean.
|
|
131
131
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# LLM Bridge extension — @adia-ai/llm
|
|
2
2
|
|
|
3
|
-
**Superseded 2026-07-18 — `@adia-ai/llm` internals are `
|
|
4
|
-
`
|
|
3
|
+
**Superseded 2026-07-18 — `@adia-ai/llm` internals are `llm-client-maintenance`'s charter, not
|
|
4
|
+
`primitive-authoring`'s.** That skill's references (`adapter-contract.md`, `streaming-sse.md`,
|
|
5
5
|
`model-registry.md`, `bridge-facade.md`, `browser-proxy-boundary.md`, `add-a-provider.md`)
|
|
6
6
|
are the current, maintained source — this file is kept only as a historical pointer and is
|
|
7
|
-
no longer linked from `
|
|
8
|
-
streaming/bridge work to `
|
|
7
|
+
no longer linked from `primitive-authoring`'s task-shape table or `code-style.md`. Route provider/
|
|
8
|
+
streaming/bridge work to `llm-client-maintenance`.
|
|
9
9
|
|
|
10
|
-
Use when adding a 4th provider, modifying `createAdapter()`, changing the streaming chunk shape, or extending `packages/llm/server.js`.
|
|
10
|
+
Use when adding a 4th provider, modifying `createAdapter()`, changing the streaming chunk shape, or extending `packages/llm/core/server.js`.
|
|
11
11
|
|
|
12
|
-
This reference is about **modifying** the package. For day-to-day consumption (import + call), the README at `packages/llm/README.md` is sufficient.
|
|
12
|
+
This reference is about **modifying** the package. For day-to-day consumption (import + call), the README at `packages/llm/core/README.md` is sufficient.
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -18,7 +18,7 @@ This reference is about **modifying** the package. For day-to-day consumption (i
|
|
|
18
18
|
- Adding a new provider adapter (e.g., DeepSeek, Cohere, Mistral)
|
|
19
19
|
- Changing `maxTokens`, `temperature`, or another bridge default
|
|
20
20
|
- Extending the streaming chunk type set (currently: `text` / `thinking` / `done` / `error`)
|
|
21
|
-
- Adding a new endpoint to `packages/llm/server.js`
|
|
21
|
+
- Adding a new endpoint to `packages/llm/core/server.js`
|
|
22
22
|
- Modifying the bridge's `complete()` / `stream()` shape
|
|
23
23
|
- Debugging "why does my LLM call return truncated JSON?"
|
|
24
24
|
|
|
@@ -112,7 +112,7 @@ If you add a new endpoint, document it in the npm README under "Browser proxy mo
|
|
|
112
112
|
|
|
113
113
|
### Step 1: Create the adapter
|
|
114
114
|
|
|
115
|
-
`packages/llm/adapters/<name>.js` exports a single object matching the shape used by anthropic / openai / gemini:
|
|
115
|
+
`packages/llm/core/adapters/<name>.js` exports a single object matching the shape used by anthropic / openai / gemini:
|
|
116
116
|
|
|
117
117
|
```js
|
|
118
118
|
import { readSSE } from './sse.js';
|
|
@@ -139,7 +139,7 @@ export const myProvider = {
|
|
|
139
139
|
|
|
140
140
|
### Step 2: Register in the facade
|
|
141
141
|
|
|
142
|
-
Edit `packages/llm/adapters/index.js`:
|
|
142
|
+
Edit `packages/llm/core/adapters/index.js`:
|
|
143
143
|
|
|
144
144
|
```js
|
|
145
145
|
import { myProvider } from './myprovider.js';
|
|
@@ -154,7 +154,7 @@ function detectProvider(model) {
|
|
|
154
154
|
|
|
155
155
|
### Step 3: Subpath export
|
|
156
156
|
|
|
157
|
-
Edit `packages/llm/package.json`:
|
|
157
|
+
Edit `packages/llm/core/package.json`:
|
|
158
158
|
|
|
159
159
|
```json
|
|
160
160
|
"exports": {
|
|
@@ -216,19 +216,19 @@ const DEFAULT_MODELS = {
|
|
|
216
216
|
Run the smoke tests against the new provider:
|
|
217
217
|
|
|
218
218
|
```bash
|
|
219
|
-
MYPROVIDER_API_KEY=*** node packages/
|
|
219
|
+
MYPROVIDER_API_KEY=*** node packages/gen-ui/mcp/gen-ui/scripts/smoke-engine-registry.mjs
|
|
220
220
|
```
|
|
221
221
|
|
|
222
222
|
Then run real-LLM eval at low intent count:
|
|
223
223
|
|
|
224
224
|
```bash
|
|
225
|
-
LLM_PROVIDER=myprovider node packages/
|
|
225
|
+
LLM_PROVIDER=myprovider node packages/gen-ui/mcp/gen-ui/scripts/eval-diff.mjs --semantic
|
|
226
226
|
```
|
|
227
227
|
|
|
228
228
|
## Pitfalls
|
|
229
229
|
|
|
230
|
-
- **Two proxy shapes — `proxyUrl` is overloaded.** The bridge supports two architecturally different proxies and the dispatcher in `packages/llm/adapters/index.js` chooses between them by URL shape. Get this wrong and you get silent 401s in the browser even though `node packages/llm/server.js` works fine.
|
|
231
|
-
- **Smart proxy** (`packages/llm/server.js`, route `POST /api/chat`): accepts a **provider-neutral body** `{ provider, model, messages, ... }`, holds the API key server-side, and dispatches internally to the right adapter. Headers are just `content-type: application/json`.
|
|
230
|
+
- **Two proxy shapes — `proxyUrl` is overloaded.** The bridge supports two architecturally different proxies and the dispatcher in `packages/llm/core/adapters/index.js` chooses between them by URL shape. Get this wrong and you get silent 401s in the browser even though `node packages/llm/core/server.js` works fine.
|
|
231
|
+
- **Smart proxy** (`packages/llm/core/server.js`, route `POST /api/chat`): accepts a **provider-neutral body** `{ provider, model, messages, ... }`, holds the API key server-side, and dispatches internally to the right adapter. Headers are just `content-type: application/json`.
|
|
232
232
|
- **Passthrough proxy** (Vite dev `/api/llm/<provider>/<rest>` → real upstream URL `https://api.<provider>.com/<rest>`): expects the **real upstream body shape** (Anthropic-shaped for `/anthropic/`, OpenAI-shaped for `/openai/`, etc.) plus the **adapter's own auth headers** (`x-api-key` + `anthropic-version`, or `Authorization: Bearer …`). The proxy is dumb — it just rewrites the URL and forwards bytes.
|
|
233
233
|
- Dispatcher: `chat()` and `streamChat()` in `adapters/index.js` call `isPassthroughProxy(proxyUrl)` (regex `/\/api\/llm\/[a-z]+(\/|$)/`). If true, they call `passthroughRequest()` which builds the real upstream body via `adapter.buildRequest()` then swaps in `proxyUrl`. If false, they call `proxyRequest()` with the provider-neutral body.
|
|
234
234
|
- **When adding a new provider**, make sure: (1) `buildRequest()` omits the API key header when `proxyUrl` is the smart proxy (already handled), (2) `buildRequest()` _includes_ the API key header when called from `passthroughRequest()` (also already handled — passthroughRequest forwards adapter headers). The adapter's `buildRequest()` is the single source of truth for upstream-shape body + headers. Don't fork it for proxy mode.
|
|
@@ -246,7 +246,7 @@ After any extension:
|
|
|
246
246
|
npm run check:lockstep # @adia-ai/llm version must match the others
|
|
247
247
|
npm run smoke:engines # engines still register; pick still works
|
|
248
248
|
npm run test:a2ui # 22 pass / 0 fail / 1 skipped
|
|
249
|
-
node packages/llm/server.js # boots cleanly; .env auto-loads
|
|
249
|
+
node packages/llm/core/server.js # boots cleanly; .env auto-loads
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
If you added a new SSE chunk type to the streaming protocol, verify all 7 consumers (chat-shell, generator.js, synthesis.js, eval-chunk-synthesis, eval-refine-synthesis, playgrounds/chat, apps/genui) still handle it correctly or fall through gracefully.
|
|
@@ -254,6 +254,6 @@ If you added a new SSE chunk type to the streaming protocol, verify all 7 consum
|
|
|
254
254
|
## Cross-references
|
|
255
255
|
|
|
256
256
|
- [code-style.md](code-style.md) — general AdiaUI conventions (this is a specialty path; start there if you need broader context)
|
|
257
|
-
- **
|
|
257
|
+
- **a2ui-maintenance** (sibling skill) — generator / MCP / zettel synthesis (consumes the bridge)
|
|
258
258
|
- Spec: `.claude/docs/specs/package-architecture.md` § 11 (Phase 5 — engine registry)
|
|
259
|
-
- README: `packages/llm/README.md` — consumer-facing docs
|
|
259
|
+
- README: `packages/llm/core/README.md` — consumer-facing docs
|
|
@@ -119,7 +119,7 @@ The "stripped" consumer. Same structural change minus persistence.
|
|
|
119
119
|
|
|
120
120
|
### Phase 4 — Migrate the chunk corpus
|
|
121
121
|
|
|
122
|
-
The harvested training-corpus chunk (`packages/a2ui/corpus/chunks/<name>.json`) embeds the consumer's HTML as an escaped string. Update it so the LLM sees the new authoring shape.
|
|
122
|
+
The harvested training-corpus chunk (`packages/gen-ui/a2ui/corpus/chunks/<name>.json`) embeds the consumer's HTML as an escaped string. Update it so the LLM sees the new authoring shape.
|
|
123
123
|
|
|
124
124
|
1. **Preferred** — re-run the harvester:
|
|
125
125
|
|
|
@@ -144,7 +144,7 @@ The harvested training-corpus chunk (`packages/a2ui/corpus/chunks/<name>.json`)
|
|
|
144
144
|
3. **Defensive grep across all chunks** for the legacy markers:
|
|
145
145
|
|
|
146
146
|
```bash
|
|
147
|
-
grep -l 'id="<old-id>"' packages/a2ui/corpus/chunks/*.json
|
|
147
|
+
grep -l 'id="<old-id>"' packages/gen-ui/a2ui/corpus/chunks/*.json
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
4. **Gotcha — hand-edit + later re-harvest** — if you used the fallback (step 2) AND a peer later adds your consumer's directory to harvester SOURCES, the next `harvest:chunks` run will overwrite your hand-edit with the live consumer HTML. Usually that's _good_ (the re-harvest captures the live state, including any post-edit consumer updates), but diff before assuming. Concrete example: theme-panel's `playground-app-shell.json` was hand-edited, then re-harvested after `playgrounds/` was added to SOURCES — the re-harvest captured the `<aside-ui>` → `<admin-sidebar>` bespoke conversion that the hand-edit missed.
|
|
@@ -159,7 +159,7 @@ The harvested training-corpus chunk (`packages/a2ui/corpus/chunks/<name>.json`)
|
|
|
159
159
|
|
|
160
160
|
### Phase 5 — Release
|
|
161
161
|
|
|
162
|
-
Either ship as a standalone lockstep cut (per the sibling **
|
|
162
|
+
Either ship as a standalone lockstep cut (per the sibling **package-release** skill), OR ride a bundled cut that the user is already coordinating. Either way:
|
|
163
163
|
|
|
164
164
|
1. **CHANGELOGs** — `packages/web-modules/CHANGELOG.md` `[Unreleased]` (or the dated bump block if you're cutting now) + root `CHANGELOG.md`.
|
|
165
165
|
2. **README** — `packages/web-modules/README.md`: cluster table row, Layout tree entry, Quick start `import` line.
|
|
@@ -265,7 +265,7 @@ apps/playgrounds/catalog layout.
|
|
|
265
265
|
- [shell-patterns.md](shell-patterns.md) — bespoke shell-tier decomposition (ADR-0023; the _different_ activity)
|
|
266
266
|
- [authoring-cycle.md](authoring-cycle.md) — the standard 5-step authoring cycle
|
|
267
267
|
- [api-contract.md](api-contract.md) — prop naming, reflection, the legacy forms
|
|
268
|
-
- **
|
|
269
|
-
- **
|
|
268
|
+
- **package-release** (sibling skill) — lockstep release cycle (Phase 5)
|
|
269
|
+
- **a2ui-maintenance** (sibling skill) — chunk corpus harvest + smoke gates (Phase 4)
|
|
270
270
|
- Spec: `.claude/docs/specs/package-architecture.md` — three-tier package layout
|
|
271
271
|
- ADR-0012 / ADR-0023 — decision labels: primitives-vs-modules-vs-themes and the bespoke shell pattern (history lives in git + PR descriptions)
|
|
@@ -532,8 +532,8 @@ When you encounter a legacy reference in old documentation or commit history, th
|
|
|
532
532
|
## After implementation
|
|
533
533
|
|
|
534
534
|
1. Update this reference if you discover new pitfalls
|
|
535
|
-
2. Cut a lockstep release using the sibling **
|
|
536
|
-
3. **When all consumers have migrated**, author the breaking-change migration recipe (
|
|
535
|
+
2. Cut a lockstep release using the sibling **package-release** skill
|
|
536
|
+
3. **When all consumers have migrated**, author the breaking-change migration recipe (package-release owns the MIGRATION GUIDE) and cut a breaking release. Don't let the compat window outlive its usefulness.
|
|
537
537
|
|
|
538
538
|
## Anti-patterns specific to shells (deduplicated)
|
|
539
539
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Every trait detail page under `site/pages/traits/<name>/` follows one binding section template. The 41-page Phase B sweep proved what a loose contract produces: bimodal quality (portfolio-grade pages next to abstract-box demos) and zero pages teaching restraint. Navigate-by-template is the contract. Source: ADR-0019.
|
|
4
4
|
|
|
5
|
-
Trait pages are this skill's charter (traits live in `packages/web-components/traits/`); `
|
|
5
|
+
Trait pages are this skill's charter (traits live in `packages/web-components/traits/`); `site-docs-authoring` owns `site/pages/{architecture,getting-started,guides,patterns,reference}` — not `traits/`.
|
|
6
6
|
|
|
7
7
|
## Required sections, in order
|
|
8
8
|
|
package/skills/{adia-author → primitive-authoring}/scripts/build-canonical-pattern-index.mjs
RENAMED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Run from the framework monorepo root (the dirs it scans — apps/, catalog/,
|
|
10
10
|
* playgrounds/ — are monorepo roots):
|
|
11
11
|
*
|
|
12
|
-
* node packages/plugins/adia-ui-forge/skills/
|
|
12
|
+
* node packages/plugins/adia-ui-forge/skills/primitive-authoring/scripts/build-canonical-pattern-index.mjs
|
|
13
13
|
*
|
|
14
14
|
* The output `references/canonical-pattern-index.md` is checked in so agents
|
|
15
15
|
* reading the skill always see the current state without running the script
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: site-deployment
|
|
3
3
|
description: >-
|
|
4
4
|
Deploys and operates the AdiaUI site + services on exe.dev VMs — pushing a
|
|
5
5
|
`site-v*` tag through the hardened rsync --delete deploy to ui-kit.exe.xyz
|
|
@@ -9,12 +9,12 @@ description: >-
|
|
|
9
9
|
rotation. Use for "deploy to exe.dev", "push a site-v* tag", "the site is
|
|
10
10
|
502ing / looks stale", "roll back the last deploy", "restart/diagnose the
|
|
11
11
|
exe service", "rotate keys on the VM". NOT for cutting the release itself
|
|
12
|
-
(
|
|
12
|
+
(package-release).
|
|
13
13
|
disable-model-invocation: false
|
|
14
14
|
user-invocable: true
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
#
|
|
17
|
+
# site-deployment
|
|
18
18
|
|
|
19
19
|
Operates AdiaUI services on **exe.dev** — shared Linux VMs reached via
|
|
20
20
|
`ssh <host>.exe.xyz`. Four playbooks: deploy an update, diagnose a down
|
|
@@ -47,7 +47,7 @@ Standard layout: `/srv/<app>/dist/` webroot (exedev-owned) ·
|
|
|
47
47
|
|
|
48
48
|
## Deploy-freshness cadence — a lockstep cut is not a site deploy
|
|
49
49
|
|
|
50
|
-
`
|
|
50
|
+
`package-release` cutting and publishing the lockstep version (the roster in
|
|
51
51
|
`scripts/package-paths.mjs` is the live count) does
|
|
52
52
|
**not** itself update `ui-kit.exe.xyz` — that only happens on a `site-v*` tag
|
|
53
53
|
push (see below). Any lockstep cut that changes a package the site actually
|
|
@@ -88,9 +88,9 @@ delete-adjudication classes.
|
|
|
88
88
|
1. Build from clean, fully-merged `main`. In a fresh worktree,
|
|
89
89
|
`npm run build -w @adia-ai/llm` runs **before** `build:site` — llm compiles
|
|
90
90
|
at publish time and its outputs are gitignored, so without it
|
|
91
|
-
`/packages/llm/index.js` 404s and component registration breaks site-wide
|
|
91
|
+
`/packages/llm/core/index.js` 404s and component registration breaks site-wide
|
|
92
92
|
(found live 2026-06-09).
|
|
93
|
-
2. Dry-run `rsync -azni --delete --exclude='packages/a2ui/corpus/feedback/'`
|
|
93
|
+
2. Dry-run `rsync -azni --delete --exclude='packages/gen-ui/a2ui/corpus/feedback/'`
|
|
94
94
|
and bucket **every** `*deleting` line into a known-safe class; any
|
|
95
95
|
unexplained served-content delete aborts the deploy. The exclude protects
|
|
96
96
|
prod-only runtime-written files (feedback logs wiped 2026-06-10).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"skill": "
|
|
2
|
+
"skill": "site-deployment",
|
|
3
3
|
"note": "Trigger-routing suite (gh#369). expect=trigger: the skill should fire on the prompt in a fresh session. expect=no-trigger: a near-miss owned elsewhere (owner named per case) or generic knowledge with no AdiaUI skill involved. Cases derived from evals/routing-corpus.json's phrases array (gh#355 vetted corpus) plus the SKILL.md description's own trigger/NOT-fence language.",
|
|
4
4
|
"cases": [
|
|
5
5
|
{ "id": "t01", "prompt": "Deploy the latest build to ui-kit.exe.xyz", "expect": "trigger" },
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
{ "id": "t07", "prompt": "Push a site-v* tag to deploy the current build, review the dry-run delete summary first", "expect": "trigger" },
|
|
12
12
|
{ "id": "t08", "prompt": "Did we deploy the site after the last lockstep cut, or is it behind npm?", "expect": "trigger" },
|
|
13
13
|
{ "id": "t09", "prompt": "Roll back the last site deploy, the new build is broken", "expect": "trigger" },
|
|
14
|
-
{ "id": "n01", "prompt": "Cut a release of the next version and publish the npm packages", "expect": "no-trigger", "owner": "
|
|
15
|
-
{ "id": "n02", "prompt": "Verify that this consumer app screen renders correctly before shipping", "expect": "no-trigger", "owner": "
|
|
16
|
-
{ "id": "n03", "prompt": "Add a new prop to button-ui", "expect": "no-trigger", "owner": "
|
|
17
|
-
{ "id": "n04", "prompt": "Run a dogfood sweep on the demo pages", "expect": "no-trigger", "owner": "
|
|
18
|
-
{ "id": "n05", "prompt": "Tune the zettel retrieval coverage, the eval dropped to 38%", "expect": "no-trigger", "owner": "
|
|
19
|
-
{ "id": "n06", "prompt": "Why does accordion-ui crash under SSR in Astro?", "expect": "no-trigger", "owner": "
|
|
20
|
-
{ "id": "n07", "prompt": "Fix the streaming adapter bug in the @adia-ai/llm package", "expect": "no-trigger", "owner": "
|
|
14
|
+
{ "id": "n01", "prompt": "Cut a release of the next version and publish the npm packages", "expect": "no-trigger", "owner": "package-release" },
|
|
15
|
+
{ "id": "n02", "prompt": "Verify that this consumer app screen renders correctly before shipping", "expect": "no-trigger", "owner": "surface-qa" },
|
|
16
|
+
{ "id": "n03", "prompt": "Add a new prop to button-ui", "expect": "no-trigger", "owner": "primitive-authoring" },
|
|
17
|
+
{ "id": "n04", "prompt": "Run a dogfood sweep on the demo pages", "expect": "no-trigger", "owner": "demo-audit" },
|
|
18
|
+
{ "id": "n05", "prompt": "Tune the zettel retrieval coverage, the eval dropped to 38%", "expect": "no-trigger", "owner": "a2ui-maintenance" },
|
|
19
|
+
{ "id": "n06", "prompt": "Why does accordion-ui crash under SSR in Astro?", "expect": "no-trigger", "owner": "ssr-compatibility" },
|
|
20
|
+
{ "id": "n07", "prompt": "Fix the streaming adapter bug in the @adia-ai/llm package", "expect": "no-trigger", "owner": "llm-client-maintenance" }
|
|
21
21
|
]
|
|
22
22
|
}
|