@pikku/kysely-mysql 0.12.3

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 (31) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/src/index.d.ts +12 -0
  3. package/dist/src/index.js +8 -0
  4. package/dist/src/mysql-kysely-agent-run-service.d.ts +3 -0
  5. package/dist/src/mysql-kysely-agent-run-service.js +3 -0
  6. package/dist/src/mysql-kysely-ai-storage-service.d.ts +3 -0
  7. package/dist/src/mysql-kysely-ai-storage-service.js +3 -0
  8. package/dist/src/mysql-kysely-channel-store.d.ts +3 -0
  9. package/dist/src/mysql-kysely-channel-store.js +3 -0
  10. package/dist/src/mysql-kysely-deployment-service.d.ts +3 -0
  11. package/dist/src/mysql-kysely-deployment-service.js +3 -0
  12. package/dist/src/mysql-kysely-eventhub-store.d.ts +3 -0
  13. package/dist/src/mysql-kysely-eventhub-store.js +3 -0
  14. package/dist/src/mysql-kysely-secret-service.d.ts +3 -0
  15. package/dist/src/mysql-kysely-secret-service.js +3 -0
  16. package/dist/src/mysql-kysely-workflow-run-service.d.ts +3 -0
  17. package/dist/src/mysql-kysely-workflow-run-service.js +3 -0
  18. package/dist/src/mysql-kysely-workflow-service.d.ts +9 -0
  19. package/dist/src/mysql-kysely-workflow-service.js +37 -0
  20. package/dist/tsconfig.tsbuildinfo +1 -0
  21. package/package.json +22 -0
  22. package/src/index.ts +13 -0
  23. package/src/mysql-kysely-agent-run-service.ts +3 -0
  24. package/src/mysql-kysely-ai-storage-service.ts +3 -0
  25. package/src/mysql-kysely-channel-store.ts +3 -0
  26. package/src/mysql-kysely-deployment-service.ts +3 -0
  27. package/src/mysql-kysely-eventhub-store.ts +3 -0
  28. package/src/mysql-kysely-secret-service.ts +3 -0
  29. package/src/mysql-kysely-workflow-run-service.ts +3 -0
  30. package/src/mysql-kysely-workflow-service.ts +51 -0
  31. package/tsconfig.json +12 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ # @pikku/kysely-mysql
