@blacklake-systems/depths-sdk 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 (65) hide show
  1. package/dist/__tests__/db.test.d.ts +2 -0
  2. package/dist/__tests__/db.test.d.ts.map +1 -0
  3. package/dist/__tests__/db.test.js +62 -0
  4. package/dist/__tests__/db.test.js.map +1 -0
  5. package/dist/__tests__/replay.test.d.ts +2 -0
  6. package/dist/__tests__/replay.test.d.ts.map +1 -0
  7. package/dist/__tests__/replay.test.js +91 -0
  8. package/dist/__tests__/replay.test.js.map +1 -0
  9. package/dist/context.d.ts +26 -0
  10. package/dist/context.d.ts.map +1 -0
  11. package/dist/context.js +222 -0
  12. package/dist/context.js.map +1 -0
  13. package/dist/cost.d.ts +2 -0
  14. package/dist/cost.d.ts.map +1 -0
  15. package/dist/cost.js +17 -0
  16. package/dist/cost.js.map +1 -0
  17. package/dist/db.d.ts +5 -0
  18. package/dist/db.d.ts.map +1 -0
  19. package/dist/db.js +62 -0
  20. package/dist/db.js.map +1 -0
  21. package/dist/ids.d.ts +2 -0
  22. package/dist/ids.d.ts.map +1 -0
  23. package/dist/ids.js +5 -0
  24. package/dist/ids.js.map +1 -0
  25. package/dist/index.d.ts +4 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +3 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/llm/anthropic.d.ts +3 -0
  30. package/dist/llm/anthropic.d.ts.map +1 -0
  31. package/dist/llm/anthropic.js +61 -0
  32. package/dist/llm/anthropic.js.map +1 -0
  33. package/dist/llm/index.d.ts +3 -0
  34. package/dist/llm/index.d.ts.map +1 -0
  35. package/dist/llm/index.js +24 -0
  36. package/dist/llm/index.js.map +1 -0
  37. package/dist/llm/ollama.d.ts +3 -0
  38. package/dist/llm/ollama.d.ts.map +1 -0
  39. package/dist/llm/ollama.js +35 -0
  40. package/dist/llm/ollama.js.map +1 -0
  41. package/dist/llm/openai.d.ts +3 -0
  42. package/dist/llm/openai.d.ts.map +1 -0
  43. package/dist/llm/openai.js +48 -0
  44. package/dist/llm/openai.js.map +1 -0
  45. package/dist/schema.d.ts +583 -0
  46. package/dist/schema.d.ts.map +1 -0
  47. package/dist/schema.js +41 -0
  48. package/dist/schema.js.map +1 -0
  49. package/dist/step.d.ts +3 -0
  50. package/dist/step.d.ts.map +1 -0
  51. package/dist/step.js +5 -0
  52. package/dist/step.js.map +1 -0
  53. package/dist/surface.d.ts +5 -0
  54. package/dist/surface.d.ts.map +1 -0
  55. package/dist/surface.js +44 -0
  56. package/dist/surface.js.map +1 -0
  57. package/dist/types.d.ts +63 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +2 -0
  60. package/dist/types.js.map +1 -0
  61. package/dist/workflow.d.ts +3 -0
  62. package/dist/workflow.d.ts.map +1 -0
  63. package/dist/workflow.js +104 -0
  64. package/dist/workflow.js.map +1 -0
  65. package/package.json +29 -0
