@onkeiki/agents 0.1.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.
Files changed (111) hide show
  1. package/dist/Alert.d.ts +56 -0
  2. package/dist/Alert.d.ts.map +1 -0
  3. package/dist/Alert.js +8 -0
  4. package/dist/Alert.js.map +1 -0
  5. package/dist/Entity.d.ts +158 -0
  6. package/dist/Entity.d.ts.map +1 -0
  7. package/dist/Entity.js +289 -0
  8. package/dist/Entity.js.map +1 -0
  9. package/dist/Kit.d.ts +138 -0
  10. package/dist/Kit.d.ts.map +1 -0
  11. package/dist/Kit.js +517 -0
  12. package/dist/Kit.js.map +1 -0
  13. package/dist/OpenApi.d.ts +151 -0
  14. package/dist/OpenApi.d.ts.map +1 -0
  15. package/dist/OpenApi.js +222 -0
  16. package/dist/OpenApi.js.map +1 -0
  17. package/dist/Plugin.d.ts +183 -0
  18. package/dist/Plugin.d.ts.map +1 -0
  19. package/dist/Plugin.js +10 -0
  20. package/dist/Plugin.js.map +1 -0
  21. package/dist/Server.d.ts +71 -0
  22. package/dist/Server.d.ts.map +1 -0
  23. package/dist/Server.js +476 -0
  24. package/dist/Server.js.map +1 -0
  25. package/dist/Tool.d.ts +86 -0
  26. package/dist/Tool.d.ts.map +1 -0
  27. package/dist/Tool.js +27 -0
  28. package/dist/Tool.js.map +1 -0
  29. package/dist/bundle.d.ts +17 -0
  30. package/dist/bundle.d.ts.map +1 -0
  31. package/dist/bundle.js +101 -0
  32. package/dist/bundle.js.map +1 -0
  33. package/dist/index.d.ts +19 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +18 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/services/Blackboard.d.ts +18 -0
  38. package/dist/services/Blackboard.d.ts.map +1 -0
  39. package/dist/services/Blackboard.js +4 -0
  40. package/dist/services/Blackboard.js.map +1 -0
  41. package/dist/services/Observability.d.ts +102 -0
  42. package/dist/services/Observability.d.ts.map +1 -0
  43. package/dist/services/Observability.js +238 -0
  44. package/dist/services/Observability.js.map +1 -0
  45. package/dist/services/Platform.d.ts +112 -0
  46. package/dist/services/Platform.d.ts.map +1 -0
  47. package/dist/services/Platform.js +13 -0
  48. package/dist/services/Platform.js.map +1 -0
  49. package/dist/services/PluginDb.d.ts +44 -0
  50. package/dist/services/PluginDb.d.ts.map +1 -0
  51. package/dist/services/PluginDb.js +5 -0
  52. package/dist/services/PluginDb.js.map +1 -0
  53. package/dist/services/Sandbox.d.ts +68 -0
  54. package/dist/services/Sandbox.d.ts.map +1 -0
  55. package/dist/services/Sandbox.js +4 -0
  56. package/dist/services/Sandbox.js.map +1 -0
  57. package/dist/services/Steering.d.ts +46 -0
  58. package/dist/services/Steering.d.ts.map +1 -0
  59. package/dist/services/Steering.js +4 -0
  60. package/dist/services/Steering.js.map +1 -0
  61. package/dist/services/Storage.d.ts +63 -0
  62. package/dist/services/Storage.d.ts.map +1 -0
  63. package/dist/services/Storage.js +13 -0
  64. package/dist/services/Storage.js.map +1 -0
  65. package/dist/services/Transport.d.ts +19 -0
  66. package/dist/services/Transport.d.ts.map +1 -0
  67. package/dist/services/Transport.js +4 -0
  68. package/dist/services/Transport.js.map +1 -0
  69. package/dist/services/index.d.ts +9 -0
  70. package/dist/services/index.d.ts.map +1 -0
  71. package/dist/services/index.js +9 -0
  72. package/dist/services/index.js.map +1 -0
  73. package/dist/types/config.d.ts +526 -0
  74. package/dist/types/config.d.ts.map +1 -0
  75. package/dist/types/config.js +2 -0
  76. package/dist/types/config.js.map +1 -0
  77. package/dist/types/index.d.ts +4 -0
  78. package/dist/types/index.d.ts.map +1 -0
  79. package/dist/types/index.js +4 -0
  80. package/dist/types/index.js.map +1 -0
  81. package/dist/types/message.d.ts +54 -0
  82. package/dist/types/message.d.ts.map +1 -0
  83. package/dist/types/message.js +47 -0
  84. package/dist/types/message.js.map +1 -0
  85. package/dist/types/user.d.ts +16 -0
  86. package/dist/types/user.d.ts.map +1 -0
  87. package/dist/types/user.js +14 -0
  88. package/dist/types/user.js.map +1 -0
  89. package/package.json +39 -0
  90. package/src/Alert.ts +51 -0
  91. package/src/Entity.ts +543 -0
  92. package/src/Kit.ts +705 -0
  93. package/src/OpenApi.ts +343 -0
  94. package/src/Plugin.ts +209 -0
  95. package/src/Server.ts +618 -0
  96. package/src/Tool.ts +110 -0
  97. package/src/bundle.ts +114 -0
  98. package/src/index.ts +209 -0
  99. package/src/services/Blackboard.ts +19 -0
  100. package/src/services/Observability.ts +320 -0
  101. package/src/services/Platform.ts +125 -0
  102. package/src/services/PluginDb.ts +48 -0
  103. package/src/services/Sandbox.ts +74 -0
  104. package/src/services/Steering.ts +45 -0
  105. package/src/services/Storage.ts +76 -0
  106. package/src/services/Transport.ts +21 -0
  107. package/src/services/index.ts +8 -0
  108. package/src/types/config.ts +531 -0
  109. package/src/types/index.ts +3 -0
  110. package/src/types/message.ts +60 -0
  111. package/src/types/user.ts +17 -0
