@s2-dev/streamstore 0.8.2 → 0.9.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/README.md +40 -7
- package/bin/mcp-server.js +50 -12
- package/bin/mcp-server.js.map +16 -15
- package/dist/commonjs/hooks/types.d.ts +1 -1
- package/dist/commonjs/hooks/types.d.ts.map +1 -1
- package/dist/commonjs/lib/config.d.ts +3 -3
- package/dist/commonjs/lib/config.js +3 -3
- package/dist/commonjs/lib/security.d.ts +4 -3
- package/dist/commonjs/lib/security.d.ts.map +1 -1
- package/dist/commonjs/lib/security.js +6 -1
- package/dist/commonjs/lib/security.js.map +1 -1
- package/dist/commonjs/mcp-server/extensions.d.ts +2 -0
- package/dist/commonjs/mcp-server/extensions.d.ts.map +1 -1
- package/dist/commonjs/mcp-server/mcp-server.js +1 -1
- package/dist/commonjs/mcp-server/prompts.d.ts +26 -0
- package/dist/commonjs/mcp-server/prompts.d.ts.map +1 -0
- package/dist/commonjs/mcp-server/prompts.js +47 -0
- package/dist/commonjs/mcp-server/prompts.js.map +1 -0
- package/dist/commonjs/mcp-server/resources.d.ts.map +1 -1
- package/dist/commonjs/mcp-server/resources.js +1 -0
- package/dist/commonjs/mcp-server/resources.js.map +1 -1
- package/dist/commonjs/mcp-server/server.d.ts.map +1 -1
- package/dist/commonjs/mcp-server/server.js +4 -2
- package/dist/commonjs/mcp-server/server.js.map +1 -1
- package/dist/commonjs/mcp-server/tools.d.ts.map +1 -1
- package/dist/commonjs/mcp-server/tools.js +1 -0
- package/dist/commonjs/mcp-server/tools.js.map +1 -1
- package/dist/commonjs/models/components/appendrecord.d.ts +10 -0
- package/dist/commonjs/models/components/appendrecord.d.ts.map +1 -1
- package/dist/commonjs/models/components/appendrecord.js +2 -0
- package/dist/commonjs/models/components/appendrecord.js.map +1 -1
- package/dist/commonjs/models/components/output.d.ts +18 -13
- package/dist/commonjs/models/components/output.d.ts.map +1 -1
- package/dist/commonjs/models/components/output.js.map +1 -1
- package/dist/commonjs/models/components/readresponse.d.ts +4 -1
- package/dist/commonjs/models/components/readresponse.d.ts.map +1 -1
- package/dist/commonjs/models/components/readresponse.js.map +1 -1
- package/dist/commonjs/models/components/sequencedrecord.d.ts +6 -1
- package/dist/commonjs/models/components/sequencedrecord.d.ts.map +1 -1
- package/dist/commonjs/models/components/sequencedrecord.js +2 -0
- package/dist/commonjs/models/components/sequencedrecord.js.map +1 -1
- package/dist/commonjs/models/components/streamconfig.d.ts +9 -0
- package/dist/commonjs/models/components/streamconfig.d.ts.map +1 -1
- package/dist/commonjs/models/components/streamconfig.js +4 -0
- package/dist/commonjs/models/components/streamconfig.js.map +1 -1
- package/dist/commonjs/models/operations/read.d.ts +10 -2
- package/dist/commonjs/models/operations/read.d.ts.map +1 -1
- package/dist/commonjs/models/operations/read.js.map +1 -1
- package/dist/esm/hooks/types.d.ts +1 -1
- package/dist/esm/hooks/types.d.ts.map +1 -1
- package/dist/esm/lib/config.d.ts +3 -3
- package/dist/esm/lib/config.js +3 -3
- package/dist/esm/lib/security.d.ts +4 -3
- package/dist/esm/lib/security.d.ts.map +1 -1
- package/dist/esm/lib/security.js +6 -1
- package/dist/esm/lib/security.js.map +1 -1
- package/dist/esm/mcp-server/extensions.d.ts +2 -0
- package/dist/esm/mcp-server/extensions.d.ts.map +1 -1
- package/dist/esm/mcp-server/mcp-server.js +1 -1
- package/dist/esm/mcp-server/prompts.d.ts +26 -0
- package/dist/esm/mcp-server/prompts.d.ts.map +1 -0
- package/dist/esm/mcp-server/prompts.js +43 -0
- package/dist/esm/mcp-server/prompts.js.map +1 -0
- package/dist/esm/mcp-server/resources.d.ts.map +1 -1
- package/dist/esm/mcp-server/resources.js +1 -0
- package/dist/esm/mcp-server/resources.js.map +1 -1
- package/dist/esm/mcp-server/server.d.ts.map +1 -1
- package/dist/esm/mcp-server/server.js +4 -2
- package/dist/esm/mcp-server/server.js.map +1 -1
- package/dist/esm/mcp-server/tools.d.ts.map +1 -1
- package/dist/esm/mcp-server/tools.js +1 -0
- package/dist/esm/mcp-server/tools.js.map +1 -1
- package/dist/esm/models/components/appendrecord.d.ts +10 -0
- package/dist/esm/models/components/appendrecord.d.ts.map +1 -1
- package/dist/esm/models/components/appendrecord.js +2 -0
- package/dist/esm/models/components/appendrecord.js.map +1 -1
- package/dist/esm/models/components/output.d.ts +18 -13
- package/dist/esm/models/components/output.d.ts.map +1 -1
- package/dist/esm/models/components/output.js.map +1 -1
- package/dist/esm/models/components/readresponse.d.ts +4 -1
- package/dist/esm/models/components/readresponse.d.ts.map +1 -1
- package/dist/esm/models/components/readresponse.js.map +1 -1
- package/dist/esm/models/components/sequencedrecord.d.ts +6 -1
- package/dist/esm/models/components/sequencedrecord.d.ts.map +1 -1
- package/dist/esm/models/components/sequencedrecord.js +2 -0
- package/dist/esm/models/components/sequencedrecord.js.map +1 -1
- package/dist/esm/models/components/streamconfig.d.ts +9 -0
- package/dist/esm/models/components/streamconfig.d.ts.map +1 -1
- package/dist/esm/models/components/streamconfig.js +4 -0
- package/dist/esm/models/components/streamconfig.js.map +1 -1
- package/dist/esm/models/operations/read.d.ts +10 -2
- package/dist/esm/models/operations/read.d.ts.map +1 -1
- package/dist/esm/models/operations/read.js.map +1 -1
- package/jsr.json +1 -1
- package/package.json +1 -1
- package/src/hooks/types.ts +1 -1
- package/src/lib/config.ts +3 -3
- package/src/lib/security.ts +11 -3
- package/src/mcp-server/extensions.ts +4 -0
- package/src/mcp-server/mcp-server.ts +1 -1
- package/src/mcp-server/prompts.ts +110 -0
- package/src/mcp-server/resources.ts +1 -0
- package/src/mcp-server/server.ts +4 -2
- package/src/mcp-server/tools.ts +1 -0
- package/src/models/components/appendrecord.ts +12 -0
- package/src/models/components/output.ts +18 -13
- package/src/models/components/readresponse.ts +4 -1
- package/src/models/components/sequencedrecord.ts +8 -1
- package/src/models/components/streamconfig.ts +13 -0
- package/src/models/operations/read.ts +10 -2
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ yarn add @s2-dev/streamstore zod
|
|
|
82
82
|
This SDK is also an installable MCP server where the various SDK methods are
|
|
83
83
|
exposed as tools that can be invoked by AI applications.
|
|
84
84
|
|
|
85
|
-
> Node.js v20 or greater is required to run the MCP server.
|
|
85
|
+
> Node.js v20 or greater is required to run the MCP server from npm.
|
|
86
86
|
|
|
87
87
|
<details>
|
|
88
88
|
<summary>Claude installation steps</summary>
|
|
@@ -110,17 +110,50 @@ Add the following server definition to your `claude_desktop_config.json` file:
|
|
|
110
110
|
<details>
|
|
111
111
|
<summary>Cursor installation steps</summary>
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
Create a `.cursor/mcp.json` file in your project root with the following content:
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
npx
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"mcpServers": {
|
|
118
|
+
"S2": {
|
|
119
|
+
"command": "npx",
|
|
120
|
+
"args": [
|
|
121
|
+
"-y", "--package", "@s2-dev/streamstore",
|
|
122
|
+
"--",
|
|
123
|
+
"mcp", "start",
|
|
124
|
+
"--bearer-auth", "..."
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
120
129
|
```
|
|
121
130
|
|
|
122
131
|
</details>
|
|
123
132
|
|
|
133
|
+
You can also run MCP servers as a standalone binary with no additional dependencies. You must pull these binaries from available Github releases:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
curl -L -o mcp-server \
|
|
137
|
+
https://github.com/{org}/{repo}/releases/download/{tag}/mcp-server-bun-darwin-arm64 && \
|
|
138
|
+
chmod +x mcp-server
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
If the repo is a private repo you must add your Github PAT to download a release `-H "Authorization: Bearer {GITHUB_PAT}"`.
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"mcpServers": {
|
|
147
|
+
"Todos": {
|
|
148
|
+
"command": "./DOWNLOAD/PATH/mcp-server",
|
|
149
|
+
"args": [
|
|
150
|
+
"start"
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
124
157
|
For a full list of server arguments, run:
|
|
125
158
|
|
|
126
159
|
```sh
|
package/bin/mcp-server.js
CHANGED
|
@@ -34182,9 +34182,9 @@ var init_config = __esm(() => {
|
|
|
34182
34182
|
SDK_METADATA = {
|
|
34183
34183
|
language: "typescript",
|
|
34184
34184
|
openapiDocVersion: "1.0.0",
|
|
34185
|
-
sdkVersion: "0.
|
|
34186
|
-
genVersion: "2.
|
|
34187
|
-
userAgent: "speakeasy-sdk/typescript 0.
|
|
34185
|
+
sdkVersion: "0.9.0",
|
|
34186
|
+
genVersion: "2.563.0",
|
|
34187
|
+
userAgent: "speakeasy-sdk/typescript 0.9.0 2.563.0 1.0.0 @s2-dev/streamstore"
|
|
34188
34188
|
};
|
|
34189
34189
|
});
|
|
34190
34190
|
|
|
@@ -34985,6 +34985,30 @@ var init_core = __esm(() => {
|
|
|
34985
34985
|
};
|
|
34986
34986
|
});
|
|
34987
34987
|
|
|
34988
|
+
// src/mcp-server/prompts.ts
|
|
34989
|
+
function createRegisterPrompt(logger, server, sdk, allowedScopes) {
|
|
34990
|
+
return (prompt) => {
|
|
34991
|
+
const scopes = prompt.scopes ?? [];
|
|
34992
|
+
if (!scopes.every((s) => allowedScopes.has(s))) {
|
|
34993
|
+
return;
|
|
34994
|
+
}
|
|
34995
|
+
if (prompt.args) {
|
|
34996
|
+
if (prompt.description) {
|
|
34997
|
+
server.prompt(prompt.name, prompt.description, prompt.args, async (args, ctx) => prompt.prompt(sdk, args, ctx));
|
|
34998
|
+
} else {
|
|
34999
|
+
server.prompt(prompt.name, prompt.args, async (args, ctx) => prompt.prompt(sdk, args, ctx));
|
|
35000
|
+
}
|
|
35001
|
+
} else {
|
|
35002
|
+
if (prompt.description) {
|
|
35003
|
+
server.prompt(prompt.name, prompt.description, async (ctx) => prompt.prompt(sdk, ctx));
|
|
35004
|
+
} else {
|
|
35005
|
+
server.prompt(prompt.name, async (ctx) => prompt.prompt(sdk, ctx));
|
|
35006
|
+
}
|
|
35007
|
+
}
|
|
35008
|
+
logger.debug("Registered prompt", { name: prompt.name });
|
|
35009
|
+
};
|
|
35010
|
+
}
|
|
35011
|
+
|
|
34988
35012
|
// src/mcp-server/shared.ts
|
|
34989
35013
|
async function consumeStream(stream) {
|
|
34990
35014
|
const reader = stream.getReader();
|
|
@@ -35636,6 +35660,9 @@ function resolveSecurity(...options) {
|
|
|
35636
35660
|
} else if (o.type === "oauth2:password") {
|
|
35637
35661
|
return typeof o.value === "string" && !!o.value;
|
|
35638
35662
|
} else if (o.type === "oauth2:client_credentials") {
|
|
35663
|
+
if (typeof o.value == "string") {
|
|
35664
|
+
return !!o.value;
|
|
35665
|
+
}
|
|
35639
35666
|
return o.value.clientID != null || o.value.clientSecret != null;
|
|
35640
35667
|
} else if (typeof o.value === "string") {
|
|
35641
35668
|
return !!o.value;
|
|
@@ -35701,7 +35728,9 @@ function applyBearer(state, spec) {
|
|
|
35701
35728
|
if (value.slice(0, 7).toLowerCase() !== "bearer ") {
|
|
35702
35729
|
value = `Bearer ${value}`;
|
|
35703
35730
|
}
|
|
35704
|
-
|
|
35731
|
+
if (spec.fieldName !== undefined) {
|
|
35732
|
+
state.headers[spec.fieldName] = value;
|
|
35733
|
+
}
|
|
35705
35734
|
}
|
|
35706
35735
|
function resolveGlobalSecurity(security) {
|
|
35707
35736
|
return resolveSecurity([
|
|
@@ -35743,11 +35772,13 @@ var init_appendrecord = __esm(() => {
|
|
|
35743
35772
|
init_lib();
|
|
35744
35773
|
AppendRecord$inboundSchema = objectType({
|
|
35745
35774
|
body: stringType(),
|
|
35746
|
-
headers: arrayType(arrayType(stringType())).optional()
|
|
35775
|
+
headers: arrayType(arrayType(stringType())).optional(),
|
|
35776
|
+
timestamp: nullableType(numberType().int()).optional()
|
|
35747
35777
|
});
|
|
35748
35778
|
AppendRecord$outboundSchema = objectType({
|
|
35749
35779
|
body: stringType(),
|
|
35750
|
-
headers: arrayType(arrayType(stringType())).optional()
|
|
35780
|
+
headers: arrayType(arrayType(stringType())).optional(),
|
|
35781
|
+
timestamp: nullableType(numberType().int()).optional()
|
|
35751
35782
|
});
|
|
35752
35783
|
((AppendRecord$) => {
|
|
35753
35784
|
AppendRecord$.inboundSchema = AppendRecord$inboundSchema;
|
|
@@ -35867,19 +35898,23 @@ var init_streamconfig = __esm(() => {
|
|
|
35867
35898
|
init_retentionpolicy();
|
|
35868
35899
|
init_storageclass();
|
|
35869
35900
|
StreamConfig$inboundSchema = objectType({
|
|
35901
|
+
require_client_timestamps: nullableType(booleanType()).optional(),
|
|
35870
35902
|
retention_policy: nullableType(RetentionPolicy$inboundSchema).optional(),
|
|
35871
35903
|
storage_class: StorageClass$inboundSchema.optional()
|
|
35872
35904
|
}).transform((v2) => {
|
|
35873
35905
|
return remap(v2, {
|
|
35906
|
+
require_client_timestamps: "requireClientTimestamps",
|
|
35874
35907
|
retention_policy: "retentionPolicy",
|
|
35875
35908
|
storage_class: "storageClass"
|
|
35876
35909
|
});
|
|
35877
35910
|
});
|
|
35878
35911
|
StreamConfig$outboundSchema = objectType({
|
|
35912
|
+
requireClientTimestamps: nullableType(booleanType()).optional(),
|
|
35879
35913
|
retentionPolicy: nullableType(RetentionPolicy$outboundSchema).optional(),
|
|
35880
35914
|
storageClass: StorageClass$outboundSchema.optional()
|
|
35881
35915
|
}).transform((v2) => {
|
|
35882
35916
|
return remap(v2, {
|
|
35917
|
+
requireClientTimestamps: "require_client_timestamps",
|
|
35883
35918
|
retentionPolicy: "retention_policy",
|
|
35884
35919
|
storageClass: "storage_class"
|
|
35885
35920
|
});
|
|
@@ -36168,7 +36203,8 @@ var init_sequencedrecord = __esm(() => {
|
|
|
36168
36203
|
SequencedRecord$inboundSchema = objectType({
|
|
36169
36204
|
body: stringType(),
|
|
36170
36205
|
headers: arrayType(Header$inboundSchema),
|
|
36171
|
-
seq_num: numberType().int()
|
|
36206
|
+
seq_num: numberType().int(),
|
|
36207
|
+
timestamp: numberType().int()
|
|
36172
36208
|
}).transform((v2) => {
|
|
36173
36209
|
return remap(v2, {
|
|
36174
36210
|
seq_num: "seqNum"
|
|
@@ -36177,7 +36213,8 @@ var init_sequencedrecord = __esm(() => {
|
|
|
36177
36213
|
SequencedRecord$outboundSchema = objectType({
|
|
36178
36214
|
body: stringType(),
|
|
36179
36215
|
headers: arrayType(Header$outboundSchema),
|
|
36180
|
-
seqNum: numberType().int()
|
|
36216
|
+
seqNum: numberType().int(),
|
|
36217
|
+
timestamp: numberType().int()
|
|
36181
36218
|
}).transform((v2) => {
|
|
36182
36219
|
return remap(v2, {
|
|
36183
36220
|
seqNum: "seq_num"
|
|
@@ -42294,7 +42331,7 @@ Retrieve a batch of records, or set \`Accept: text/event-stream\` to stream usin
|
|
|
42294
42331
|
function createMCPServer(deps) {
|
|
42295
42332
|
const server = new McpServer({
|
|
42296
42333
|
name: "S2",
|
|
42297
|
-
version: "0.
|
|
42334
|
+
version: "0.9.0"
|
|
42298
42335
|
});
|
|
42299
42336
|
const client = new S2Core({
|
|
42300
42337
|
bearerAuth: deps.bearerAuth,
|
|
@@ -42306,7 +42343,8 @@ function createMCPServer(deps) {
|
|
|
42306
42343
|
const tool = createRegisterTool(deps.logger, server, client, scopes, allowedTools);
|
|
42307
42344
|
const resource = createRegisterResource(deps.logger, server, client, scopes);
|
|
42308
42345
|
const resourceTemplate = createRegisterResourceTemplate(deps.logger, server, client, scopes);
|
|
42309
|
-
const
|
|
42346
|
+
const prompt = createRegisterPrompt(deps.logger, server, client, scopes);
|
|
42347
|
+
const register = { tool, resource, resourceTemplate, prompt };
|
|
42310
42348
|
tool(tool$accountListBasins);
|
|
42311
42349
|
tool(tool$accountGetBasinConfig);
|
|
42312
42350
|
tool(tool$accountCreateBasin);
|
|
@@ -43530,7 +43568,7 @@ var routes = rn({
|
|
|
43530
43568
|
var app = Ve(routes, {
|
|
43531
43569
|
name: "mcp",
|
|
43532
43570
|
versionInfo: {
|
|
43533
|
-
currentVersion: "0.
|
|
43571
|
+
currentVersion: "0.9.0"
|
|
43534
43572
|
}
|
|
43535
43573
|
});
|
|
43536
43574
|
_t(app, process3.argv.slice(2), buildContext(process3));
|
|
@@ -43538,5 +43576,5 @@ export {
|
|
|
43538
43576
|
app
|
|
43539
43577
|
};
|
|
43540
43578
|
|
|
43541
|
-
//# debugId=
|
|
43579
|
+
//# debugId=FBBEE11F84D3BD4364756E2164756E21
|
|
43542
43580
|
//# sourceMappingURL=mcp-server.js.map
|