2
+
3
+ ## 0.12.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [387b2ee]
8
+ - Updated dependencies [32ed003]
9
+ - Updated dependencies [7d369f3]
10
+ - Updated dependencies [508a796]
11
+ - Updated dependencies [387b2ee]
12
+ - Updated dependencies [b2b0af9]
13
+ - Updated dependencies [ffe83af]
14
+ - Updated dependencies [c7ff141]
15
+ - @pikku/core@0.12.3
16
+ - @pikku/kysely@0.12.3
@@ -0,0 +1,12 @@
1
+ export { MySQLKyselyWorkflowService } from './mysql-kysely-workflow-service.js';
2
+ export { MySQLKyselyDeploymentService } from './mysql-kysely-deployment-service.js';
3
+ export { MySQLKyselyAIStorageService } from './mysql-kysely-ai-storage-service.js';
4
+ export { MySQLKyselyAgentRunService } from './mysql-kysely-agent-run-service.js';
5
+ export { MySQLKyselyWorkflowRunService } from './mysql-kysely-workflow-run-service.js';
6
+ export { MySQLKyselyChannelStore } from './mysql-kysely-channel-store.js';
7
+ export { MySQLKyselyEventHubStore } from './mysql-kysely-eventhub-store.js';
8
+ export { MySQLKyselySecretService } from './mysql-kysely-secret-service.js';
9
+ export type { KyselyPikkuDB } from '@pikku/kysely';
10
+ export type { KyselySecretServiceConfig } from '@pikku/kysely';
11
+ export type { WorkflowRunService } from '@pikku/core/workflow';
12
+ export type { AgentRunService, AgentRunRow } from '@pikku/core/ai-agent';
@@ -0,0 +1,8 @@
1
+ export { MySQLKyselyWorkflowService } from './mysql-kysely-workflow-service.js';
2
+ export { MySQLKyselyDeploymentService } from './mysql-kysely-deployment-service.js';
3
+ export { MySQLKyselyAIStorageService } from './mysql-kysely-ai-storage-service.js';
4
+ export { MySQLKyselyAgentRunService } from './mysql-kysely-agent-run-service.js';
5
+ export { MySQLKyselyWorkflowRunService } from './mysql-kysely-workflow-run-service.js';
6
+ export { MySQLKyselyChannelStore } from './mysql-kysely-channel-store.js';
7
+ export { MySQLKyselyEventHubStore } from './mysql-kysely-eventhub-store.js';
8
+ export { MySQLKyselySecretService } from './mysql-kysely-secret-service.js';
@@ -0,0 +1,3 @@
1
+ import { KyselyAgentRunService } from '@pikku/kysely';
2
+ export declare class MySQLKyselyAgentRunService extends KyselyAgentRunService {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyAgentRunService } from '@pikku/kysely';
2
+ export class MySQLKyselyAgentRunService extends KyselyAgentRunService {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyAIStorageService } from '@pikku/kysely';
2
+ export declare class MySQLKyselyAIStorageService extends KyselyAIStorageService {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyAIStorageService } from '@pikku/kysely';
2
+ export class MySQLKyselyAIStorageService extends KyselyAIStorageService {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyChannelStore } from '@pikku/kysely';
2
+ export declare class MySQLKyselyChannelStore extends KyselyChannelStore {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyChannelStore } from '@pikku/kysely';
2
+ export class MySQLKyselyChannelStore extends KyselyChannelStore {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyDeploymentService } from '@pikku/kysely';
2
+ export declare class MySQLKyselyDeploymentService extends KyselyDeploymentService {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyDeploymentService } from '@pikku/kysely';
2
+ export class MySQLKyselyDeploymentService extends KyselyDeploymentService {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyEventHubStore } from '@pikku/kysely';
2
+ export declare class MySQLKyselyEventHubStore extends KyselyEventHubStore {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyEventHubStore } from '@pikku/kysely';
2
+ export class MySQLKyselyEventHubStore extends KyselyEventHubStore {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselySecretService } from '@pikku/kysely';
2
+ export declare class MySQLKyselySecretService extends KyselySecretService {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselySecretService } from '@pikku/kysely';
2
+ export class MySQLKyselySecretService extends KyselySecretService {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyWorkflowRunService } from '@pikku/kysely';
2
+ export declare class MySQLKyselyWorkflowRunService extends KyselyWorkflowRunService {
3
+ }
@@ -0,0 +1,3 @@
1
+ import { KyselyWorkflowRunService } from '@pikku/kysely';
2
+ export class MySQLKyselyWorkflowRunService extends KyselyWorkflowRunService {
3
+ }
@@ -0,0 +1,9 @@
1
+ import { KyselyWorkflowService } from '@pikku/kysely';
2
+ import type { KyselyPikkuDB } from '@pikku/kysely';
3
+ import type { Kysely } from 'kysely';
4
+ export declare class MySQLKyselyWorkflowService extends KyselyWorkflowService {
5
+ private lockTimeout;
6
+ constructor(db: Kysely<KyselyPikkuDB>, lockTimeout?: number);
7
+ withRunLock<T>(id: string, fn: () => Promise<T>): Promise<T>;
8
+ withStepLock<T>(runId: string, stepName: string, fn: () => Promise<T>): Promise<T>;
9
+ }
@@ -0,0 +1,37 @@
1
+ import { KyselyWorkflowService } from '@pikku/kysely';
2
+ import { sql } from 'kysely';
3
+ export class MySQLKyselyWorkflowService extends KyselyWorkflowService {
4
+ lockTimeout;
5
+ constructor(db, lockTimeout = 10) {
6
+ super(db);
7
+ this.lockTimeout = lockTimeout;
8
+ }
9
+ async withRunLock(id, fn) {
10
+ const lockName = `pikku:run:${id}`;
11
+ const timeout = this.lockTimeout;
12
+ const acquired = await sql `SELECT GET_LOCK(${lockName}, ${timeout}) as result`.execute(this.db);
13
+ if (acquired.rows[0]?.result !== 1) {
14
+ throw new Error(`Failed to acquire lock for run ${id}`);
15
+ }
16
+ try {
17
+ return await fn();
18
+ }
19
+ finally {
20
+ await sql `SELECT RELEASE_LOCK(${lockName})`.execute(this.db);
21
+ }
22
+ }
23
+ async withStepLock(runId, stepName, fn) {
24
+ const lockName = `pikku:step:${runId}:${stepName}`;
25
+ const timeout = this.lockTimeout;
26
+ const acquired = await sql `SELECT GET_LOCK(${lockName}, ${timeout}) as result`.execute(this.db);
27
+ if (acquired.rows[0]?.result !== 1) {
28
+ throw new Error(`Failed to acquire lock for step ${stepName} in run ${runId}`);
29
+ }
30
+ try {
31
+ return await fn();
32
+ }
33
+ finally {
34
+ await sql `SELECT RELEASE_LOCK(${lockName})`.execute(this.db);
35
+ }
36
+ }
37
+ }
@@ -0,0 +1 @@
1
+ {"root":["../src/index.ts","../src/mysql-kysely-agent-run-service.ts","../src/mysql-kysely-ai-storage-service.ts","../src/mysql-kysely-channel-store.ts","../src/mysql-kysely-deployment-service.ts","../src/mysql-kysely-eventhub-store.ts","../src/mysql-kysely-secret-service.ts","../src/mysql-kysely-workflow-run-service.ts","../src/mysql-kysely-workflow-service.ts"],"version":"5.9.3"}
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@pikku/kysely-mysql",
3
+ "version": "0.12.3",
4
+ "author": "yasser.fadl@gmail.com",
5
+ "license": "MIT",
6
+ "module": "dist/src/index.js",
7
+ "main": "dist/src/index.js",
8
+ "type": "module",
9
+ "scripts": {
10
+ "tsc": "tsc",
11
+ "ncu": "npx npm-check-updates",
12
+ "build": "tsc -b"
13
+ },
14
+ "dependencies": {
15
+ "@pikku/core": "workspace:*",
16
+ "@pikku/kysely": "workspace:*",
17
+ "kysely": "^0.28.11"
18
+ },
19
+ "devDependencies": {
20
+ "typescript": "^5.9"
21
+ }
22
+ }
package/src/index.ts ADDED
@@ -0,0 +1,13 @@
1
+ export { MySQLKyselyWorkflowService } from './mysql-kysely-workflow-service.js'
2
+ export { MySQLKyselyDeploymentService } from './mysql-kysely-deployment-service.js'
3
+ export { MySQLKyselyAIStorageService } from './mysql-kysely-ai-storage-service.js'
4
+ export { MySQLKyselyAgentRunService } from './mysql-kysely-agent-run-service.js'
5
+ export { MySQLKyselyWorkflowRunService } from './mysql-kysely-workflow-run-service.js'
6
+ export { MySQLKyselyChannelStore } from './mysql-kysely-channel-store.js'
7
+ export { MySQLKyselyEventHubStore } from './mysql-kysely-eventhub-store.js'
8
+ export { MySQLKyselySecretService } from './mysql-kysely-secret-service.js'
9
+
10
+ export type { KyselyPikkuDB } from '@pikku/kysely'
11
+ export type { KyselySecretServiceConfig } from '@pikku/kysely'
12
+ export type { WorkflowRunService } from '@pikku/core/workflow'
13
+ export type { AgentRunService, AgentRunRow } from '@pikku/core/ai-agent'
@@ -0,0 +1,3 @@
1
+ import { KyselyAgentRunService } from '@pikku/kysely'
2
+
3
+ export class MySQLKyselyAgentRunService extends KyselyAgentRunService {}
@@ -0,0 +1,3 @@
1
+ import { KyselyAIStorageService } from '@pikku/kysely'
2
+
3
+ export class MySQLKyselyAIStorageService extends KyselyAIStorageService {}
@@ -0,0 +1,3 @@
1
+ import { KyselyChannelStore } from '@pikku/kysely'
2
+
3
+ export class MySQLKyselyChannelStore extends KyselyChannelStore {}
@@ -0,0 +1,3 @@
1
+ import { KyselyDeploymentService } from '@pikku/kysely'
2
+
3
+ export class MySQLKyselyDeploymentService extends KyselyDeploymentService {}
@@ -0,0 +1,3 @@
1
+ import { KyselyEventHubStore } from '@pikku/kysely'
2
+
3
+ export class MySQLKyselyEventHubStore extends KyselyEventHubStore {}
@@ -0,0 +1,3 @@
1
+ import { KyselySecretService } from '@pikku/kysely'
2
+
3
+ export class MySQLKyselySecretService extends KyselySecretService {}
@@ -0,0 +1,3 @@
1
+ import { KyselyWorkflowRunService } from '@pikku/kysely'
2
+
3
+ export class MySQLKyselyWorkflowRunService extends KyselyWorkflowRunService {}
@@ -0,0 +1,51 @@
1
+ import { KyselyWorkflowService } from '@pikku/kysely'
2
+ import type { KyselyPikkuDB } from '@pikku/kysely'
3
+ import type { Kysely } from 'kysely'
4
+ import { sql } from 'kysely'
5
+
6
+ export class MySQLKyselyWorkflowService extends KyselyWorkflowService {
7
+ private lockTimeout: number
8
+
9
+ constructor(db: Kysely<KyselyPikkuDB>, lockTimeout = 10) {
10
+ super(db)
11
+ this.lockTimeout = lockTimeout
12
+ }
13
+
14
+ async withRunLock<T>(id: string, fn: () => Promise<T>): Promise<T> {
15
+ const lockName = `pikku:run:${id}`
16
+ const timeout = this.lockTimeout
17
+ const acquired = await sql<{
18
+ result: number
19
+ }>`SELECT GET_LOCK(${lockName}, ${timeout}) as result`.execute(this.db)
20
+ if (acquired.rows[0]?.result !== 1) {
21
+ throw new Error(`Failed to acquire lock for run ${id}`)
22
+ }
23
+ try {
24
+ return await fn()
25
+ } finally {
26
+ await sql`SELECT RELEASE_LOCK(${lockName})`.execute(this.db)
27
+ }
28
+ }
29
+
30
+ async withStepLock<T>(
31
+ runId: string,
32
+ stepName: string,
33
+ fn: () => Promise<T>
34
+ ): Promise<T> {
35
+ const lockName = `pikku:step:${runId}:${stepName}`
36
+ const timeout = this.lockTimeout
37
+ const acquired = await sql<{
38
+ result: number
39
+ }>`SELECT GET_LOCK(${lockName}, ${timeout}) as result`.execute(this.db)
40
+ if (acquired.rows[0]?.result !== 1) {
41
+ throw new Error(
42
+ `Failed to acquire lock for step ${stepName} in run ${runId}`
43
+ )
44
+ }
45
+ try {
46
+ return await fn()
47
+ } finally {
48
+ await sql`SELECT RELEASE_LOCK(${lockName})`.execute(this.db)
49
+ }
50
+ }
51
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "rootDir": ".",
5
+ "module": "Node18",
6
+ "outDir": "dist",
7
+ "target": "esnext",
8
+ "declaration": true
9
+ },
10
+ "include": ["src/**/*.ts"],
11
+ "exclude": ["**/*.test.ts", "node_modules"]
12
+ }