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