@devflow-tools/sdk 0.18.3 → 0.18.5

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 (49) hide show
  1. package/dist/index.d.ts +3 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/paths.d.ts +1 -0
  6. package/dist/paths.d.ts.map +1 -1
  7. package/dist/paths.js +1 -1
  8. package/dist/paths.js.map +1 -1
  9. package/dist/runtime-http-circuit.d.ts +47 -0
  10. package/dist/runtime-http-circuit.d.ts.map +1 -0
  11. package/dist/runtime-http-circuit.js +78 -0
  12. package/dist/runtime-http-circuit.js.map +1 -0
  13. package/dist/runtime-manager.d.ts +121 -0
  14. package/dist/runtime-manager.d.ts.map +1 -0
  15. package/dist/runtime-manager.js +335 -0
  16. package/dist/runtime-manager.js.map +1 -0
  17. package/dist/schemas/dashboard.d.ts +303 -0
  18. package/dist/schemas/dashboard.d.ts.map +1 -0
  19. package/dist/schemas/dashboard.js +110 -0
  20. package/dist/schemas/dashboard.js.map +1 -0
  21. package/dist/types/action.d.ts +10 -0
  22. package/dist/types/action.d.ts.map +1 -0
  23. package/dist/types/action.js +2 -0
  24. package/dist/types/action.js.map +1 -0
  25. package/dist/types/context-pack.d.ts +32 -0
  26. package/dist/types/context-pack.d.ts.map +1 -0
  27. package/dist/types/context-pack.js +2 -0
  28. package/dist/types/context-pack.js.map +1 -0
  29. package/dist/types/dashboard.d.ts +42 -0
  30. package/dist/types/dashboard.d.ts.map +1 -0
  31. package/dist/types/dashboard.js +2 -0
  32. package/dist/types/dashboard.js.map +1 -0
  33. package/dist/types/index.d.ts +5 -0
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/types/index.js +5 -0
  36. package/dist/types/index.js.map +1 -1
  37. package/dist/types/run-dashboard.d.ts +32 -0
  38. package/dist/types/run-dashboard.d.ts.map +1 -0
  39. package/dist/types/run-dashboard.js +2 -0
  40. package/dist/types/run-dashboard.js.map +1 -0
  41. package/dist/types/task-dashboard.d.ts +11 -0
  42. package/dist/types/task-dashboard.d.ts.map +1 -0
  43. package/dist/types/task-dashboard.js +2 -0
  44. package/dist/types/task-dashboard.js.map +1 -0
  45. package/package.json +4 -3
  46. package/dist/runtime-endpoint.d.ts +0 -62
  47. package/dist/runtime-endpoint.d.ts.map +0 -1
  48. package/dist/runtime-endpoint.js +0 -206
  49. package/dist/runtime-endpoint.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-dashboard.js","sourceRoot":"","sources":["../../src/types/task-dashboard.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devflow-tools/sdk",
3
- "version": "0.18.3",
3
+ "version": "0.18.5",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -32,13 +32,14 @@
32
32
  }
33
33
  },
34
34
  "scripts": {
35
- "build": "tsc -b",
35
+ "build": "npm run clean && tsc -b --force",
36
36
  "test": "node ../../node_modules/.bin/vitest run",
37
37
  "typecheck": "tsc --noEmit",
38
38
  "clean": "rm -rf dist"
39
39
  },
40
40
  "dependencies": {
41
- "tiktoken": "^1.0.0"
41
+ "tiktoken": "^1.0.0",
42
+ "zod": "4.4.3"
42
43
  },
