@contractspec/bundle.library 2.9.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +129 -115
- package/CHANGELOG.md +38 -0
- package/dist/components/docs/DocsIndexPage.js +1 -1
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.d.ts +1 -0
- package/dist/components/docs/architecture/ArchitectureControlPlanePage.js +204 -0
- package/dist/components/docs/architecture/ArchitectureOverviewPage.js +17 -1
- package/dist/components/docs/architecture/index.d.ts +1 -0
- package/dist/components/docs/architecture/index.js +507 -289
- package/dist/components/docs/ecosystem/IntegrationsPage.js +6 -3
- package/dist/components/docs/ecosystem/PluginsPage.js +98 -98
- package/dist/components/docs/ecosystem/RegistryPage.js +39 -42
- package/dist/components/docs/ecosystem/TemplatesPage.js +26 -21
- package/dist/components/docs/ecosystem/ecosystem.docblocks.js +10 -10
- package/dist/components/docs/ecosystem/index.js +179 -174
- package/dist/components/docs/index.js +6795 -5376
- package/dist/components/docs/integrations/IntegrationsElevenLabsPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsGithubPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsGithubPage.js +155 -0
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsHealthRoutingPage.js +168 -0
- package/dist/components/docs/integrations/IntegrationsMistralPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsMistralPage.js +203 -0
- package/dist/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsOverviewPage.js +136 -9
- package/dist/components/docs/integrations/IntegrationsSlackPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsSlackPage.js +161 -0
- package/dist/components/docs/integrations/IntegrationsSpecModelPage.js +72 -0
- package/dist/components/docs/integrations/IntegrationsTwilioPage.js +2 -2
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsWhatsappMetaPage.js +157 -0
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.d.ts +1 -0
- package/dist/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +165 -0
- package/dist/components/docs/integrations/index.d.ts +6 -0
- package/dist/components/docs/integrations/index.js +1688 -492
- package/dist/index.js +8016 -6597
- package/dist/node/components/docs/DocsIndexPage.js +1 -1
- package/dist/node/components/docs/architecture/ArchitectureControlPlanePage.js +203 -0
- package/dist/node/components/docs/architecture/ArchitectureOverviewPage.js +17 -1
- package/dist/node/components/docs/architecture/index.js +507 -289
- package/dist/node/components/docs/ecosystem/IntegrationsPage.js +6 -3
- package/dist/node/components/docs/ecosystem/PluginsPage.js +98 -98
- package/dist/node/components/docs/ecosystem/RegistryPage.js +39 -42
- package/dist/node/components/docs/ecosystem/TemplatesPage.js +26 -21
- package/dist/node/components/docs/ecosystem/ecosystem.docblocks.js +10 -10
- package/dist/node/components/docs/ecosystem/index.js +179 -174
- package/dist/node/components/docs/index.js +6795 -5376
- package/dist/node/components/docs/integrations/IntegrationsElevenLabsPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsGithubPage.js +154 -0
- package/dist/node/components/docs/integrations/IntegrationsHealthRoutingPage.js +167 -0
- package/dist/node/components/docs/integrations/IntegrationsMistralPage.js +202 -0
- package/dist/node/components/docs/integrations/IntegrationsOpenAIPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsOverviewPage.js +136 -9
- package/dist/node/components/docs/integrations/IntegrationsSlackPage.js +160 -0
- package/dist/node/components/docs/integrations/IntegrationsSpecModelPage.js +72 -0
- package/dist/node/components/docs/integrations/IntegrationsTwilioPage.js +2 -2
- package/dist/node/components/docs/integrations/IntegrationsWhatsappMetaPage.js +156 -0
- package/dist/node/components/docs/integrations/IntegrationsWhatsappTwilioPage.js +164 -0
- package/dist/node/components/docs/integrations/index.js +1688 -492
- package/dist/node/index.js +8016 -6597
- package/package.json +104 -20
- package/src/components/docs/DocsIndexPage.tsx +2 -1
- package/src/components/docs/architecture/ArchitectureControlPlanePage.tsx +136 -0
- package/src/components/docs/architecture/ArchitectureOverviewPage.tsx +13 -1
- package/src/components/docs/architecture/index.ts +1 -0
- package/src/components/docs/ecosystem/IntegrationsPage.tsx +4 -3
- package/src/components/docs/ecosystem/PluginsPage.tsx +68 -87
- package/src/components/docs/ecosystem/RegistryPage.tsx +35 -43
- package/src/components/docs/ecosystem/TemplatesPage.tsx +28 -21
- package/src/components/docs/ecosystem/ecosystem.docblocks.ts +12 -10
- package/src/components/docs/generated/docs-index._common.json +240 -0
- package/src/components/docs/generated/docs-index.health.json +98 -0
- package/src/components/docs/generated/docs-index.manifest.json +14 -4
- package/src/components/docs/generated/docs-index.platform-integrations.json +81 -1
- package/src/components/docs/generated/docs-index.video-api-showcase.json +26 -0
- package/src/components/docs/integrations/IntegrationsElevenLabsPage.tsx +2 -2
- package/src/components/docs/integrations/IntegrationsGithubPage.tsx +90 -0
- package/src/components/docs/integrations/IntegrationsHealthRoutingPage.tsx +112 -0
- package/src/components/docs/integrations/IntegrationsMistralPage.tsx +133 -0
- package/src/components/docs/integrations/IntegrationsOpenAIPage.tsx +2 -2
- package/src/components/docs/integrations/IntegrationsOverviewPage.tsx +108 -9
- package/src/components/docs/integrations/IntegrationsSlackPage.tsx +98 -0
- package/src/components/docs/integrations/IntegrationsSpecModelPage.tsx +59 -0
- package/src/components/docs/integrations/IntegrationsTwilioPage.tsx +2 -2
- package/src/components/docs/integrations/IntegrationsWhatsappMetaPage.tsx +90 -0
- package/src/components/docs/integrations/IntegrationsWhatsappTwilioPage.tsx +92 -0
- package/src/components/docs/integrations/index.ts +6 -0
|
@@ -59,7 +59,10 @@ bun add -D @contractspec/lib.plugin.example-generator`
|
|
|
59
59
|
children: "Email: Postmark, Gmail"
|
|
60
60
|
}, undefined, false, undefined, this),
|
|
61
61
|
/* @__PURE__ */ jsxDEV("li", {
|
|
62
|
-
children: "
|
|
62
|
+
children: "AI: OpenAI, Mistral"
|
|
63
|
+
}, undefined, false, undefined, this),
|
|
64
|
+
/* @__PURE__ */ jsxDEV("li", {
|
|
65
|
+
children: "Voice: ElevenLabs, Mistral"
|
|
63
66
|
}, undefined, false, undefined, this),
|
|
64
67
|
/* @__PURE__ */ jsxDEV("li", {
|
|
65
68
|
children: "Vector DB: Qdrant"
|
|
@@ -82,7 +85,7 @@ bun add -D @contractspec/lib.plugin.example-generator`
|
|
|
82
85
|
href: "/docs/ecosystem/registry",
|
|
83
86
|
className: "btn-primary",
|
|
84
87
|
children: [
|
|
85
|
-
"
|
|
88
|
+
"Marketplace manifest ",
|
|
86
89
|
/* @__PURE__ */ jsxDEV(ChevronRight, {
|
|
87
90
|
size: 16
|
|
88
91
|
}, undefined, false, undefined, this)
|
|
@@ -91,7 +94,7 @@ bun add -D @contractspec/lib.plugin.example-generator`
|
|
|
91
94
|
/* @__PURE__ */ jsxDEV(Link, {
|
|
92
95
|
href: "/docs/ecosystem/templates",
|
|
93
96
|
className: "btn-ghost",
|
|
94
|
-
children: "
|
|
97
|
+
children: "Authoring templates"
|
|
95
98
|
}, undefined, false, undefined, this)
|
|
96
99
|
]
|
|
97
100
|
}, undefined, true, undefined, this)
|
|
@@ -13,11 +13,11 @@ function EcosystemPluginsPage() {
|
|
|
13
13
|
children: [
|
|
14
14
|
/* @__PURE__ */ jsxDEV("h1", {
|
|
15
15
|
className: "text-4xl font-bold",
|
|
16
|
-
children: "
|
|
16
|
+
children: "Cursor marketplace plugins"
|
|
17
17
|
}, undefined, false, undefined, this),
|
|
18
18
|
/* @__PURE__ */ jsxDEV("p", {
|
|
19
19
|
className: "text-muted-foreground text-lg",
|
|
20
|
-
children: "
|
|
20
|
+
children: "ContractSpec ships a focused Cursor marketplace catalog for the product and key libraries."
|
|
21
21
|
}, undefined, false, undefined, this)
|
|
22
22
|
]
|
|
23
23
|
}, undefined, true, undefined, this),
|
|
@@ -26,26 +26,55 @@ function EcosystemPluginsPage() {
|
|
|
26
26
|
children: [
|
|
27
27
|
/* @__PURE__ */ jsxDEV("h2", {
|
|
28
28
|
className: "text-2xl font-bold",
|
|
29
|
-
children: "
|
|
29
|
+
children: "Catalog at a glance"
|
|
30
30
|
}, undefined, false, undefined, this),
|
|
31
31
|
/* @__PURE__ */ jsxDEV("ul", {
|
|
32
32
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
33
33
|
children: [
|
|
34
34
|
/* @__PURE__ */ jsxDEV("li", {
|
|
35
|
-
children:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ jsxDEV("code", {
|
|
37
|
+
children: "contractspec"
|
|
38
|
+
}, undefined, false, undefined, this),
|
|
39
|
+
" - Product-level workflow and release guardrails."
|
|
40
|
+
]
|
|
41
|
+
}, undefined, true, undefined, this),
|
|
40
42
|
/* @__PURE__ */ jsxDEV("li", {
|
|
41
|
-
children:
|
|
42
|
-
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ jsxDEV("code", {
|
|
45
|
+
children: "contractspec-contracts-spec"
|
|
46
|
+
}, undefined, false, undefined, this),
|
|
47
|
+
" -",
|
|
48
|
+
/* @__PURE__ */ jsxDEV("code", {
|
|
49
|
+
children: "@contractspec/lib.contracts-spec"
|
|
50
|
+
}, undefined, false, undefined, this),
|
|
51
|
+
" governance."
|
|
52
|
+
]
|
|
53
|
+
}, undefined, true, undefined, this),
|
|
43
54
|
/* @__PURE__ */ jsxDEV("li", {
|
|
44
|
-
children:
|
|
45
|
-
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ jsxDEV("code", {
|
|
57
|
+
children: "contractspec-contracts-integrations"
|
|
58
|
+
}, undefined, false, undefined, this),
|
|
59
|
+
" -",
|
|
60
|
+
/* @__PURE__ */ jsxDEV("code", {
|
|
61
|
+
children: "@contractspec/lib.contracts-integrations"
|
|
62
|
+
}, undefined, false, undefined, this),
|
|
63
|
+
" governance."
|
|
64
|
+
]
|
|
65
|
+
}, undefined, true, undefined, this),
|
|
46
66
|
/* @__PURE__ */ jsxDEV("li", {
|
|
47
|
-
children:
|
|
48
|
-
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ jsxDEV("code", {
|
|
69
|
+
children: "contractspec-ai-agent"
|
|
70
|
+
}, undefined, false, undefined, this),
|
|
71
|
+
" -",
|
|
72
|
+
/* @__PURE__ */ jsxDEV("code", {
|
|
73
|
+
children: "@contractspec/lib.ai-agent"
|
|
74
|
+
}, undefined, false, undefined, this),
|
|
75
|
+
" orchestration guardrails."
|
|
76
|
+
]
|
|
77
|
+
}, undefined, true, undefined, this)
|
|
49
78
|
]
|
|
50
79
|
}, undefined, true, undefined, this)
|
|
51
80
|
]
|
|
@@ -58,80 +87,21 @@ function EcosystemPluginsPage() {
|
|
|
58
87
|
children: [
|
|
59
88
|
/* @__PURE__ */ jsxDEV("h2", {
|
|
60
89
|
className: "text-2xl font-bold",
|
|
61
|
-
children: "
|
|
90
|
+
children: "Where plugin sources live"
|
|
62
91
|
}, undefined, false, undefined, this),
|
|
63
92
|
/* @__PURE__ */ jsxDEV("p", {
|
|
64
93
|
className: "text-muted-foreground text-sm",
|
|
65
|
-
children: "
|
|
94
|
+
children: "Marketplace plugin sources are kept in a dedicated package so they can evolve with the monorepo safely."
|
|
66
95
|
}, undefined, false, undefined, this),
|
|
67
96
|
/* @__PURE__ */ jsxDEV(CodeBlock, {
|
|
68
|
-
language: "
|
|
69
|
-
filename: "
|
|
70
|
-
code: `
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
export const MarkdownGeneratorPlugin: ContractSpecPlugin = {
|
|
77
|
-
meta: {
|
|
78
|
-
id: "markdown-generator",
|
|
79
|
-
version: "1.0.0",
|
|
80
|
-
type: "generator",
|
|
81
|
-
provides: ["docs"],
|
|
82
|
-
},
|
|
83
|
-
register(context: PluginContext) {
|
|
84
|
-
const generator: GeneratorCapability = {
|
|
85
|
-
id: "markdown",
|
|
86
|
-
description: "Generate Markdown docs",
|
|
87
|
-
generate: async (specs) => {
|
|
88
|
-
// Implementation...
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
context.generators.register(generator);
|
|
93
|
-
},
|
|
94
|
-
};`
|
|
95
|
-
}, undefined, false, undefined, this)
|
|
96
|
-
]
|
|
97
|
-
}, undefined, true, undefined, this),
|
|
98
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
99
|
-
className: "space-y-3",
|
|
100
|
-
children: [
|
|
101
|
-
/* @__PURE__ */ jsxDEV("h2", {
|
|
102
|
-
className: "text-2xl font-bold",
|
|
103
|
-
children: "Lifecycle hooks"
|
|
104
|
-
}, undefined, false, undefined, this),
|
|
105
|
-
/* @__PURE__ */ jsxDEV("p", {
|
|
106
|
-
className: "text-muted-foreground text-sm",
|
|
107
|
-
children: "Use lifecycle hooks to configure, validate, and dispose resources."
|
|
108
|
-
}, undefined, false, undefined, this),
|
|
109
|
-
/* @__PURE__ */ jsxDEV(CodeBlock, {
|
|
110
|
-
language: "typescript",
|
|
111
|
-
filename: "lifecycle.ts",
|
|
112
|
-
code: `export const MarkdownGeneratorPlugin: ContractSpecPlugin = {
|
|
113
|
-
meta: {
|
|
114
|
-
id: "markdown-generator",
|
|
115
|
-
version: "1.0.0",
|
|
116
|
-
type: "generator",
|
|
117
|
-
provides: ["docs"],
|
|
118
|
-
},
|
|
119
|
-
register(context) {
|
|
120
|
-
// Register capabilities
|
|
121
|
-
},
|
|
122
|
-
configure(options, context) {
|
|
123
|
-
// Optional: apply workspace configuration
|
|
124
|
-
},
|
|
125
|
-
validate(specs, context) {
|
|
126
|
-
// Optional: add validation checks
|
|
127
|
-
},
|
|
128
|
-
generate(specs, context) {
|
|
129
|
-
// Required: emit outputs
|
|
130
|
-
},
|
|
131
|
-
dispose() {
|
|
132
|
-
// Optional: cleanup
|
|
133
|
-
},
|
|
134
|
-
};`
|
|
97
|
+
language: "text",
|
|
98
|
+
filename: "catalog-layout",
|
|
99
|
+
code: `packages/apps-registry/cursor-marketplace/
|
|
100
|
+
plugins/
|
|
101
|
+
contractspec/
|
|
102
|
+
contractspec-contracts-spec/
|
|
103
|
+
contractspec-contracts-integrations/
|
|
104
|
+
contractspec-ai-agent/`
|
|
135
105
|
}, undefined, false, undefined, this)
|
|
136
106
|
]
|
|
137
107
|
}, undefined, true, undefined, this),
|
|
@@ -140,36 +110,66 @@ export const MarkdownGeneratorPlugin: ContractSpecPlugin = {
|
|
|
140
110
|
children: [
|
|
141
111
|
/* @__PURE__ */ jsxDEV("h2", {
|
|
142
112
|
className: "text-2xl font-bold",
|
|
143
|
-
children: "
|
|
113
|
+
children: "Root marketplace manifest"
|
|
144
114
|
}, undefined, false, undefined, this),
|
|
145
115
|
/* @__PURE__ */ jsxDEV("p", {
|
|
146
116
|
className: "text-muted-foreground text-sm",
|
|
147
117
|
children: [
|
|
148
|
-
"
|
|
118
|
+
"Cursor submission reads ",
|
|
149
119
|
/* @__PURE__ */ jsxDEV("code", {
|
|
150
|
-
children: ".
|
|
120
|
+
children: ".cursor-plugin/marketplace.json"
|
|
151
121
|
}, undefined, false, undefined, this),
|
|
152
|
-
"
|
|
122
|
+
" ",
|
|
123
|
+
"at repository root and resolves each plugin source path."
|
|
153
124
|
]
|
|
154
125
|
}, undefined, true, undefined, this),
|
|
155
126
|
/* @__PURE__ */ jsxDEV(CodeBlock, {
|
|
156
127
|
language: "json",
|
|
157
|
-
filename: ".
|
|
128
|
+
filename: ".cursor-plugin/marketplace.json",
|
|
158
129
|
code: `{
|
|
130
|
+
"name": "contractspec-marketplace",
|
|
159
131
|
"plugins": [
|
|
160
132
|
{
|
|
161
|
-
"
|
|
162
|
-
"
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
133
|
+
"name": "contractspec",
|
|
134
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"name": "contractspec-contracts-spec",
|
|
138
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec-contracts-spec"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "contractspec-contracts-integrations",
|
|
142
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec-contracts-integrations"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"name": "contractspec-ai-agent",
|
|
146
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec-ai-agent"
|
|
168
147
|
}
|
|
169
148
|
]
|
|
170
149
|
}`
|
|
171
150
|
}, undefined, false, undefined, this)
|
|
172
151
|
]
|
|
152
|
+
}, undefined, true, undefined, this),
|
|
153
|
+
/* @__PURE__ */ jsxDEV("div", {
|
|
154
|
+
className: "space-y-3",
|
|
155
|
+
children: [
|
|
156
|
+
/* @__PURE__ */ jsxDEV("h2", {
|
|
157
|
+
className: "text-2xl font-bold",
|
|
158
|
+
children: "Validation gate"
|
|
159
|
+
}, undefined, false, undefined, this),
|
|
160
|
+
/* @__PURE__ */ jsxDEV("p", {
|
|
161
|
+
className: "text-muted-foreground text-sm",
|
|
162
|
+
children: "Validate all marketplace plugins before publishing."
|
|
163
|
+
}, undefined, false, undefined, this),
|
|
164
|
+
/* @__PURE__ */ jsxDEV(CodeBlock, {
|
|
165
|
+
language: "bash",
|
|
166
|
+
filename: "validate-marketplace",
|
|
167
|
+
code: `bun run plugin:contractspec:validate
|
|
168
|
+
|
|
169
|
+
# Optional when offline
|
|
170
|
+
SKIP_PLUGIN_NETWORK_CHECK=1 bun run plugin:contractspec:validate`
|
|
171
|
+
}, undefined, false, undefined, this)
|
|
172
|
+
]
|
|
173
173
|
}, undefined, true, undefined, this)
|
|
174
174
|
]
|
|
175
175
|
}, undefined, true, undefined, this),
|
|
@@ -180,16 +180,16 @@ export const MarkdownGeneratorPlugin: ContractSpecPlugin = {
|
|
|
180
180
|
href: "/docs/ecosystem/templates",
|
|
181
181
|
className: "btn-primary",
|
|
182
182
|
children: [
|
|
183
|
-
"
|
|
183
|
+
"Author a plugin ",
|
|
184
184
|
/* @__PURE__ */ jsxDEV(ChevronRight, {
|
|
185
185
|
size: 16
|
|
186
186
|
}, undefined, false, undefined, this)
|
|
187
187
|
]
|
|
188
188
|
}, undefined, true, undefined, this),
|
|
189
189
|
/* @__PURE__ */ jsxDEV(Link, {
|
|
190
|
-
href: "/docs/ecosystem/
|
|
190
|
+
href: "/docs/ecosystem/registry",
|
|
191
191
|
className: "btn-ghost",
|
|
192
|
-
children: "
|
|
192
|
+
children: "Manifest details"
|
|
193
193
|
}, undefined, false, undefined, this)
|
|
194
194
|
]
|
|
195
195
|
}, undefined, true, undefined, this)
|
|
@@ -13,11 +13,11 @@ function EcosystemRegistryPage() {
|
|
|
13
13
|
children: [
|
|
14
14
|
/* @__PURE__ */ jsxDEV("h1", {
|
|
15
15
|
className: "text-4xl font-bold",
|
|
16
|
-
children: "
|
|
16
|
+
children: "Marketplace manifest"
|
|
17
17
|
}, undefined, false, undefined, this),
|
|
18
18
|
/* @__PURE__ */ jsxDEV("p", {
|
|
19
19
|
className: "text-muted-foreground text-lg",
|
|
20
|
-
children: "
|
|
20
|
+
children: "ContractSpec publishes a multi-plugin Cursor marketplace catalog from a single root manifest."
|
|
21
21
|
}, undefined, false, undefined, this)
|
|
22
22
|
]
|
|
23
23
|
}, undefined, true, undefined, this),
|
|
@@ -26,34 +26,33 @@ function EcosystemRegistryPage() {
|
|
|
26
26
|
children: [
|
|
27
27
|
/* @__PURE__ */ jsxDEV("h2", {
|
|
28
28
|
className: "text-2xl font-bold",
|
|
29
|
-
children: "
|
|
29
|
+
children: "Root manifest shape"
|
|
30
30
|
}, undefined, false, undefined, this),
|
|
31
31
|
/* @__PURE__ */ jsxDEV("p", {
|
|
32
32
|
className: "text-muted-foreground text-sm",
|
|
33
|
-
children:
|
|
34
|
-
|
|
33
|
+
children: [
|
|
34
|
+
"Cursor reads ",
|
|
35
|
+
/* @__PURE__ */ jsxDEV("code", {
|
|
36
|
+
children: ".cursor-plugin/marketplace.json"
|
|
37
|
+
}, undefined, false, undefined, this),
|
|
38
|
+
" at repository root and resolves each plugin source path."
|
|
39
|
+
]
|
|
40
|
+
}, undefined, true, undefined, this),
|
|
35
41
|
/* @__PURE__ */ jsxDEV(CodeBlock, {
|
|
36
42
|
language: "json",
|
|
37
|
-
filename: ".
|
|
43
|
+
filename: ".cursor-plugin/marketplace.json",
|
|
38
44
|
code: `{
|
|
45
|
+
"name": "contractspec-marketplace",
|
|
39
46
|
"plugins": [
|
|
40
47
|
{
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
"pluginRegistry": {
|
|
51
|
-
"resolutionOrder": ["workspace", "npm", "remote"],
|
|
52
|
-
"allowPrerelease": false,
|
|
53
|
-
"sources": {
|
|
54
|
-
"remote": "https://registry.contractspec.io"
|
|
48
|
+
"name": "contractspec",
|
|
49
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "contractspec-contracts-spec",
|
|
53
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec-contracts-spec"
|
|
55
54
|
}
|
|
56
|
-
|
|
55
|
+
]
|
|
57
56
|
}`
|
|
58
57
|
}, undefined, false, undefined, this)
|
|
59
58
|
]
|
|
@@ -63,32 +62,30 @@ function EcosystemRegistryPage() {
|
|
|
63
62
|
children: [
|
|
64
63
|
/* @__PURE__ */ jsxDEV("h2", {
|
|
65
64
|
className: "text-2xl font-bold",
|
|
66
|
-
children: "
|
|
65
|
+
children: "Per-plugin contract"
|
|
67
66
|
}, undefined, false, undefined, this),
|
|
68
67
|
/* @__PURE__ */ jsxDEV("p", {
|
|
69
68
|
className: "text-muted-foreground text-sm",
|
|
70
|
-
children: "
|
|
69
|
+
children: "Each plugin source must include a Cursor plugin manifest and composable assets."
|
|
70
|
+
}, undefined, false, undefined, this),
|
|
71
|
+
/* @__PURE__ */ jsxDEV(CodeBlock, {
|
|
72
|
+
language: "text",
|
|
73
|
+
filename: "plugin-layout",
|
|
74
|
+
code: `plugins/<plugin-name>/
|
|
75
|
+
.cursor-plugin/plugin.json
|
|
76
|
+
rules/
|
|
77
|
+
commands/
|
|
78
|
+
agents/
|
|
79
|
+
skills/
|
|
80
|
+
.mcp.json`
|
|
71
81
|
}, undefined, false, undefined, this),
|
|
72
82
|
/* @__PURE__ */ jsxDEV(CodeBlock, {
|
|
73
|
-
language: "
|
|
74
|
-
filename: "
|
|
75
|
-
code: `
|
|
83
|
+
language: "bash",
|
|
84
|
+
filename: "validate-catalog",
|
|
85
|
+
code: `bun run plugin:contractspec:validate
|
|
76
86
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
id: "private-registry",
|
|
80
|
-
version: "1.0.0",
|
|
81
|
-
type: "registryResolver",
|
|
82
|
-
provides: ["private-registry"],
|
|
83
|
-
},
|
|
84
|
-
resolve: async (request) => {
|
|
85
|
-
// Fetch plugin package metadata from private registry
|
|
86
|
-
const result = await fetch(
|
|
87
|
-
"https://registry.acme.io/" + request.package
|
|
88
|
-
);
|
|
89
|
-
return result.json();
|
|
90
|
-
},
|
|
91
|
-
};`
|
|
87
|
+
# Optional in offline environments
|
|
88
|
+
SKIP_PLUGIN_NETWORK_CHECK=1 bun run plugin:contractspec:validate`
|
|
92
89
|
}, undefined, false, undefined, this)
|
|
93
90
|
]
|
|
94
91
|
}, undefined, true, undefined, this),
|
|
@@ -108,7 +105,7 @@ export const PrivateRegistryResolver: RegistryResolverPlugin = {
|
|
|
108
105
|
/* @__PURE__ */ jsxDEV(Link, {
|
|
109
106
|
href: "/docs/ecosystem/templates",
|
|
110
107
|
className: "btn-ghost",
|
|
111
|
-
children: "Plugin templates"
|
|
108
|
+
children: "Plugin authoring templates"
|
|
112
109
|
}, undefined, false, undefined, this)
|
|
113
110
|
]
|
|
114
111
|
}, undefined, true, undefined, this)
|
|
@@ -42,11 +42,11 @@ function EcosystemTemplatesPage() {
|
|
|
42
42
|
children: [
|
|
43
43
|
/* @__PURE__ */ jsxDEV2("h1", {
|
|
44
44
|
className: "text-4xl font-bold",
|
|
45
|
-
children: "Plugin templates"
|
|
45
|
+
children: "Plugin authoring templates"
|
|
46
46
|
}, undefined, false, undefined, this),
|
|
47
47
|
/* @__PURE__ */ jsxDEV2("p", {
|
|
48
48
|
className: "text-muted-foreground text-lg",
|
|
49
|
-
children: "Scaffold
|
|
49
|
+
children: "Scaffold focused Cursor plugins for ContractSpec product and core libraries."
|
|
50
50
|
}, undefined, false, undefined, this)
|
|
51
51
|
]
|
|
52
52
|
}, undefined, true, undefined, this),
|
|
@@ -55,19 +55,24 @@ function EcosystemTemplatesPage() {
|
|
|
55
55
|
children: [
|
|
56
56
|
/* @__PURE__ */ jsxDEV2("h2", {
|
|
57
57
|
className: "text-2xl font-bold",
|
|
58
|
-
children: "Create a
|
|
58
|
+
children: "Create a focused plugin"
|
|
59
59
|
}, undefined, false, undefined, this),
|
|
60
60
|
/* @__PURE__ */ jsxDEV2("p", {
|
|
61
61
|
className: "text-muted-foreground text-sm",
|
|
62
|
-
children: "
|
|
62
|
+
children: "Start from a scoped domain and keep each plugin aligned to one product or library surface."
|
|
63
63
|
}, undefined, false, undefined, this),
|
|
64
64
|
/* @__PURE__ */ jsxDEV2(CodeBlock, {
|
|
65
65
|
language: "bash",
|
|
66
|
-
filename: "
|
|
67
|
-
code: `
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
filename: "catalog-authoring-layout",
|
|
67
|
+
code: `packages/apps-registry/cursor-marketplace/
|
|
68
|
+
plugins/
|
|
69
|
+
<plugin-name>/
|
|
70
|
+
.cursor-plugin/plugin.json
|
|
71
|
+
rules/
|
|
72
|
+
commands/
|
|
73
|
+
agents/
|
|
74
|
+
skills/
|
|
75
|
+
.mcp.json`
|
|
71
76
|
}, undefined, false, undefined, this)
|
|
72
77
|
]
|
|
73
78
|
}, undefined, true, undefined, this),
|
|
@@ -82,16 +87,16 @@ function EcosystemTemplatesPage() {
|
|
|
82
87
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
83
88
|
children: [
|
|
84
89
|
/* @__PURE__ */ jsxDEV2("li", {
|
|
85
|
-
children: "
|
|
90
|
+
children: ".cursor-plugin/plugin.json with plugin metadata and paths"
|
|
86
91
|
}, undefined, false, undefined, this),
|
|
87
92
|
/* @__PURE__ */ jsxDEV2("li", {
|
|
88
|
-
children: "
|
|
93
|
+
children: "rules/, commands/, agents/, and skills/ content directories"
|
|
89
94
|
}, undefined, false, undefined, this),
|
|
90
95
|
/* @__PURE__ */ jsxDEV2("li", {
|
|
91
|
-
children: ".
|
|
96
|
+
children: ".mcp.json with all MCP server declarations used by the plugin"
|
|
92
97
|
}, undefined, false, undefined, this),
|
|
93
98
|
/* @__PURE__ */ jsxDEV2("li", {
|
|
94
|
-
children: "README.md
|
|
99
|
+
children: "README.md describing scope and governance boundaries"
|
|
95
100
|
}, undefined, false, undefined, this)
|
|
96
101
|
]
|
|
97
102
|
}, undefined, true, undefined, this)
|
|
@@ -102,16 +107,16 @@ function EcosystemTemplatesPage() {
|
|
|
102
107
|
children: [
|
|
103
108
|
/* @__PURE__ */ jsxDEV2("h2", {
|
|
104
109
|
className: "text-2xl font-bold",
|
|
105
|
-
children: "
|
|
110
|
+
children: "Validate before submission"
|
|
106
111
|
}, undefined, false, undefined, this),
|
|
107
112
|
/* @__PURE__ */ jsxDEV2(CodeBlock, {
|
|
108
113
|
language: "bash",
|
|
109
|
-
filename: "
|
|
110
|
-
code:
|
|
111
|
-
bun
|
|
114
|
+
filename: "validate-marketplace-catalog",
|
|
115
|
+
code: `# Validate all plugins referenced by root marketplace manifest
|
|
116
|
+
bun run plugin:contractspec:validate
|
|
112
117
|
|
|
113
|
-
#
|
|
114
|
-
bun
|
|
118
|
+
# Optional in offline environments
|
|
119
|
+
SKIP_PLUGIN_NETWORK_CHECK=1 bun run plugin:contractspec:validate`
|
|
115
120
|
}, undefined, false, undefined, this)
|
|
116
121
|
]
|
|
117
122
|
}, undefined, true, undefined, this),
|
|
@@ -126,7 +131,7 @@ bun add @contractspec/integration.markdown-generator`
|
|
|
126
131
|
href: "/docs/ecosystem/plugins",
|
|
127
132
|
className: "btn-primary",
|
|
128
133
|
children: [
|
|
129
|
-
"
|
|
134
|
+
"Marketplace plugins ",
|
|
130
135
|
/* @__PURE__ */ jsxDEV2(ChevronRight, {
|
|
131
136
|
size: 16
|
|
132
137
|
}, undefined, false, undefined, this)
|
|
@@ -135,7 +140,7 @@ bun add @contractspec/integration.markdown-generator`
|
|
|
135
140
|
/* @__PURE__ */ jsxDEV2(Link2, {
|
|
136
141
|
href: "/docs/ecosystem/registry",
|
|
137
142
|
className: "btn-ghost",
|
|
138
|
-
children: "
|
|
143
|
+
children: "Marketplace manifest"
|
|
139
144
|
}, undefined, false, undefined, this)
|
|
140
145
|
]
|
|
141
146
|
}, undefined, true, undefined, this)
|
|
@@ -4,15 +4,15 @@ import { registerDocBlocks } from "@contractspec/lib.contracts-spec/docs";
|
|
|
4
4
|
var ecosystemDocBlocks = [
|
|
5
5
|
{
|
|
6
6
|
id: "docs.ecosystem.plugins",
|
|
7
|
-
title: "
|
|
8
|
-
summary: "
|
|
7
|
+
title: "Marketplace plugins",
|
|
8
|
+
summary: "Focused Cursor marketplace plugins for product and core libraries.",
|
|
9
9
|
kind: "usage",
|
|
10
10
|
visibility: "public",
|
|
11
11
|
route: "/docs/ecosystem/plugins",
|
|
12
12
|
tags: ["ecosystem", "plugins", "extensions"],
|
|
13
|
-
body: `#
|
|
13
|
+
body: `# Marketplace plugins
|
|
14
14
|
|
|
15
|
-
ContractSpec
|
|
15
|
+
ContractSpec ships a focused Cursor marketplace catalog with plugins for the product and key libraries. Plugin sources live in \`packages/apps-registry/cursor-marketplace/plugins/*\`, while the root manifest at \`.cursor-plugin/marketplace.json\` drives submission.`
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
id: "docs.ecosystem.integrations",
|
|
@@ -28,23 +28,23 @@ Reference integrations demonstrate how to extend ContractSpec with real-world pl
|
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
id: "docs.ecosystem.templates",
|
|
31
|
-
title: "Plugin templates",
|
|
32
|
-
summary: "
|
|
31
|
+
title: "Plugin authoring templates",
|
|
32
|
+
summary: "Author focused plugins with a consistent marketplace-ready layout.",
|
|
33
33
|
kind: "usage",
|
|
34
34
|
visibility: "public",
|
|
35
35
|
route: "/docs/ecosystem/templates",
|
|
36
36
|
tags: ["ecosystem", "templates"],
|
|
37
|
-
body: "# Plugin templates\n\
|
|
37
|
+
body: "# Plugin authoring templates\n\nCreate each plugin under `packages/apps-registry/cursor-marketplace/plugins/<plugin-name>/` and include `.cursor-plugin/plugin.json`, `rules/`, `commands/`, `agents/`, `skills/`, and `.mcp.json`."
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
id: "docs.ecosystem.registry",
|
|
41
|
-
title: "
|
|
42
|
-
summary: "
|
|
41
|
+
title: "Marketplace manifest",
|
|
42
|
+
summary: "Manage and validate root marketplace entries for all plugins.",
|
|
43
43
|
kind: "usage",
|
|
44
44
|
visibility: "public",
|
|
45
45
|
route: "/docs/ecosystem/registry",
|
|
46
46
|
tags: ["ecosystem", "registry"],
|
|
47
|
-
body: "#
|
|
47
|
+
body: "# Marketplace manifest\n\nKeep all plugin entries in `.cursor-plugin/marketplace.json` and validate them with `bun run plugin:contractspec:validate` before submission."
|
|
48
48
|
}
|
|
49
49
|
];
|
|
50
50
|
registerDocBlocks(ecosystemDocBlocks);
|