@krak-stack/registry 0.1.11 → 0.1.14

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.
Files changed (51) hide show
  1. package/README.md +31 -2
  2. package/dist/components/ui/app-brand.d.ts +18 -13
  3. package/dist/components/ui/app-brand.js +48 -15
  4. package/dist/components/ui/code-block.js +10 -6
  5. package/dist/components/ui/copy-button.d.ts +1 -1
  6. package/dist/components/ui/copy-button.js +1 -1
  7. package/dist/components/ui/data-table.d.ts +1 -1
  8. package/dist/components/ui/data-table.js +21 -20
  9. package/dist/components/ui/effect-form.js +7 -6
  10. package/dist/components/ui/file-picker.js +2 -1
  11. package/dist/components/ui/form.js +17 -15
  12. package/dist/components/ui/google-map.d.ts +6 -10
  13. package/dist/components/ui/google-map.js +19 -14
  14. package/dist/components/ui/locale-switcher.js +7 -1
  15. package/dist/components/ui/sidebar-layout.js +19 -21
  16. package/dist/components/ui/theme-switcher.js +1 -1
  17. package/dist/lib/docs-core.js +165 -109
  18. package/dist/lib/documentation-toolkit.d.ts +140 -0
  19. package/dist/lib/{docs-ai.js → documentation-toolkit.js} +54 -63
  20. package/dist/lib/httpapi-cli.d.ts +6 -6
  21. package/dist/lib/httpapi-cli.js +75 -48
  22. package/dist/lib/httpapi-client.d.ts +8 -2
  23. package/dist/lib/httpapi-client.js +21 -9
  24. package/dist/lib/httpapi-helpers.d.ts +15 -21
  25. package/dist/lib/httpapi-helpers.js +38 -26
  26. package/dist/lib/httpapi-mcp.js +73 -50
  27. package/dist/lib/httpapi-toolkit.d.ts +20 -0
  28. package/dist/lib/{httpapi-ai.js → httpapi-toolkit.js} +123 -100
  29. package/dist/lib/seo.js +29 -17
  30. package/dist/lib/webfetch-toolkit.d.ts +45 -0
  31. package/dist/lib/webfetch-toolkit.js +276 -0
  32. package/dist/oxlint/anti-slop/index.js +1592 -0
  33. package/dist/services/agent/client/atom.d.ts +7 -7
  34. package/dist/services/agent/client/index.js +55 -54
  35. package/dist/services/agent/index.d.ts +71 -71
  36. package/dist/services/agent/index.js +38 -19
  37. package/dist/services/notification/channels/index.d.ts +11 -9
  38. package/dist/services/notification/channels/ses/index.d.ts +6 -6
  39. package/dist/services/notification/channels/ses/index.js +15 -11
  40. package/dist/services/notification/client/index.js +3 -2
  41. package/dist/services/notification/client/notification-menu.d.ts +9 -9
  42. package/dist/services/notification/index.d.ts +7 -6
  43. package/dist/services/notification/persistence/drizzle.js +214 -0
  44. package/dist/services/notification/persistence/index.js +227 -0
  45. package/dist/services/notification/persistence/schema.js +118 -0
  46. package/dist/services/notification/public.js +3 -2
  47. package/dist/services/s3/index.d.ts +2 -16
  48. package/dist/services/s3/index.js +12 -9
  49. package/package.json +33 -7
  50. package/dist/lib/docs-ai.d.ts +0 -142
  51. package/dist/lib/httpapi-ai.d.ts +0 -54
@@ -78,6 +78,7 @@ import {
78
78
  TriangleAlert
79
79
  } from "lucide-react";
80
80
  import { useState } from "react";
81
+ import { Schema as Schema2 } from "effect";
81
82
 
82
83
  // ../../src/components/ui/badge.tsx
83
84
  import { mergeProps } from "@base-ui/react/merge-props";
@@ -1044,7 +1045,7 @@ function NotificationListItem({
1044
1045
  onNavigate(notification);
1045
1046
  return;
1046
1047
  }
1047
- if (notification.href && typeof window !== "undefined") {
1048
+ if (notification.href && globalThis.window) {
1048
1049
  window.location.assign(notification.href);
1049
1050
  }
1050
1051
  };
@@ -1182,7 +1183,7 @@ var formatNotificationDate = (value, locale) => {
1182
1183
  timeStyle: "short"
1183
1184
  }).format(date);
