ekairos 1.22.3 → 1.22.4-beta.development.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 +12 -113
- package/dist/agent.d.ts +1 -1
- package/dist/agent.js +2 -2
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/{thread.js → context.js} +2 -2
- package/dist/context.js.map +1 -0
- package/dist/dataset.d.ts +1 -16
- package/dist/dataset.d.ts.map +1 -1
- package/dist/dataset.js +15 -38
- package/dist/dataset.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
- package/dist/thread.d.ts +0 -2
- package/dist/thread.d.ts.map +0 -1
- package/dist/thread.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,123 +1,22 @@
|
|
|
1
1
|
# ekairos
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Convenience package that re-exports the main Ekairos surfaces.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Main entrypoints
|
|
6
6
|
|
|
7
|
-
- `@ekairos/domain`
|
|
8
|
-
-
|
|
7
|
+
- `ekairos` -> `@ekairos/events` + `@ekairos/domain`
|
|
8
|
+
- `ekairos/context` -> context runtime/builder surface
|
|
9
|
+
- `ekairos/dataset`
|
|
10
|
+
- `ekairos/domain`
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
## What You Build With It
|
|
13
|
-
|
|
14
|
-
Ekairos is for domain-native AI applications:
|
|
15
|
-
|
|
16
|
-
- model your business as domains,
|
|
17
|
-
- run durable AI threads on top of those domains,
|
|
18
|
-
- keep state, traces, and workflow execution aligned.
|
|
19
|
-
|
|
20
|
-
## Installation
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
pnpm add ekairos
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Minimal App Bootstrap
|
|
27
|
-
|
|
28
|
-
```ts
|
|
29
|
-
import "server-only";
|
|
30
|
-
import { configureRuntime } from "ekairos/runtime";
|
|
31
|
-
import { getOrgAdminDb } from "@/lib/admin-org-db";
|
|
32
|
-
import appDomain from "@/lib/domain";
|
|
33
|
-
|
|
34
|
-
export const runtimeConfig = configureRuntime({
|
|
35
|
-
runtime: async (env: { orgId: string }) => {
|
|
36
|
-
const db = await getOrgAdminDb(env.orgId, appDomain);
|
|
37
|
-
return { db };
|
|
38
|
-
},
|
|
39
|
-
domain: { domain: appDomain },
|
|
40
|
-
});
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
The runtime bootstrap is single-source:
|
|
44
|
-
|
|
45
|
-
- no per-thread runtime bootstrap,
|
|
46
|
-
- no duplicated store wiring in app code,
|
|
47
|
-
- no extra SDK wrapper required.
|
|
48
|
-
|
|
49
|
-
Thread builds its store from the runtime-resolved db.
|
|
50
|
-
|
|
51
|
-
## Define a Thread
|
|
12
|
+
## Example
|
|
52
13
|
|
|
53
14
|
```ts
|
|
54
|
-
import {
|
|
55
|
-
import { tool } from "ai";
|
|
56
|
-
import { z } from "zod";
|
|
15
|
+
import { createContext } from "ekairos/context";
|
|
57
16
|
|
|
58
|
-
const
|
|
59
|
-
.context(
|
|
60
|
-
.narrative(() => "
|
|
61
|
-
.actions(() => ({
|
|
62
|
-
ping: tool({
|
|
63
|
-
description: "Return pong",
|
|
64
|
-
inputSchema: z.object({ text: z.string().optional() }),
|
|
65
|
-
execute: async ({ text }) => ({ pong: text ?? "ok" }),
|
|
66
|
-
}),
|
|
67
|
-
}))
|
|
68
|
-
.model("openai/gpt-5.2")
|
|
17
|
+
const demoContext = createContext("demo")
|
|
18
|
+
.context((stored) => stored.content ?? {})
|
|
19
|
+
.narrative(() => "Demo context")
|
|
20
|
+
.actions(() => ({}))
|
|
69
21
|
.build();
|
|
70
22
|
```
|
|
71
|
-
|
|
72
|
-
## Preconfigured Coding Thread (`thread/codex`)
|
|
73
|
-
|
|
74
|
-
If your app uses Codex App Server:
|
|
75
|
-
|
|
76
|
-
```ts
|
|
77
|
-
import { createCodexThreadBuilder } from "ekairos/thread";
|
|
78
|
-
|
|
79
|
-
const codingBuilder = createCodexThreadBuilder({
|
|
80
|
-
key: "code.agent",
|
|
81
|
-
context: async (stored, env) => ({ ...(stored.content ?? {}), ...env }),
|
|
82
|
-
executeCodex: async ({ input, env }) => {
|
|
83
|
-
// call app server and return normalized output
|
|
84
|
-
return {
|
|
85
|
-
threadId: "t_1",
|
|
86
|
-
turnId: "turn_1",
|
|
87
|
-
assistantText: "completed",
|
|
88
|
-
reasoningText: "",
|
|
89
|
-
diff: "",
|
|
90
|
-
toolParts: [],
|
|
91
|
-
};
|
|
92
|
-
},
|
|
93
|
-
});
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Workflow Integration
|
|
97
|
-
|
|
98
|
-
Ekairos threads are designed to run inside Workflow DevKit:
|
|
99
|
-
|
|
100
|
-
- thread logic stays declarative,
|
|
101
|
-
- side effects run in workflow-safe steps,
|
|
102
|
-
- streams are resumable via workflow run streams.
|
|
103
|
-
|
|
104
|
-
Important boundary:
|
|
105
|
-
|
|
106
|
-
- workflow wrapper owns `"use workflow"`,
|
|
107
|
-
- thread engine stays workflow-compatible but does not declare `"use workflow"` internally.
|
|
108
|
-
|
|
109
|
-
## Package Surface
|
|
110
|
-
|
|
111
|
-
- `ekairos` -> root re-exports (`domain` + `thread` APIs)
|
|
112
|
-
- `ekairos/domain` -> domain constructors and types
|
|
113
|
-
- `ekairos/thread` -> thread runtime and builders
|
|
114
|
-
- `ekairos/dataset` -> dataset tools (separate package support)
|
|
115
|
-
|
|
116
|
-
## DX Principles
|
|
117
|
-
|
|
118
|
-
- Keep startup config short.
|
|
119
|
-
- Keep thread definitions easy to read.
|
|
120
|
-
- Keep runtime explicit and deterministic.
|
|
121
|
-
- Keep domain as source of truth.
|
|
122
|
-
|
|
123
|
-
This package is optimized for fast onboarding without sacrificing production durability.
|
package/dist/agent.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from '@ekairos/
|
|
1
|
+
export * from '@ekairos/events';
|
|
2
2
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.js
CHANGED
|
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
// Re-export agent functionality from @ekairos/
|
|
18
|
-
__exportStar(require("@ekairos/
|
|
17
|
+
// Re-export agent functionality from @ekairos/events
|
|
18
|
+
__exportStar(require("@ekairos/events"), exports);
|
|
19
19
|
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("@ekairos/
|
|
18
|
-
//# sourceMappingURL=
|
|
17
|
+
__exportStar(require("@ekairos/events"), exports);
|
|
18
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
|
package/dist/dataset.d.ts
CHANGED
|
@@ -1,17 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { datasetDomain, DatasetService } from "@ekairos/dataset";
|
|
3
|
-
import type { SchemaOf } from "@ekairos/domain";
|
|
4
|
-
export type DatasetDb = InstantAdminDatabase<SchemaOf<typeof datasetDomain>>;
|
|
5
|
-
export type DatasetsOptions = {
|
|
6
|
-
db?: DatasetDb;
|
|
7
|
-
appId?: string;
|
|
8
|
-
adminToken?: string;
|
|
9
|
-
schema?: unknown;
|
|
10
|
-
};
|
|
11
|
-
export type DatasetsClient = {
|
|
12
|
-
db: DatasetDb;
|
|
13
|
-
domain: typeof datasetDomain;
|
|
14
|
-
service: DatasetService;
|
|
15
|
-
};
|
|
16
|
-
export declare function datasets(options?: DatasetsOptions): DatasetsClient;
|
|
1
|
+
export * from "@ekairos/dataset";
|
|
17
2
|
//# sourceMappingURL=dataset.d.ts.map
|
package/dist/dataset.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
package/dist/dataset.js
CHANGED
|
@@ -1,41 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
function
|
|
7
|
-
return (options.appId ??
|
|
8
|
-
process.env.INSTANT_APP_ID ??
|
|
9
|
-
process.env.NEXT_PUBLIC_INSTANT_APP_ID ??
|
|
10
|
-
"");
|
|
11
|
-
}
|
|
12
|
-
function resolveAdminToken(options) {
|
|
13
|
-
return options.adminToken ?? process.env.INSTANT_APP_ADMIN_TOKEN ?? "";
|
|
14
|
-
}
|
|
15
|
-
function datasets(options = {}) {
|
|
16
|
-
if (options.db) {
|
|
17
|
-
return {
|
|
18
|
-
db: options.db,
|
|
19
|
-
domain: dataset_1.datasetDomain,
|
|
20
|
-
service: new dataset_1.DatasetService(options.db),
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
const appId = resolveAppId(options);
|
|
24
|
-
const adminToken = resolveAdminToken(options);
|
|
25
|
-
if (!appId || !adminToken) {
|
|
26
|
-
throw new Error("datasets() requires Instant credentials. Provide { db } or { appId, adminToken }.");
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
27
7
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
service: new dataset_1.DatasetService(db),
|
|
39
|
-
};
|
|
40
|
-
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("@ekairos/dataset"), exports);
|
|
41
18
|
//# sourceMappingURL=dataset.js.map
|
package/dist/dataset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset.js","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dataset.js","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
// Re-export
|
|
18
|
-
__exportStar(require("@ekairos/
|
|
17
|
+
// Re-export principal de context/events
|
|
18
|
+
__exportStar(require("@ekairos/events"), exports);
|
|
19
19
|
// Re-export domain utilities
|
|
20
20
|
__exportStar(require("@ekairos/domain"), exports);
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAwC;AACxC,kDAAgC;AAEhC,6BAA6B;AAC7B,kDAAgC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ekairos",
|
|
3
|
-
"version": "1.22.
|
|
3
|
+
"version": "1.22.4-beta.development.0",
|
|
4
4
|
"description": "Ekairos - AI Stories and Workflows Runtime",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
"require": "./dist/dataset.js",
|
|
35
35
|
"default": "./dist/dataset.js"
|
|
36
36
|
},
|
|
37
|
-
"./
|
|
38
|
-
"types": "./dist/
|
|
39
|
-
"import": "./dist/
|
|
40
|
-
"require": "./dist/
|
|
41
|
-
"default": "./dist/
|
|
37
|
+
"./context": {
|
|
38
|
+
"types": "./dist/context.d.ts",
|
|
39
|
+
"import": "./dist/context.js",
|
|
40
|
+
"require": "./dist/context.js",
|
|
41
|
+
"default": "./dist/context.js"
|
|
42
42
|
},
|
|
43
43
|
"./domain": {
|
|
44
44
|
"types": "./dist/domain.d.ts",
|
|
@@ -73,10 +73,10 @@
|
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
75
|
"@ekairos/dataset": "^1.21.85-beta.0",
|
|
76
|
-
"@ekairos/domain": "^1.22.
|
|
77
|
-
"@ekairos/
|
|
76
|
+
"@ekairos/domain": "^1.22.4-beta.development.0",
|
|
77
|
+
"@ekairos/events": "^1.22.4-beta.development.0",
|
|
78
78
|
"@instantdb/admin": "0.22.126",
|
|
79
|
-
"ekairos-cli": "^1.22.
|
|
79
|
+
"ekairos-cli": "^1.22.4-beta.development.0"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
82
|
"@ekairos/tsconfig": "workspace:*",
|
package/dist/thread.d.ts
DELETED
package/dist/thread.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../src/thread.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
package/dist/thread.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"thread.js","sourceRoot":"","sources":["../src/thread.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
|