43
44
  "devDependencies": {
44
45
  "typescript": "^5.5.0",
@@ -1,62 +0,0 @@
1
- import { type DevFlowPathOptions } from './paths.js';
2
- export declare const DEFAULT_DEVFLOW_SERVER_PORT = 13337;
3
- export declare const DEFAULT_DEVFLOW_SERVER_URL = "http://127.0.0.1:13337";
4
- export interface RuntimeEndpointState {
5
- schemaVersion: 'devflow.endpoint.v1';
6
- url: string;
7
- port: number;
8
- pid: number;
9
- processGroupId?: number;
10
- ownerToken: string;
11
- generation?: number;
12
- status: 'launching' | 'healthy' | 'degraded' | 'stopped';
13
- updatedAt: number;
14
- }
15
- export interface ResolvedRuntimeEndpoint {
16
- url: string;
17
- port: number;
18
- source: 'environment' | 'registry' | 'default';
19
- state?: RuntimeEndpointState;
20
- }
21
- export interface RuntimeHttpCircuitState {
22
- endpoint: string;
23
- route: string;
24
- status: 'closed' | 'open' | 'half_open';
25
- failures: number;
26
- lastFailureAt?: number;
27
- openUntil?: number;
28
- probeStartedAt?: number;
29
- fallbackReason?: string;
30
- updatedAt: number;
31
- }
32
- export declare function getRuntimeEndpointPath(options?: DevFlowPathOptions): string;
33
- export declare function getRuntimeHttpCircuitPath(options?: DevFlowPathOptions): string;
34
- export declare function readRuntimeEndpointState(options?: DevFlowPathOptions): RuntimeEndpointState | null;
35
- export declare function writeRuntimeEndpointState(state: Omit<RuntimeEndpointState, 'schemaVersion' | 'updatedAt'> & {
36
- updatedAt?: number;
37
- }, options?: DevFlowPathOptions): RuntimeEndpointState;
38
- export declare function updateRuntimeEndpointStatus(status: RuntimeEndpointState['status'], updates?: Partial<Omit<RuntimeEndpointState, 'schemaVersion' | 'status' | 'updatedAt'>>, options?: DevFlowPathOptions): RuntimeEndpointState | null;
39
- export declare function resolveRuntimeEndpoint(options?: DevFlowPathOptions): ResolvedRuntimeEndpoint;
40
- export declare function acquireRuntimeHttpCircuit(endpoint: string, route: string, options?: DevFlowPathOptions & {
41
- now?: number;
42
- halfOpenProbeTimeoutMs?: number;
43
- }): {
44
- allowed: boolean;
45
- probe: boolean;
46
- state: RuntimeHttpCircuitState;
47
- };
48
- export declare function registerRuntimeHttpFailure(endpoint: string, route: string, fallbackReason: string, options?: DevFlowPathOptions & {
49
- now?: number;
50
- openMs?: number;
51
- }): {
52
- transitioned: boolean;
53
- state: RuntimeHttpCircuitState;
54
- };
55
- export declare function registerRuntimeHttpSuccess(endpoint: string, route: string, options?: DevFlowPathOptions & {
56
- now?: number;
57
- }): {
58
- transitioned: boolean;
59
- state: RuntimeHttpCircuitState;
60
- };
61
- export declare function listRuntimeHttpCircuits(options?: DevFlowPathOptions): RuntimeHttpCircuitState[];
62
- //# sourceMappingURL=runtime-endpoint.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-endpoint.d.ts","sourceRoot":"","sources":["../src/runtime-endpoint.ts"],"names":[],"mappings":"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"}
@@ -1,206 +0,0 @@
1
- import { randomUUID } from 'node:crypto';
2
- import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
3
- import { dirname, join } from 'node:path';
4
- import { getDevFlowStateRoot } from './paths.js';
5
- export const DEFAULT_DEVFLOW_SERVER_PORT = 13337;
6
- export const DEFAULT_DEVFLOW_SERVER_URL = `http://127.0.0.1:${DEFAULT_DEVFLOW_SERVER_PORT}`;
7
- export function getRuntimeEndpointPath(options = {}) {
8
- return join(getDevFlowStateRoot(options), 'runtime-endpoint.json');
9
- }
10
- export function getRuntimeHttpCircuitPath(options = {}) {
11
- return join(getDevFlowStateRoot(options), 'runtime-http-circuits.json');
12
- }
13
- export function readRuntimeEndpointState(options = {}) {
14
- const value = readJson(getRuntimeEndpointPath(options));
15
- return isRuntimeEndpointState(value) ? value : null;
16
- }
17
- export function writeRuntimeEndpointState(state, options = {}) {
18
- const normalizedUrl = normalizeServerUrl(state.url);
19
- const previous = readRuntimeEndpointState(options);
20
- const next = {
21
- schemaVersion: 'devflow.endpoint.v1',
22
- ...state,
23
- url: normalizedUrl,
24
- port: getUrlPort(normalizedUrl),
25
- generation: state.generation ?? (previous?.ownerToken === state.ownerToken
26
- ? previous.generation ?? 1
27
- : (previous?.generation ?? 0) + 1),
28
- updatedAt: state.updatedAt ?? Date.now(),
29
- };
30
- writeJsonAtomic(getRuntimeEndpointPath(options), next);
31
- return next;
32
- }
33
- export function updateRuntimeEndpointStatus(status, updates = {}, options = {}) {
34
- const current = readRuntimeEndpointState(options);
35
- if (!current && (!updates.url || !updates.ownerToken || !updates.pid))
36
- return null;
37
- return writeRuntimeEndpointState({
38
- url: updates.url ?? current.url,
39
- port: updates.port ?? current.port,
40
- pid: updates.pid ?? current.pid,
41
- processGroupId: updates.processGroupId ?? current?.processGroupId,
42
- ownerToken: updates.ownerToken ?? current.ownerToken,
43
- status,
44
- }, options);
45
- }
46
- export function resolveRuntimeEndpoint(options = {}) {
47
- const env = options.env ?? process.env;
48
- const override = env.DEVFLOW_SERVER_URL?.trim() || env.DEVFLOW_API_URL?.trim();
49
- if (override) {
50
- const url = normalizeServerUrl(override);
51
- return { url, port: getUrlPort(url), source: 'environment' };
52
- }
53
- const state = readRuntimeEndpointState(options);
54
- if (state?.status === 'healthy' && isProcessAlive(state.pid)) {
55
- return { url: state.url, port: state.port, source: 'registry', state };
56
- }
57
- return {
58
- url: DEFAULT_DEVFLOW_SERVER_URL,
59
- port: DEFAULT_DEVFLOW_SERVER_PORT,
60
- source: 'default',
61
- ...(state ? { state } : {}),
62
- };
63
- }
64
- export function acquireRuntimeHttpCircuit(endpoint, route, options = {}) {
65
- const now = options.now ?? Date.now();
66
- const registry = readCircuitRegistry(options);
67
- const key = circuitKey(endpoint, route);
68
- const current = registry.circuits[key] ?? createClosedCircuit(endpoint, route, now);
69
- if (current.status === 'open' && (current.openUntil ?? 0) > now) {
70
- return { allowed: false, probe: false, state: current };
71
- }
72
- const probeTimeout = options.halfOpenProbeTimeoutMs ?? 5_000;
73
- if (current.status === 'half_open' && now - (current.probeStartedAt ?? now) < probeTimeout) {
74
- return { allowed: false, probe: false, state: current };
75
- }
76
- if (current.status !== 'closed') {
77
- const halfOpen = {
78
- ...current,
79
- status: 'half_open',
80
- probeStartedAt: now,
81
- updatedAt: now,
82
- };
83
- registry.circuits[key] = halfOpen;
84
- writeCircuitRegistry(registry, options);
85
- return { allowed: true, probe: true, state: halfOpen };
86
- }
87
- return { allowed: true, probe: false, state: current };
88
- }
89
- export function registerRuntimeHttpFailure(endpoint, route, fallbackReason, options = {}) {
90
- const now = options.now ?? Date.now();
91
- const registry = readCircuitRegistry(options);
92
- const key = circuitKey(endpoint, route);
93
- const previous = registry.circuits[key] ?? createClosedCircuit(endpoint, route, now);
94
- const next = {
95
- ...previous,
96
- status: 'open',
97
- failures: previous.failures + 1,
98
- lastFailureAt: now,
99
- openUntil: now + (options.openMs ?? 60_000),
100
- probeStartedAt: undefined,
101
- fallbackReason,
102
- updatedAt: now,
103
- };
104
- registry.circuits[key] = next;
105
- writeCircuitRegistry(registry, options);
106
- return { transitioned: previous.status !== 'open', state: next };
107
- }
108
- export function registerRuntimeHttpSuccess(endpoint, route, options = {}) {
109
- const now = options.now ?? Date.now();
110
- const registry = readCircuitRegistry(options);
111
- const key = circuitKey(endpoint, route);
112
- const previous = registry.circuits[key] ?? createClosedCircuit(endpoint, route, now);
113
- const next = createClosedCircuit(endpoint, route, now);
114
- registry.circuits[key] = next;
115
- writeCircuitRegistry(registry, options);
116
- return { transitioned: previous.status !== 'closed' || previous.failures > 0, state: next };
117
- }
118
- export function listRuntimeHttpCircuits(options = {}) {
119
- return Object.values(readCircuitRegistry(options).circuits);
120
- }
121
- function normalizeServerUrl(value) {
122
- const parsed = new URL(value);
123
- if (!['http:', 'https:'].includes(parsed.protocol))
124
- throw new Error(`Unsupported DevFlow endpoint protocol: ${parsed.protocol}`);
125
- parsed.pathname = parsed.pathname.replace(/\/+$/u, '') || '/';
126
- parsed.search = '';
127
- parsed.hash = '';
128
- return parsed.toString().replace(/\/$/u, '');
129
- }
130
- function getUrlPort(value) {
131
- const parsed = new URL(value);
132
- const port = Number(parsed.port || (parsed.protocol === 'https:' ? 443 : 80));
133
- if (!Number.isSafeInteger(port) || port <= 0 || port > 65535)
134
- throw new Error(`Invalid DevFlow endpoint port: ${parsed.port}`);
135
- return port;
136
- }
137
- function isRuntimeEndpointState(value) {
138
- if (!value || typeof value !== 'object' || Array.isArray(value))
139
- return false;
140
- const record = value;
141
- return record.schemaVersion === 'devflow.endpoint.v1'
142
- && typeof record.url === 'string'
143
- && Number.isSafeInteger(record.port)
144
- && Number.isSafeInteger(record.pid)
145
- && typeof record.ownerToken === 'string'
146
- && ['launching', 'healthy', 'degraded', 'stopped'].includes(String(record.status))
147
- && typeof record.updatedAt === 'number';
148
- }
149
- function isProcessAlive(pid) {
150
- if (!Number.isSafeInteger(pid) || pid <= 1)
151
- return false;
152
- try {
153
- process.kill(pid, 0);
154
- return true;
155
- }
156
- catch (error) {
157
- return error.code === 'EPERM';
158
- }
159
- }
160
- function circuitKey(endpoint, route) {
161
- return `${normalizeServerUrl(endpoint)}\0${new URL(route, endpoint).pathname}`;
162
- }
163
- function createClosedCircuit(endpoint, route, now) {
164
- return {
165
- endpoint: normalizeServerUrl(endpoint),
166
- route: new URL(route, endpoint).pathname,
167
- status: 'closed',
168
- failures: 0,
169
- updatedAt: now,
170
- };
171
- }
172
- function readCircuitRegistry(options) {
173
- const value = readJson(getRuntimeHttpCircuitPath(options));
174
- if (value && typeof value === 'object' && !Array.isArray(value)) {
175
- const record = value;
176
- if (record.schemaVersion === 'devflow.http-circuits.v1' && record.circuits && typeof record.circuits === 'object') {
177
- return record;
178
- }
179
- }
180
- return { schemaVersion: 'devflow.http-circuits.v1', circuits: {}, updatedAt: 0 };
181
- }
182
- function writeCircuitRegistry(registry, options) {
183
- registry.updatedAt = Date.now();
184
- const entries = Object.entries(registry.circuits)
185
- .sort((left, right) => right[1].updatedAt - left[1].updatedAt)
186
- .slice(0, 256);
187
- registry.circuits = Object.fromEntries(entries);
188
- writeJsonAtomic(getRuntimeHttpCircuitPath(options), registry);
189
- }
190
- function readJson(path) {
191
- if (!existsSync(path))
192
- return null;
193
- try {
194
- return JSON.parse(readFileSync(path, 'utf8'));
195
- }
196
- catch {
197
- return null;
198
- }
199
- }
200
- function writeJsonAtomic(path, value) {
201
- mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
202
- const temporary = `${path}.${process.pid}.${randomUUID()}.tmp`;
203
- writeFileSync(temporary, JSON.stringify(value, null, 2), { mode: 0o600 });
204
- renameSync(temporary, path);
205
- }
206
- //# sourceMappingURL=runtime-endpoint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-endpoint.js","sourceRoot":"","sources":["../src/runtime-endpoint.ts"],"names":[],"mappings":"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"}