1184
1185
  };
1185
- var notificationTitle = (notification) => typeof notification.title === "string" ? notification.title : defaultMessages.en.notifications;
1186
+ var notificationTitle = (notification) => Schema2.is(Schema2.String)(notification.title) ? notification.title : defaultMessages.en.notifications;
1186
1187
  export {
1187
1188
  notificationMenuMessages,
1188
1189
  NotificationService,
@@ -1,24 +1,10 @@
1
1
  import { Config, Context, Effect, Layer } from "effect";
2
2
  import { S3ServiceError } from "./schema.js";
3
3
  declare const S3ServiceConfig_base: Context.ServiceClass<S3ServiceConfig, "S3ServiceConfig", {
4
- options: {
5
- accessKeyId: string;
6
- secretAccessKey: string;
7
- bucket: string;
8
- region?: string | undefined;
9
- endpoint?: string | undefined;
10
- sessionToken?: string | undefined;
11
- };
4
+ options: Bun.S3Options;
12
5
  }> & {
13
6
  readonly make: Effect.Effect<{
14
- options: {
15
- accessKeyId: string;
16
- secretAccessKey: string;
17
- bucket: string;
18
- region?: string | undefined;
19
- endpoint?: string | undefined;
20
- sessionToken?: string | undefined;
21
- };
7
+ options: Bun.S3Options;
22
8
  }, Config.ConfigError, never>;
23
9
  };
24
10
  export declare class S3ServiceConfig extends S3ServiceConfig_base {
@@ -43,16 +43,19 @@ class S3ServiceConfig extends Context.Service()("S3ServiceConfig", {
43
43
  const region = yield* Config.string("S3_REGION").pipe(Config.withDefault(""));
44
44
  const endpoint = yield* Config.string("S3_ENDPOINT").pipe(Config.withDefault(""));
45
45
  const sessionToken = yield* Config.redacted("S3_SESSION_TOKEN").pipe(Config.orElse(() => Config.succeed(Redacted.make(""))));
46
- return {
47
- options: {
48
- accessKeyId: Redacted.value(accessKeyId),
49
- secretAccessKey: Redacted.value(secretAccessKey),
50
- bucket,
51
- ...region ? { region } : {},
52
- ...endpoint ? { endpoint } : {},
53
- ...Redacted.value(sessionToken) ? { sessionToken: Redacted.value(sessionToken) } : {}
54
- }
46
+ const options = {
47
+ accessKeyId: Redacted.value(accessKeyId),
48
+ secretAccessKey: Redacted.value(secretAccessKey),
49
+ bucket
55
50
  };
51
+ if (region)
52
+ options.region = region;
53
+ if (endpoint)
54
+ options.endpoint = endpoint;
55
+ if (Redacted.value(sessionToken)) {
56
+ options.sessionToken = Redacted.value(sessionToken);
57
+ }
58
+ return { options };
56
59
  })
57
60
  }) {
58
61
  static layer = Layer.effect(this, this.make);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krak-stack/registry",
3
- "version": "0.1.11",
3
+ "version": "0.1.14",
4
4
  "description": "Tree-shakable KrakStack components and Effect services.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -28,9 +28,9 @@
28
28
  "types": "./dist/services/agent/schema.d.ts",
29
29
  "import": "./dist/services/agent/schema.js"
30
30
  },
31
- "./httpapi/ai": {
32
- "types": "./dist/lib/httpapi-ai.d.ts",
33
- "import": "./dist/lib/httpapi-ai.js"
31
+ "./httpapi-toolkit": {
32
+ "types": "./dist/lib/httpapi-toolkit.d.ts",
33
+ "import": "./dist/lib/httpapi-toolkit.js"
34
34
  },
35
35
  "./httpapi/cli": {
36
36
  "types": "./dist/lib/httpapi-cli.d.ts",
@@ -52,9 +52,13 @@
52
52
  "types": "./dist/lib/docs-core.d.ts",
53
53
  "import": "./dist/lib/docs-core.js"
54
54
  },
55
- "./docs-ai": {
56
- "types": "./dist/lib/docs-ai.d.ts",
57
- "import": "./dist/lib/docs-ai.js"
55
+ "./documentation-toolkit": {
56
+ "types": "./dist/lib/documentation-toolkit.d.ts",
57
+ "import": "./dist/lib/documentation-toolkit.js"
58
+ },
59
+ "./webfetch-toolkit": {
60
+ "types": "./dist/lib/webfetch-toolkit.d.ts",
61
+ "import": "./dist/lib/webfetch-toolkit.js"
58
62
  },
59
63
  "./query": {
60
64
  "types": "./dist/lib/query.d.ts",
@@ -64,6 +68,9 @@
64
68
  "types": "./dist/lib/seo.d.ts",
65
69
  "import": "./dist/lib/seo.js"
66
70
  },
71
+ "./oxlint/anti-slop": {
72
+ "import": "./dist/oxlint/anti-slop/index.js"
73
+ },
67
74
  "./app-brand": {
68
75
  "types": "./dist/components/ui/app-brand.d.ts",
69
76
  "import": "./dist/components/ui/app-brand.js"
@@ -164,6 +171,18 @@
164
171
  "types": "./dist/services/notification/channels/ses/schema.d.ts",
165
172
  "import": "./dist/services/notification/channels/ses/schema.js"
166
173
  },
174
+ "./service-notification/persistence": {
175
+ "types": "./dist/services/notification/persistence/index.d.ts",
176
+ "import": "./dist/services/notification/persistence/index.js"
177
+ },
178
+ "./service-notification/persistence/drizzle": {
179
+ "types": "./dist/services/notification/persistence/drizzle.d.ts",
180
+ "import": "./dist/services/notification/persistence/drizzle.js"
181
+ },
182
+ "./service-notification/persistence/schema": {
183
+ "types": "./dist/services/notification/persistence/schema.d.ts",
184
+ "import": "./dist/services/notification/persistence/schema.js"
185
+ },
167
186
  "./service-s3": {
168
187
  "types": "./dist/services/s3/index.d.ts",
169
188
  "import": "./dist/services/s3/index.js"
@@ -190,6 +209,9 @@
190
209
  "build": "NODE_ENV=production bun run build.ts",
191
210
  "prepack": "bun run build"
192
211
  },
212
+ "dependencies": {
213
+ "@oxlint/plugins": "1.78.0"
214
+ },
193
215
  "peerDependencies": {
194
216
  "@aws-sdk/client-sesv2": "^3.1068.0",
195
217
  "@base-ui/react": "^1.5.0",
@@ -212,6 +234,7 @@
212
234
  "class-variance-authority": "^0.7.1",
213
235
  "clsx": "^2.1.1",
214
236
  "cmdk": "^1.1.1",
237
+ "drizzle-orm": "^1.0.0-rc.4-5d5b77c",
215
238
  "effect": "4.0.0-beta.99",
216
239
  "lucide-react": "^1.18.0",
217
240
  "react": "^19.2.0",
@@ -249,6 +272,9 @@
249
272
  "cmdk": {
250
273
  "optional": true
251
274
  },
275
+ "drizzle-orm": {
276
+ "optional": true
277
+ },
252
278
  "@lucas-barake/effect-form": {
253
279
  "optional": true
254
280
  },
@@ -1,142 +0,0 @@
1
- import { Effect, Schema } from "effect";
2
- import { Tool, Toolkit } from "effect/unstable/ai";
3
- import { type DocsCatalog, type DocsLocale } from "./docs-core.js";
4
- export declare const searchDocumentation: (args_0: {
5
- readonly docs: DocsCatalog;
6
- readonly locale: DocsLocale;
7
- readonly query: string;
8
- }) => Effect.Effect<{
9
- path: string;
10
- title: string;
11
- description: string;
12
- heading?: string | undefined;
13
- }[], never, never>;
14
- export declare const readDocumentation: (args_0: {
15
- readonly locale: DocsLocale;
16
- readonly paths: ReadonlyArray<string>;
17
- readonly docs: DocsCatalog;
18
- }) => Effect.Effect<{
19
- pages: {
20
- readonly slug: string;
21
- readonly path: string;
22
- readonly title: string;
23
- readonly description: string;
24
- readonly icon?: string | undefined;
25
- readonly order: number;
26
- readonly locale: string;
27
- readonly section: string;
28
- readonly type: "concept" | "how-to" | "reference" | "runbook" | "tutorial";
29
- readonly createdAt?: string | undefined;
30
- readonly updatedAt?: string | undefined;
31
- readonly legacySlugs?: readonly string[] | undefined;
32
- readonly headings: readonly Schema.Struct.ReadonlySide<{
33
- readonly depth: Schema.Literals<readonly [2, 3]>;
34
- readonly id: Schema.String;
35
- readonly title: Schema.String;
36
- }, "Type">[];
37
- readonly searchText: string;
38
- readonly sourceFile: string;
39
- readonly source: string;
40
- }[];
41
- missingPaths: string[];
42
- }, never, never>;
43
- export declare const makeChatDocumentation: (args_0: {
44
- readonly locale: DocsLocale;
45
- readonly docs: DocsCatalog;
46
- }) => Effect.Effect<{
47
- layer: import("effect/Layer").Layer<Tool.HandlersFor<{
48
- readonly readDocumentation: Tool.Tool<"readDocumentation", {
49
- readonly parameters: Schema.Struct<{
50
- readonly paths: Schema.$Array<Schema.String>;
51
- }>;
52
- readonly success: Schema.Struct<{
53
- readonly pages: Schema.$Array<Schema.Struct<{
54
- readonly slug: Schema.String;
55
- readonly path: Schema.String;
56
- readonly title: Schema.String;
57
- readonly description: Schema.String;
58
- readonly icon: Schema.optional<Schema.String>;
59
- readonly order: Schema.Number;
60
- readonly locale: Schema.String;
61
- readonly section: Schema.String;
62
- readonly type: Schema.Literals<readonly ["concept", "tutorial", "how-to", "reference", "runbook"]>;
63
- readonly createdAt: Schema.optional<Schema.String>;
64
- readonly updatedAt: Schema.optional<Schema.String>;
65
- readonly legacySlugs: Schema.optional<Schema.$Array<Schema.String>>;
66
- readonly headings: Schema.$Array<Schema.Struct<{
67
- readonly depth: Schema.Literals<readonly [2, 3]>;
68
- readonly id: Schema.String;
69
- readonly title: Schema.String;
70
- }>>;
71
- readonly searchText: Schema.String;
72
- readonly sourceFile: Schema.String;
73
- readonly source: Schema.String;
74
- }>>;
75
- readonly missingPaths: Schema.$Array<Schema.String>;
76
- }>;
77
- readonly failure: Schema.Never;
78
- readonly failureMode: "error";
79
- }, never>;
80
- readonly searchDocumentation: Tool.Tool<"searchDocumentation", {
81
- readonly parameters: Schema.Struct<{
82
- readonly query: Schema.String;
83
- }>;
84
- readonly success: Schema.$Array<Schema.Struct<{
85
- readonly path: Schema.String;
86
- readonly title: Schema.String;
87
- readonly description: Schema.String;
88
- readonly heading: Schema.optional<Schema.String>;
89
- }>>;
90
- readonly failure: Schema.Never;
91
- readonly failureMode: "error";
92
- }, never>;
93
- }>, never, never>;
94
- systemPrompt: string;
95
- toolkit: Toolkit.Toolkit<{
96
- readonly readDocumentation: Tool.Tool<"readDocumentation", {
97
- readonly parameters: Schema.Struct<{
98
- readonly paths: Schema.$Array<Schema.String>;
99
- }>;
100
- readonly success: Schema.Struct<{
101
- readonly pages: Schema.$Array<Schema.Struct<{
102
- readonly slug: Schema.String;
103
- readonly path: Schema.String;
104
- readonly title: Schema.String;
105
- readonly description: Schema.String;
106
- readonly icon: Schema.optional<Schema.String>;
107
- readonly order: Schema.Number;
108
- readonly locale: Schema.String;
109
- readonly section: Schema.String;
110
- readonly type: Schema.Literals<readonly ["concept", "tutorial", "how-to", "reference", "runbook"]>;
111
- readonly createdAt: Schema.optional<Schema.String>;
112
- readonly updatedAt: Schema.optional<Schema.String>;
113
- readonly legacySlugs: Schema.optional<Schema.$Array<Schema.String>>;
114
- readonly headings: Schema.$Array<Schema.Struct<{
115
- readonly depth: Schema.Literals<readonly [2, 3]>;
116
- readonly id: Schema.String;
117
- readonly title: Schema.String;
118
- }>>;
119
- readonly searchText: Schema.String;
120
- readonly sourceFile: Schema.String;
121
- readonly source: Schema.String;
122
- }>>;
123
- readonly missingPaths: Schema.$Array<Schema.String>;
124
- }>;
125
- readonly failure: Schema.Never;
126
- readonly failureMode: "error";
127
- }, never>;
128
- readonly searchDocumentation: Tool.Tool<"searchDocumentation", {
129
- readonly parameters: Schema.Struct<{
130
- readonly query: Schema.String;
131
- }>;
132
- readonly success: Schema.$Array<Schema.Struct<{
133
- readonly path: Schema.String;
134
- readonly title: Schema.String;
135
- readonly description: Schema.String;
136
- readonly heading: Schema.optional<Schema.String>;
137
- }>>;
138
- readonly failure: Schema.Never;
139
- readonly failureMode: "error";
140
- }, never>;
141
- }>;
142
- }, never, never>;
@@ -1,54 +0,0 @@
1
- import { Context, Effect, JsonSchema, Layer, Schema } from "effect";
2
- import { Tool, Toolkit } from "effect/unstable/ai";
3
- import { ApiClient } from "./httpapi-client.js";
4
- import { HttpApiSpec, type HttpApiOperationEntry } from "./httpapi-helpers.js";
5
- export type HttpApiAiConfig = {
6
- readonly needsApproval?: (operation: HttpApiOperationEntry) => boolean;
7
- readonly strict?: (operation: HttpApiOperationEntry) => boolean;
8
- readonly transformResult?: (operation: HttpApiOperationEntry, result: unknown) => unknown;
9
- };
10
- export declare const makeOpenAiStrictJsonSchema: (schema: JsonSchema.JsonSchema) => JsonSchema.JsonSchema;
11
- export declare const makeHttpApiAiToolkit: (config: HttpApiAiConfig) => Effect.Effect<{
12
- systemPrompt: string;
13
- operations: HttpApiOperationEntry[];
14
- toolkit: Toolkit.Toolkit<{
15
- readonly [x: string]: Tool.Tool<string, {
16
- readonly parameters: Schema.Struct<{}>;
17
- readonly success: Schema.Unknown;
18
- readonly failure: Schema.String;
19
- readonly failureMode: "return";
20
- }, never>;
21
- }>;
22
- layer: Layer.Layer<Tool.Handler<string>, never, ApiClient>;
23
- }, Error, HttpApiSpec>;
24
- declare const HttpApiAi_base: Context.ServiceClass<HttpApiAi, "HttpApiAi", {
25
- systemPrompt: string;
26
- operations: HttpApiOperationEntry[];
27
- toolkit: Toolkit.Toolkit<{
28
- readonly [x: string]: Tool.Tool<string, {
29
- readonly parameters: Schema.Struct<{}>;
30
- readonly success: Schema.Unknown;
31
- readonly failure: Schema.String;
32
- readonly failureMode: "return";
33
- }, never>;
34
- }>;
35
- layer: Layer.Layer<Tool.Handler<string>, never, ApiClient>;
36
- }> & {
37
- readonly make: (config: HttpApiAiConfig) => Effect.Effect<{
38
- systemPrompt: string;
39
- operations: HttpApiOperationEntry[];
40
- toolkit: Toolkit.Toolkit<{
41
- readonly [x: string]: Tool.Tool<string, {
42
- readonly parameters: Schema.Struct<{}>;
43
- readonly success: Schema.Unknown;
44
- readonly failure: Schema.String;
45
- readonly failureMode: "return";
46
- }, never>;
47
- }>;
48
- layer: Layer.Layer<Tool.Handler<string>, never, ApiClient>;
49
- }, Error, HttpApiSpec>;
50
- };
51
- export declare class HttpApiAi extends HttpApiAi_base {
52
- static readonly layer: (config: HttpApiAiConfig) => Layer.Layer<HttpApiAi, Error, HttpApiSpec>;
53
- }
54
- export {};