@@ -0,0 +1,47 @@
1
+ import { Schema } from 'effect';
2
+ export const Direction = Schema.Literal('inbound', 'outbound');
3
+ export const InboundMessage = Schema.Struct({
4
+ phone: Schema.String,
5
+ chatId: Schema.String,
6
+ messageId: Schema.String,
7
+ text: Schema.String,
8
+ mediaUrl: Schema.optional(Schema.String),
9
+ mediaMimeType: Schema.optional(Schema.String),
10
+ timestamp: Schema.Date,
11
+ });
12
+ export const OutboundMessage = Schema.Struct({
13
+ phone: Schema.String,
14
+ chatId: Schema.String,
15
+ text: Schema.String,
16
+ mediaUrl: Schema.optional(Schema.String),
17
+ externalMessageId: Schema.optional(Schema.String),
18
+ });
19
+ export const StoredMessage = Schema.Struct({
20
+ id: Schema.String,
21
+ phone: Schema.String,
22
+ chatId: Schema.String,
23
+ direction: Direction,
24
+ content: Schema.String,
25
+ mediaUrl: Schema.optional(Schema.String),
26
+ mediaMimeType: Schema.optional(Schema.String),
27
+ externalMessageId: Schema.optional(Schema.String),
28
+ createdAt: Schema.Date,
29
+ });
30
+ export const MediaPayload = Schema.Struct({
31
+ url: Schema.optional(Schema.String),
32
+ base64: Schema.optional(Schema.String),
33
+ mimeType: Schema.String,
34
+ filename: Schema.optional(Schema.String),
35
+ });
36
+ export const SendResult = Schema.Struct({
37
+ chatId: Schema.String,
38
+ messageId: Schema.String,
39
+ });
40
+ export const DeliveryStatus = Schema.Struct({
41
+ messageId: Schema.String,
42
+ phone: Schema.String,
43
+ state: Schema.Literal('delivered', 'failed', 'pending'),
44
+ error: Schema.optional(Schema.String),
45
+ timestamp: Schema.Date,
46
+ });
47
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AAG9D,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC,IAAI;CACvB,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CAClD,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC,IAAI;CACvB,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CACzC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;IACvD,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC,IAAI;CACvB,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { Schema } from 'effect';
2
+ export declare const UserProfile: Schema.Struct<{
3
+ phone: typeof Schema.String;
4
+ timezone: Schema.NullOr<typeof Schema.String>;
5
+ currency: Schema.NullOr<typeof Schema.String>;
6
+ metadata: Schema.Record$<typeof Schema.String, typeof Schema.Unknown>;
7
+ firstSeenAt: typeof Schema.Date;
8
+ }>;
9
+ export type UserProfile = typeof UserProfile.Type;
10
+ export declare const Subscriber: Schema.Struct<{
11
+ phone: typeof Schema.String;
12
+ chatId: typeof Schema.String;
13
+ preferences: Schema.Record$<typeof Schema.String, typeof Schema.Unknown>;
14
+ }>;
15
+ export type Subscriber = typeof Subscriber.Type;
16
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,eAAO,MAAM,WAAW;;;;;;EAMtB,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAEjD,eAAO,MAAM,UAAU;;;;EAIrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { Schema } from 'effect';
2
+ export const UserProfile = Schema.Struct({
3
+ phone: Schema.String,
4
+ timezone: Schema.NullOr(Schema.String),
5
+ currency: Schema.NullOr(Schema.String),
6
+ metadata: Schema.Record({ key: Schema.String, value: Schema.Unknown }),
7
+ firstSeenAt: Schema.Date,
8
+ });
9
+ export const Subscriber = Schema.Struct({
10
+ phone: Schema.String,
11
+ chatId: Schema.String,
12
+ preferences: Schema.Record({ key: Schema.String, value: Schema.Unknown }),
13
+ });
14
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACtE,WAAW,EAAE,MAAM,CAAC,IAAI;CACzB,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;CAC1E,CAAC,CAAA"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@onkeiki/agents",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Keiki agent SDK: define, configure and sync cloud agents and capabilities",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/Mail-0/sms-kit.git",
10
+ "directory": "packages/core"
11
+ },
12
+ "files": ["dist", "src", "!**/*.test.*", "!src/**/__tests__"],
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "bun": "./src/index.ts",
17
+ "default": "./dist/index.js"
18
+ }
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "scripts": {
24
+ "build": "tsc",
25
+ "check-types": "tsc --noEmit",
26
+ "lint": "oxlint src",
27
+ "test": "bun test",
28
+ "clean": "rm -rf dist",
29
+ "prepublishOnly": "rm -rf dist && tsc"
30
+ },
31
+ "dependencies": {
32
+ "effect": "^3.14.0",
33
+ "@effect/platform": "^0.75.0"
34
+ },
35
+ "devDependencies": {
36
+ "@types/bun": "^1.4.1",
37
+ "typescript": "^7.0.2"
38
+ }
39
+ }
package/src/Alert.ts ADDED
@@ -0,0 +1,51 @@
1
+ import { Effect } from 'effect'
2
+
3
+ export type AlertSchedule =
4
+ | { readonly type: 'cron'; readonly expression: string; readonly timezone?: string }
5
+ | { readonly type: 'interval'; readonly every: string }
6
+ | { readonly type: 'webhook'; readonly path: string }
7
+
8
+ export type AlertMedia = { readonly url: string; readonly mimeType: string }
9
+
10
+ /** One outbound message of a multi-message alert. */
11
+ export type AlertMessage = {
12
+ readonly text: string
13
+ readonly media?: ReadonlyArray<AlertMedia>
14
+ }
15
+
16
+ export type AlertContent = {
17
+ readonly text: string
18
+ readonly media?: AlertMedia
19
+ /** Additional messages delivered after the first, in order. */
20
+ readonly messages?: ReadonlyArray<AlertMessage>
21
+ }
22
+
23
+ /** Durable per-(alert, subscriber) KV state, persisted across runs. */
24
+ export interface AlertStateService {
25
+ readonly get: (key: string) => Effect.Effect<unknown>
26
+ readonly set: (key: string, value: unknown) => Effect.Effect<void>
27
+ }
28
+
29
+ export type AlertContext = {
30
+ readonly subscriber: { phone: string; chatId: string; preferences: Record<string, unknown> }
31
+ readonly now: Date
32
+ /** Developer secrets synced to the platform, resolved for this run. */
33
+ readonly secrets: Readonly<Record<string, string>>
34
+ readonly state: AlertStateService
35
+ }
36
+
37
+ export type AlertDefinition = {
38
+ readonly name: string
39
+ readonly description: string
40
+ readonly schedule: AlertSchedule
41
+ readonly dedupKey?: (ctx: AlertContext) => string
42
+ readonly shouldSend?: (ctx: AlertContext) => Effect.Effect<boolean>
43
+ readonly generate: (ctx: AlertContext) => Effect.Effect<AlertContent | null>
44
+ }
45
+
46
+ /**
47
+ * Define a scheduled or triggered alert.
48
+ */
49
+ export function defineAlert(def: AlertDefinition): AlertDefinition {
50
+ return def
51
+ }