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