@@ -0,0 +1,44 @@
1
+ const SURFACE_URL = process.env['BLACKLAKE_SURFACE_URL'] ?? 'http://localhost:3100';
2
+ let _surfaceAvailable = null;
3
+ export async function isSurfaceRunning() {
4
+ if (_surfaceAvailable !== null)
5
+ return _surfaceAvailable;
6
+ try {
7
+ const res = await fetch(`${SURFACE_URL}/health`, { signal: AbortSignal.timeout(2000) });
8
+ _surfaceAvailable = res.ok;
9
+ }
10
+ catch {
11
+ _surfaceAvailable = false;
12
+ }
13
+ return _surfaceAvailable;
14
+ }
15
+ export async function govern(agent, tool, action) {
16
+ const res = await fetch(`${SURFACE_URL}/v1/govern`, {
17
+ method: 'POST',
18
+ headers: { 'Content-Type': 'application/json' },
19
+ body: JSON.stringify({ agent, tool, action }),
20
+ });
21
+ if (!res.ok) {
22
+ throw new Error(`Surface govern failed: ${res.status} ${await res.text()}`);
23
+ }
24
+ return res.json();
25
+ }
26
+ export async function pollApproval(approvalId, intervalMs = 2000, timeoutMs = 300000) {
27
+ const start = Date.now();
28
+ while (Date.now() - start < timeoutMs) {
29
+ try {
30
+ const res = await fetch(`${SURFACE_URL}/v1/approvals/${approvalId}/status`);
31
+ if (res.ok) {
32
+ const data = await res.json();
33
+ if (data.status === 'approved')
34
+ return true;
35
+ if (data.status === 'rejected' || data.status === 'expired')
36
+ return false;
37
+ }
38
+ }
39
+ catch { /* Surface may have gone down */ }
40
+ await new Promise(r => setTimeout(r, intervalMs));
41
+ }
42
+ return false; // timed out
43
+ }
44
+ //# sourceMappingURL=surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,uBAAuB,CAAC;AAEpF,IAAI,iBAAiB,GAAmB,IAAI,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,iBAAiB,KAAK,IAAI;QAAE,OAAO,iBAAiB,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,iBAAiB,GAAG,GAAG,CAAC,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAa,EAAE,IAAY,EAAE,MAA+B;IACvF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,YAAY,EAAE;QAClD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KAC9C,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAA2B,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAkB,EAAE,UAAU,GAAG,IAAI,EAAE,SAAS,GAAG,MAAM;IAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,iBAAiB,UAAU,SAAS,CAAC,CAAC;YAC5E,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAwB,CAAC;gBACpD,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;oBAAE,OAAO,IAAI,CAAC;gBAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;YAC5E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,gCAAgC,CAAC,CAAC;QAC5C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,YAAY;AAC5B,CAAC"}
@@ -0,0 +1,63 @@
1
+ export type WorkflowStatus = 'running' | 'completed' | 'failed' | 'paused';
2
+ export type StepStatus = 'running' | 'completed' | 'failed' | 'skipped';
3
+ export interface WorkflowDefinition<TInput = unknown, TOutput = unknown> {
4
+ name: string;
5
+ fn: (ctx: WorkflowContext, input: TInput) => Promise<TOutput>;
6
+ run: (input?: TInput) => Promise<RunResult<TOutput>>;
7
+ }
8
+ export interface RunResult<T = unknown> {
9
+ runId: string;
10
+ status: WorkflowStatus;
11
+ output?: T;
12
+ error?: string;
13
+ steps: StepRecord[];
14
+ totalCostUsd: number;
15
+ }
16
+ export interface StepRecord {
17
+ id: string;
18
+ name: string;
19
+ status: StepStatus;
20
+ output?: unknown;
21
+ error?: string;
22
+ provider?: string;
23
+ model?: string;
24
+ inputTokens?: number;
25
+ outputTokens?: number;
26
+ costUsd?: number;
27
+ startedAt: string;
28
+ completedAt?: string;
29
+ }
30
+ export interface LlmOptions {
31
+ prompt?: string;
32
+ messages?: Array<{
33
+ role: 'system' | 'user' | 'assistant';
34
+ content: string;
35
+ }>;
36
+ temperature?: number;
37
+ maxTokens?: number;
38
+ }
39
+ export interface LlmResult {
40
+ content: string;
41
+ model: string;
42
+ provider: string;
43
+ inputTokens: number;
44
+ outputTokens: number;
45
+ costUsd: number;
46
+ }
47
+ export interface GovernResult {
48
+ decision: 'allow' | 'deny' | 'approval_required' | 'default_deny';
49
+ evaluation_id: string;
50
+ policy_id: string | null;
51
+ reason: string;
52
+ approval_id?: string;
53
+ }
54
+ export interface WorkflowContext {
55
+ runId: string;
56
+ workflowName: string;
57
+ llm(model: string, options: LlmOptions): Promise<string>;
58
+ tool(name: string, args: Record<string, unknown>): Promise<unknown>;
59
+ waitForApproval(reason: string): Promise<void>;
60
+ waitForSignal(name: string): Promise<unknown>;
61
+ waitFor(durationMs: number): Promise<void>;
62
+ }
63
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { WorkflowDefinition, WorkflowContext } from './types.js';
2
+ export declare function workflow<TInput = void, TOutput = unknown>(name: string, fn: (ctx: WorkflowContext, input: TInput) => Promise<TOutput>): WorkflowDefinition<TInput, TOutput>;
3
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAa,MAAM,YAAY,CAAC;AAEjF,wBAAgB,QAAQ,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,OAAO,EACvD,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC5D,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CA4GrC"}
@@ -0,0 +1,104 @@
1
+ import { eq } from 'drizzle-orm';
2
+ import { getDb } from './db.js';
3
+ import { depthsWorkflows, depthsRuns, depthsSteps } from './schema.js';
4
+ import { generateId } from './ids.js';
5
+ import { WorkflowContextImpl } from './context.js';
6
+ export function workflow(name, fn) {
7
+ return {
8
+ name,
9
+ fn,
10
+ run: async (input) => {
11
+ const db = getDb();
12
+ // Ensure workflow record exists
13
+ const [existing] = db.select().from(depthsWorkflows)
14
+ .where(eq(depthsWorkflows.name, name)).all();
15
+ let workflowId;
16
+ if (existing) {
17
+ workflowId = existing.id;
18
+ }
19
+ else {
20
+ workflowId = generateId('wf');
21
+ db.insert(depthsWorkflows).values({
22
+ id: workflowId,
23
+ name,
24
+ }).run();
25
+ }
26
+ // Check for an existing paused/running run to resume
27
+ const allRuns = db.select().from(depthsRuns)
28
+ .where(eq(depthsRuns.workflow_id, workflowId))
29
+ .all();
30
+ const existingRun = allRuns.find(r => r.status === 'running' || r.status === 'paused');
31
+ let runId;
32
+ if (existingRun) {
33
+ runId = existingRun.id;
34
+ console.log(`\n Resuming run ${runId}\n`);
35
+ }
36
+ else {
37
+ runId = generateId('run');
38
+ db.insert(depthsRuns).values({
39
+ id: runId,
40
+ workflow_id: workflowId,
41
+ status: 'running',
42
+ input: (input ?? null),
43
+ }).run();
44
+ console.log(`\n Starting run ${runId}\n`);
45
+ }
46
+ const ctx = new WorkflowContextImpl(runId, name);
47
+ try {
48
+ const output = await fn(ctx, input);
49
+ // Mark run as completed
50
+ db.update(depthsRuns)
51
+ .set({
52
+ status: 'completed',
53
+ output: (output ?? null),
54
+ total_cost_usd: ctx.getTotalCost(),
55
+ completed_at: new Date().toISOString(),
56
+ })
57
+ .where(eq(depthsRuns.id, runId))
58
+ .run();
59
+ console.log(`\n Run completed\n`);
60
+ const steps = db.select().from(depthsSteps)
61
+ .where(eq(depthsSteps.run_id, runId)).all();
62
+ return {
63
+ runId,
64
+ status: 'completed',
65
+ output,
66
+ steps: steps.map(s => ({
67
+ id: s.id,
68
+ name: s.name,
69
+ status: s.status,
70
+ output: s.output,
71
+ provider: s.provider ?? undefined,
72
+ model: s.model ?? undefined,
73
+ inputTokens: s.input_tokens ?? undefined,
74
+ outputTokens: s.output_tokens ?? undefined,
75
+ costUsd: s.cost_usd ?? undefined,
76
+ startedAt: s.started_at ?? '',
77
+ completedAt: s.completed_at ?? undefined,
78
+ })),
79
+ totalCostUsd: ctx.getTotalCost(),
80
+ };
81
+ }
82
+ catch (err) {
83
+ const errMsg = err instanceof Error ? err.message : String(err);
84
+ db.update(depthsRuns)
85
+ .set({
86
+ status: 'failed',
87
+ error: errMsg,
88
+ completed_at: new Date().toISOString(),
89
+ })
90
+ .where(eq(depthsRuns.id, runId))
91
+ .run();
92
+ console.log(`\n Run failed: ${errMsg}\n`);
93
+ return {
94
+ runId,
95
+ status: 'failed',
96
+ error: errMsg,
97
+ steps: [],
98
+ totalCostUsd: ctx.getTotalCost(),
99
+ };
100
+ }
101
+ },
102
+ };
103
+ }
104
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@blacklake-systems/depths-sdk",
3
+ "version": "0.1.0",
4
+ "description": "Durable execution engine for AI agent workflows",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" }
10
+ },
11
+ "files": ["dist/"],
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "dev": "tsc --watch",
15
+ "test": "vitest run"
16
+ },
17
+ "dependencies": {
18
+ "better-sqlite3": "^11.0.0",
19
+ "drizzle-orm": "^0.39.3"
20
+ },
21
+ "devDependencies": {
22
+ "@types/better-sqlite3": "^7.6.13",
23
+ "@types/node": "^22.14.0",
24
+ "typescript": "^5.8.3",
25
+ "vitest": "^3.1.1"
26
+ },
27
+ "engines": { "node": ">=20" },
28
+ "license": "MIT"
29
+ }