@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)
|
|
@@ -113,11 +116,11 @@ function EcosystemPluginsPage() {
|
|
|
113
116
|
children: [
|
|
114
117
|
/* @__PURE__ */ jsxDEV2("h1", {
|
|
115
118
|
className: "text-4xl font-bold",
|
|
116
|
-
children: "
|
|
119
|
+
children: "Cursor marketplace plugins"
|
|
117
120
|
}, undefined, false, undefined, this),
|
|
118
121
|
/* @__PURE__ */ jsxDEV2("p", {
|
|
119
122
|
className: "text-muted-foreground text-lg",
|
|
120
|
-
children: "
|
|
123
|
+
children: "ContractSpec ships a focused Cursor marketplace catalog for the product and key libraries."
|
|
121
124
|
}, undefined, false, undefined, this)
|
|
122
125
|
]
|
|
123
126
|
}, undefined, true, undefined, this),
|
|
@@ -126,26 +129,55 @@ function EcosystemPluginsPage() {
|
|
|
126
129
|
children: [
|
|
127
130
|
/* @__PURE__ */ jsxDEV2("h2", {
|
|
128
131
|
className: "text-2xl font-bold",
|
|
129
|
-
children: "
|
|
132
|
+
children: "Catalog at a glance"
|
|
130
133
|
}, undefined, false, undefined, this),
|
|
131
134
|
/* @__PURE__ */ jsxDEV2("ul", {
|
|
132
135
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
133
136
|
children: [
|
|
134
137
|
/* @__PURE__ */ jsxDEV2("li", {
|
|
135
|
-
children:
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
children: [
|
|
139
|
+
/* @__PURE__ */ jsxDEV2("code", {
|
|
140
|
+
children: "contractspec"
|
|
141
|
+
}, undefined, false, undefined, this),
|
|
142
|
+
" - Product-level workflow and release guardrails."
|
|
143
|
+
]
|
|
144
|
+
}, undefined, true, undefined, this),
|
|
140
145
|
/* @__PURE__ */ jsxDEV2("li", {
|
|
141
|
-
children:
|
|
142
|
-
|
|
146
|
+
children: [
|
|
147
|
+
/* @__PURE__ */ jsxDEV2("code", {
|
|
148
|
+
children: "contractspec-contracts-spec"
|
|
149
|
+
}, undefined, false, undefined, this),
|
|
150
|
+
" -",
|
|
151
|
+
/* @__PURE__ */ jsxDEV2("code", {
|
|
152
|
+
children: "@contractspec/lib.contracts-spec"
|
|
153
|
+
}, undefined, false, undefined, this),
|
|
154
|
+
" governance."
|
|
155
|
+
]
|
|
156
|
+
}, undefined, true, undefined, this),
|
|
143
157
|
/* @__PURE__ */ jsxDEV2("li", {
|
|
144
|
-
children:
|
|
145
|
-
|
|
158
|
+
children: [
|
|
159
|
+
/* @__PURE__ */ jsxDEV2("code", {
|
|
160
|
+
children: "contractspec-contracts-integrations"
|
|
161
|
+
}, undefined, false, undefined, this),
|
|
162
|
+
" -",
|
|
163
|
+
/* @__PURE__ */ jsxDEV2("code", {
|
|
164
|
+
children: "@contractspec/lib.contracts-integrations"
|
|
165
|
+
}, undefined, false, undefined, this),
|
|
166
|
+
" governance."
|
|
167
|
+
]
|
|
168
|
+
}, undefined, true, undefined, this),
|
|
146
169
|
/* @__PURE__ */ jsxDEV2("li", {
|
|
147
|
-
children:
|
|
148
|
-
|
|
170
|
+
children: [
|
|
171
|
+
/* @__PURE__ */ jsxDEV2("code", {
|
|
172
|
+
children: "contractspec-ai-agent"
|
|
173
|
+
}, undefined, false, undefined, this),
|
|
174
|
+
" -",
|
|
175
|
+
/* @__PURE__ */ jsxDEV2("code", {
|
|
176
|
+
children: "@contractspec/lib.ai-agent"
|
|
177
|
+
}, undefined, false, undefined, this),
|
|
178
|
+
" orchestration guardrails."
|
|
179
|
+
]
|
|
180
|
+
}, undefined, true, undefined, this)
|
|
149
181
|
]
|
|
150
182
|
}, undefined, true, undefined, this)
|
|
151
183
|
]
|
|
@@ -158,80 +190,21 @@ function EcosystemPluginsPage() {
|
|
|
158
190
|
children: [
|
|
159
191
|
/* @__PURE__ */ jsxDEV2("h2", {
|
|
160
192
|
className: "text-2xl font-bold",
|
|
161
|
-
children: "
|
|
162
|
-
}, undefined, false, undefined, this),
|
|
163
|
-
/* @__PURE__ */ jsxDEV2("p", {
|
|
164
|
-
className: "text-muted-foreground text-sm",
|
|
165
|
-
children: "Define capabilities and lifecycle hooks in a single plugin entrypoint."
|
|
166
|
-
}, undefined, false, undefined, this),
|
|
167
|
-
/* @__PURE__ */ jsxDEV2(CodeBlock2, {
|
|
168
|
-
language: "typescript",
|
|
169
|
-
filename: "plugin.ts",
|
|
170
|
-
code: `import type {
|
|
171
|
-
ContractSpecPlugin,
|
|
172
|
-
PluginContext,
|
|
173
|
-
GeneratorCapability,
|
|
174
|
-
} from "@contractspec/lib.plugins";
|
|
175
|
-
|
|
176
|
-
export const MarkdownGeneratorPlugin: ContractSpecPlugin = {
|
|
177
|
-
meta: {
|
|
178
|
-
id: "markdown-generator",
|
|
179
|
-
version: "1.0.0",
|
|
180
|
-
type: "generator",
|
|
181
|
-
provides: ["docs"],
|
|
182
|
-
},
|
|
183
|
-
register(context: PluginContext) {
|
|
184
|
-
const generator: GeneratorCapability = {
|
|
185
|
-
id: "markdown",
|
|
186
|
-
description: "Generate Markdown docs",
|
|
187
|
-
generate: async (specs) => {
|
|
188
|
-
// Implementation...
|
|
189
|
-
},
|
|
190
|
-
};
|
|
191
|
-
|
|
192
|
-
context.generators.register(generator);
|
|
193
|
-
},
|
|
194
|
-
};`
|
|
195
|
-
}, undefined, false, undefined, this)
|
|
196
|
-
]
|
|
197
|
-
}, undefined, true, undefined, this),
|
|
198
|
-
/* @__PURE__ */ jsxDEV2("div", {
|
|
199
|
-
className: "space-y-3",
|
|
200
|
-
children: [
|
|
201
|
-
/* @__PURE__ */ jsxDEV2("h2", {
|
|
202
|
-
className: "text-2xl font-bold",
|
|
203
|
-
children: "Lifecycle hooks"
|
|
193
|
+
children: "Where plugin sources live"
|
|
204
194
|
}, undefined, false, undefined, this),
|
|
205
195
|
/* @__PURE__ */ jsxDEV2("p", {
|
|
206
196
|
className: "text-muted-foreground text-sm",
|
|
207
|
-
children: "
|
|
197
|
+
children: "Marketplace plugin sources are kept in a dedicated package so they can evolve with the monorepo safely."
|
|
208
198
|
}, undefined, false, undefined, this),
|
|
209
199
|
/* @__PURE__ */ jsxDEV2(CodeBlock2, {
|
|
210
|
-
language: "
|
|
211
|
-
filename: "
|
|
212
|
-
code: `
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
},
|
|
219
|
-
register(context) {
|
|
220
|
-
// Register capabilities
|
|
221
|
-
},
|
|
222
|
-
configure(options, context) {
|
|
223
|
-
// Optional: apply workspace configuration
|
|
224
|
-
},
|
|
225
|
-
validate(specs, context) {
|
|
226
|
-
// Optional: add validation checks
|
|
227
|
-
},
|
|
228
|
-
generate(specs, context) {
|
|
229
|
-
// Required: emit outputs
|
|
230
|
-
},
|
|
231
|
-
dispose() {
|
|
232
|
-
// Optional: cleanup
|
|
233
|
-
},
|
|
234
|
-
};`
|
|
200
|
+
language: "text",
|
|
201
|
+
filename: "catalog-layout",
|
|
202
|
+
code: `packages/apps-registry/cursor-marketplace/
|
|
203
|
+
plugins/
|
|
204
|
+
contractspec/
|
|
205
|
+
contractspec-contracts-spec/
|
|
206
|
+
contractspec-contracts-integrations/
|
|
207
|
+
contractspec-ai-agent/`
|
|
235
208
|
}, undefined, false, undefined, this)
|
|
236
209
|
]
|
|
237
210
|
}, undefined, true, undefined, this),
|
|
@@ -240,36 +213,66 @@ export const MarkdownGeneratorPlugin: ContractSpecPlugin = {
|
|
|
240
213
|
children: [
|
|
241
214
|
/* @__PURE__ */ jsxDEV2("h2", {
|
|
242
215
|
className: "text-2xl font-bold",
|
|
243
|
-
children: "
|
|
216
|
+
children: "Root marketplace manifest"
|
|
244
217
|
}, undefined, false, undefined, this),
|
|
245
218
|
/* @__PURE__ */ jsxDEV2("p", {
|
|
246
219
|
className: "text-muted-foreground text-sm",
|
|
247
220
|
children: [
|
|
248
|
-
"
|
|
221
|
+
"Cursor submission reads ",
|
|
249
222
|
/* @__PURE__ */ jsxDEV2("code", {
|
|
250
|
-
children: ".
|
|
223
|
+
children: ".cursor-plugin/marketplace.json"
|
|
251
224
|
}, undefined, false, undefined, this),
|
|
252
|
-
"
|
|
225
|
+
" ",
|
|
226
|
+
"at repository root and resolves each plugin source path."
|
|
253
227
|
]
|
|
254
228
|
}, undefined, true, undefined, this),
|
|
255
229
|
/* @__PURE__ */ jsxDEV2(CodeBlock2, {
|
|
256
230
|
language: "json",
|
|
257
|
-
filename: ".
|
|
231
|
+
filename: ".cursor-plugin/marketplace.json",
|
|
258
232
|
code: `{
|
|
233
|
+
"name": "contractspec-marketplace",
|
|
259
234
|
"plugins": [
|
|
260
235
|
{
|
|
261
|
-
"
|
|
262
|
-
"
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
236
|
+
"name": "contractspec",
|
|
237
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec"
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"name": "contractspec-contracts-spec",
|
|
241
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec-contracts-spec"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"name": "contractspec-contracts-integrations",
|
|
245
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec-contracts-integrations"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"name": "contractspec-ai-agent",
|
|
249
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec-ai-agent"
|
|
268
250
|
}
|
|
269
251
|
]
|
|
270
252
|
}`
|
|
271
253
|
}, undefined, false, undefined, this)
|
|
272
254
|
]
|
|
255
|
+
}, undefined, true, undefined, this),
|
|
256
|
+
/* @__PURE__ */ jsxDEV2("div", {
|
|
257
|
+
className: "space-y-3",
|
|
258
|
+
children: [
|
|
259
|
+
/* @__PURE__ */ jsxDEV2("h2", {
|
|
260
|
+
className: "text-2xl font-bold",
|
|
261
|
+
children: "Validation gate"
|
|
262
|
+
}, undefined, false, undefined, this),
|
|
263
|
+
/* @__PURE__ */ jsxDEV2("p", {
|
|
264
|
+
className: "text-muted-foreground text-sm",
|
|
265
|
+
children: "Validate all marketplace plugins before publishing."
|
|
266
|
+
}, undefined, false, undefined, this),
|
|
267
|
+
/* @__PURE__ */ jsxDEV2(CodeBlock2, {
|
|
268
|
+
language: "bash",
|
|
269
|
+
filename: "validate-marketplace",
|
|
270
|
+
code: `bun run plugin:contractspec:validate
|
|
271
|
+
|
|
272
|
+
# Optional when offline
|
|
273
|
+
SKIP_PLUGIN_NETWORK_CHECK=1 bun run plugin:contractspec:validate`
|
|
274
|
+
}, undefined, false, undefined, this)
|
|
275
|
+
]
|
|
273
276
|
}, undefined, true, undefined, this)
|
|
274
277
|
]
|
|
275
278
|
}, undefined, true, undefined, this),
|
|
@@ -280,16 +283,16 @@ export const MarkdownGeneratorPlugin: ContractSpecPlugin = {
|
|
|
280
283
|
href: "/docs/ecosystem/templates",
|
|
281
284
|
className: "btn-primary",
|
|
282
285
|
children: [
|
|
283
|
-
"
|
|
286
|
+
"Author a plugin ",
|
|
284
287
|
/* @__PURE__ */ jsxDEV2(ChevronRight2, {
|
|
285
288
|
size: 16
|
|
286
289
|
}, undefined, false, undefined, this)
|
|
287
290
|
]
|
|
288
291
|
}, undefined, true, undefined, this),
|
|
289
292
|
/* @__PURE__ */ jsxDEV2(Link2, {
|
|
290
|
-
href: "/docs/ecosystem/
|
|
293
|
+
href: "/docs/ecosystem/registry",
|
|
291
294
|
className: "btn-ghost",
|
|
292
|
-
children: "
|
|
295
|
+
children: "Manifest details"
|
|
293
296
|
}, undefined, false, undefined, this)
|
|
294
297
|
]
|
|
295
298
|
}, undefined, true, undefined, this)
|
|
@@ -311,11 +314,11 @@ function EcosystemRegistryPage() {
|
|
|
311
314
|
children: [
|
|
312
315
|
/* @__PURE__ */ jsxDEV3("h1", {
|
|
313
316
|
className: "text-4xl font-bold",
|
|
314
|
-
children: "
|
|
317
|
+
children: "Marketplace manifest"
|
|
315
318
|
}, undefined, false, undefined, this),
|
|
316
319
|
/* @__PURE__ */ jsxDEV3("p", {
|
|
317
320
|
className: "text-muted-foreground text-lg",
|
|
318
|
-
children: "
|
|
321
|
+
children: "ContractSpec publishes a multi-plugin Cursor marketplace catalog from a single root manifest."
|
|
319
322
|
}, undefined, false, undefined, this)
|
|
320
323
|
]
|
|
321
324
|
}, undefined, true, undefined, this),
|
|
@@ -324,34 +327,33 @@ function EcosystemRegistryPage() {
|
|
|
324
327
|
children: [
|
|
325
328
|
/* @__PURE__ */ jsxDEV3("h2", {
|
|
326
329
|
className: "text-2xl font-bold",
|
|
327
|
-
children: "
|
|
330
|
+
children: "Root manifest shape"
|
|
328
331
|
}, undefined, false, undefined, this),
|
|
329
332
|
/* @__PURE__ */ jsxDEV3("p", {
|
|
330
333
|
className: "text-muted-foreground text-sm",
|
|
331
|
-
children:
|
|
332
|
-
|
|
334
|
+
children: [
|
|
335
|
+
"Cursor reads ",
|
|
336
|
+
/* @__PURE__ */ jsxDEV3("code", {
|
|
337
|
+
children: ".cursor-plugin/marketplace.json"
|
|
338
|
+
}, undefined, false, undefined, this),
|
|
339
|
+
" at repository root and resolves each plugin source path."
|
|
340
|
+
]
|
|
341
|
+
}, undefined, true, undefined, this),
|
|
333
342
|
/* @__PURE__ */ jsxDEV3(CodeBlock3, {
|
|
334
343
|
language: "json",
|
|
335
|
-
filename: ".
|
|
344
|
+
filename: ".cursor-plugin/marketplace.json",
|
|
336
345
|
code: `{
|
|
346
|
+
"name": "contractspec-marketplace",
|
|
337
347
|
"plugins": [
|
|
338
348
|
{
|
|
339
|
-
"
|
|
340
|
-
"
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
],
|
|
348
|
-
"pluginRegistry": {
|
|
349
|
-
"resolutionOrder": ["workspace", "npm", "remote"],
|
|
350
|
-
"allowPrerelease": false,
|
|
351
|
-
"sources": {
|
|
352
|
-
"remote": "https://registry.contractspec.io"
|
|
349
|
+
"name": "contractspec",
|
|
350
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec"
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
"name": "contractspec-contracts-spec",
|
|
354
|
+
"source": "packages/apps-registry/cursor-marketplace/plugins/contractspec-contracts-spec"
|
|
353
355
|
}
|
|
354
|
-
|
|
356
|
+
]
|
|
355
357
|
}`
|
|
356
358
|
}, undefined, false, undefined, this)
|
|
357
359
|
]
|
|
@@ -361,32 +363,30 @@ function EcosystemRegistryPage() {
|
|
|
361
363
|
children: [
|
|
362
364
|
/* @__PURE__ */ jsxDEV3("h2", {
|
|
363
365
|
className: "text-2xl font-bold",
|
|
364
|
-
children: "
|
|
366
|
+
children: "Per-plugin contract"
|
|
365
367
|
}, undefined, false, undefined, this),
|
|
366
368
|
/* @__PURE__ */ jsxDEV3("p", {
|
|
367
369
|
className: "text-muted-foreground text-sm",
|
|
368
|
-
children: "
|
|
370
|
+
children: "Each plugin source must include a Cursor plugin manifest and composable assets."
|
|
369
371
|
}, undefined, false, undefined, this),
|
|
370
372
|
/* @__PURE__ */ jsxDEV3(CodeBlock3, {
|
|
371
|
-
language: "
|
|
372
|
-
filename: "
|
|
373
|
-
code: `
|
|
373
|
+
language: "text",
|
|
374
|
+
filename: "plugin-layout",
|
|
375
|
+
code: `plugins/<plugin-name>/
|
|
376
|
+
.cursor-plugin/plugin.json
|
|
377
|
+
rules/
|
|
378
|
+
commands/
|
|
379
|
+
agents/
|
|
380
|
+
skills/
|
|
381
|
+
.mcp.json`
|
|
382
|
+
}, undefined, false, undefined, this),
|
|
383
|
+
/* @__PURE__ */ jsxDEV3(CodeBlock3, {
|
|
384
|
+
language: "bash",
|
|
385
|
+
filename: "validate-catalog",
|
|
386
|
+
code: `bun run plugin:contractspec:validate
|
|
374
387
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
id: "private-registry",
|
|
378
|
-
version: "1.0.0",
|
|
379
|
-
type: "registryResolver",
|
|
380
|
-
provides: ["private-registry"],
|
|
381
|
-
},
|
|
382
|
-
resolve: async (request) => {
|
|
383
|
-
// Fetch plugin package metadata from private registry
|
|
384
|
-
const result = await fetch(
|
|
385
|
-
"https://registry.acme.io/" + request.package
|
|
386
|
-
);
|
|
387
|
-
return result.json();
|
|
388
|
-
},
|
|
389
|
-
};`
|
|
388
|
+
# Optional in offline environments
|
|
389
|
+
SKIP_PLUGIN_NETWORK_CHECK=1 bun run plugin:contractspec:validate`
|
|
390
390
|
}, undefined, false, undefined, this)
|
|
391
391
|
]
|
|
392
392
|
}, undefined, true, undefined, this),
|
|
@@ -406,7 +406,7 @@ export const PrivateRegistryResolver: RegistryResolverPlugin = {
|
|
|
406
406
|
/* @__PURE__ */ jsxDEV3(Link3, {
|
|
407
407
|
href: "/docs/ecosystem/templates",
|
|
408
408
|
className: "btn-ghost",
|
|
409
|
-
children: "Plugin templates"
|
|
409
|
+
children: "Plugin authoring templates"
|
|
410
410
|
}, undefined, false, undefined, this)
|
|
411
411
|
]
|
|
412
412
|
}, undefined, true, undefined, this)
|
|
@@ -457,11 +457,11 @@ function EcosystemTemplatesPage() {
|
|
|
457
457
|
children: [
|
|
458
458
|
/* @__PURE__ */ jsxDEV5("h1", {
|
|
459
459
|
className: "text-4xl font-bold",
|
|
460
|
-
children: "Plugin templates"
|
|
460
|
+
children: "Plugin authoring templates"
|
|
461
461
|
}, undefined, false, undefined, this),
|
|
462
462
|
/* @__PURE__ */ jsxDEV5("p", {
|
|
463
463
|
className: "text-muted-foreground text-lg",
|
|
464
|
-
children: "Scaffold
|
|
464
|
+
children: "Scaffold focused Cursor plugins for ContractSpec product and core libraries."
|
|
465
465
|
}, undefined, false, undefined, this)
|
|
466
466
|
]
|
|
467
467
|
}, undefined, true, undefined, this),
|
|
@@ -470,19 +470,24 @@ function EcosystemTemplatesPage() {
|
|
|
470
470
|
children: [
|
|
471
471
|
/* @__PURE__ */ jsxDEV5("h2", {
|
|
472
472
|
className: "text-2xl font-bold",
|
|
473
|
-
children: "Create a
|
|
473
|
+
children: "Create a focused plugin"
|
|
474
474
|
}, undefined, false, undefined, this),
|
|
475
475
|
/* @__PURE__ */ jsxDEV5("p", {
|
|
476
476
|
className: "text-muted-foreground text-sm",
|
|
477
|
-
children: "
|
|
477
|
+
children: "Start from a scoped domain and keep each plugin aligned to one product or library surface."
|
|
478
478
|
}, undefined, false, undefined, this),
|
|
479
479
|
/* @__PURE__ */ jsxDEV5(CodeBlock4, {
|
|
480
480
|
language: "bash",
|
|
481
|
-
filename: "
|
|
482
|
-
code: `
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
481
|
+
filename: "catalog-authoring-layout",
|
|
482
|
+
code: `packages/apps-registry/cursor-marketplace/
|
|
483
|
+
plugins/
|
|
484
|
+
<plugin-name>/
|
|
485
|
+
.cursor-plugin/plugin.json
|
|
486
|
+
rules/
|
|
487
|
+
commands/
|
|
488
|
+
agents/
|
|
489
|
+
skills/
|
|
490
|
+
.mcp.json`
|
|
486
491
|
}, undefined, false, undefined, this)
|
|
487
492
|
]
|
|
488
493
|
}, undefined, true, undefined, this),
|
|
@@ -497,16 +502,16 @@ function EcosystemTemplatesPage() {
|
|
|
497
502
|
className: "text-muted-foreground space-y-2 text-sm",
|
|
498
503
|
children: [
|
|
499
504
|
/* @__PURE__ */ jsxDEV5("li", {
|
|
500
|
-
children: "
|
|
505
|
+
children: ".cursor-plugin/plugin.json with plugin metadata and paths"
|
|
501
506
|
}, undefined, false, undefined, this),
|
|
502
507
|
/* @__PURE__ */ jsxDEV5("li", {
|
|
503
|
-
children: "
|
|
508
|
+
children: "rules/, commands/, agents/, and skills/ content directories"
|
|
504
509
|
}, undefined, false, undefined, this),
|
|
505
510
|
/* @__PURE__ */ jsxDEV5("li", {
|
|
506
|
-
children: ".
|
|
511
|
+
children: ".mcp.json with all MCP server declarations used by the plugin"
|
|
507
512
|
}, undefined, false, undefined, this),
|
|
508
513
|
/* @__PURE__ */ jsxDEV5("li", {
|
|
509
|
-
children: "README.md
|
|
514
|
+
children: "README.md describing scope and governance boundaries"
|
|
510
515
|
}, undefined, false, undefined, this)
|
|
511
516
|
]
|
|
512
517
|
}, undefined, true, undefined, this)
|
|
@@ -517,16 +522,16 @@ function EcosystemTemplatesPage() {
|
|
|
517
522
|
children: [
|
|
518
523
|
/* @__PURE__ */ jsxDEV5("h2", {
|
|
519
524
|
className: "text-2xl font-bold",
|
|
520
|
-
children: "
|
|
525
|
+
children: "Validate before submission"
|
|
521
526
|
}, undefined, false, undefined, this),
|
|
522
527
|
/* @__PURE__ */ jsxDEV5(CodeBlock4, {
|
|
523
528
|
language: "bash",
|
|
524
|
-
filename: "
|
|
525
|
-
code:
|
|
526
|
-
bun
|
|
529
|
+
filename: "validate-marketplace-catalog",
|
|
530
|
+
code: `# Validate all plugins referenced by root marketplace manifest
|
|
531
|
+
bun run plugin:contractspec:validate
|
|
527
532
|
|
|
528
|
-
#
|
|
529
|
-
bun
|
|
533
|
+
# Optional in offline environments
|
|
534
|
+
SKIP_PLUGIN_NETWORK_CHECK=1 bun run plugin:contractspec:validate`
|
|
530
535
|
}, undefined, false, undefined, this)
|
|
531
536
|
]
|
|
532
537
|
}, undefined, true, undefined, this),
|
|
@@ -541,7 +546,7 @@ bun add @contractspec/integration.markdown-generator`
|
|
|
541
546
|
href: "/docs/ecosystem/plugins",
|
|
542
547
|
className: "btn-primary",
|
|
543
548
|
children: [
|
|
544
|
-
"
|
|
549
|
+
"Marketplace plugins ",
|
|
545
550
|
/* @__PURE__ */ jsxDEV5(ChevronRight4, {
|
|
546
551
|
size: 16
|
|
547
552
|
}, undefined, false, undefined, this)
|
|
@@ -550,7 +555,7 @@ bun add @contractspec/integration.markdown-generator`
|
|
|
550
555
|
/* @__PURE__ */ jsxDEV5(Link5, {
|
|
551
556
|
href: "/docs/ecosystem/registry",
|
|
552
557
|
className: "btn-ghost",
|
|
553
|
-
children: "
|
|
558
|
+
children: "Marketplace manifest"
|
|
554
559
|
}, undefined, false, undefined, this)
|
|
555
560
|
]
|
|
556
561
|
}, undefined, true, undefined, this)
|
|
@@ -563,15 +568,15 @@ import { registerDocBlocks } from "@contractspec/lib.contracts-spec/docs";
|
|
|
563
568
|
var ecosystemDocBlocks = [
|
|
564
569
|
{
|
|
565
570
|
id: "docs.ecosystem.plugins",
|
|
566
|
-
title: "
|
|
567
|
-
summary: "
|
|
571
|
+
title: "Marketplace plugins",
|
|
572
|
+
summary: "Focused Cursor marketplace plugins for product and core libraries.",
|
|
568
573
|
kind: "usage",
|
|
569
574
|
visibility: "public",
|
|
570
575
|
route: "/docs/ecosystem/plugins",
|
|
571
576
|
tags: ["ecosystem", "plugins", "extensions"],
|
|
572
|
-
body: `#
|
|
577
|
+
body: `# Marketplace plugins
|
|
573
578
|
|
|
574
|
-
ContractSpec
|
|
579
|
+
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.`
|
|
575
580
|
},
|
|
576
581
|
{
|
|
577
582
|
id: "docs.ecosystem.integrations",
|
|
@@ -587,23 +592,23 @@ Reference integrations demonstrate how to extend ContractSpec with real-world pl
|
|
|
587
592
|
},
|
|
588
593
|
{
|
|
589
594
|
id: "docs.ecosystem.templates",
|
|
590
|
-
title: "Plugin templates",
|
|
591
|
-
summary: "
|
|
595
|
+
title: "Plugin authoring templates",
|
|
596
|
+
summary: "Author focused plugins with a consistent marketplace-ready layout.",
|
|
592
597
|
kind: "usage",
|
|
593
598
|
visibility: "public",
|
|
594
599
|
route: "/docs/ecosystem/templates",
|
|
595
600
|
tags: ["ecosystem", "templates"],
|
|
596
|
-
body: "# Plugin templates\n\
|
|
601
|
+
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`."
|
|
597
602
|
},
|
|
598
603
|
{
|
|
599
604
|
id: "docs.ecosystem.registry",
|
|
600
|
-
title: "
|
|
601
|
-
summary: "
|
|
605
|
+
title: "Marketplace manifest",
|
|
606
|
+
summary: "Manage and validate root marketplace entries for all plugins.",
|
|
602
607
|
kind: "usage",
|
|
603
608
|
visibility: "public",
|
|
604
609
|
route: "/docs/ecosystem/registry",
|
|
605
610
|
tags: ["ecosystem", "registry"],
|
|
606
|
-
body: "#
|
|
611
|
+
body: "# Marketplace manifest\n\nKeep all plugin entries in `.cursor-plugin/marketplace.json` and validate them with `bun run plugin:contractspec:validate` before submission."
|
|
607
612
|
}
|
|
608
613
|
];
|
|
609
614
|
registerDocBlocks(ecosystemDocBlocks);
|