@dtoolkit/sdk 0.4.1 → 0.5.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 CHANGED
@@ -3,7 +3,7 @@
3
3
  </p>
4
4
 
5
5
  <h1 align="center">@dtoolkit/sdk</h1>
6
- <p align="center">Typed HTTP clients for dtoolkit services (dbrain + dproxy)</p>
6
+ <p align="center">Typed HTTP clients for dtoolkit services (dbrain + dproxy + dwork)</p>
7
7
 
8
8
  <p align="center">
9
9
  <a href="https://www.npmjs.com/package/@dtoolkit/sdk"><img src="https://img.shields.io/npm/v/@dtoolkit/sdk.svg" alt="npm"></a>
@@ -103,14 +103,56 @@ const history = await proxy.listHistory(10);
103
103
  const matches = await proxy.searchHistory("monads");
104
104
  ```
105
105
 
106
+ ### DWorkClient
107
+
108
+ Connect to a [dwork](../dwork/) project manager:
109
+
110
+ ```ts
111
+ import { DWorkClient } from "@dtoolkit/sdk";
112
+
113
+ const work = new DWorkClient("http://localhost:7881", "sk-dwk_...");
114
+
115
+ // Projects
116
+ const projects = await work.listProjects();
117
+ const project = await work.getProject("my-project");
118
+ await work.createProject({ slug: "new-project", name: "New Project" });
119
+
120
+ // Tasks
121
+ const tasks = await work.listTasks("my-project", { status: "doing" });
122
+ await work.addTask("my-project", {
123
+ title: "Implement auth",
124
+ priority: "P0",
125
+ status: "todo",
126
+ });
127
+ await work.updateTask("task_abc", { status: "done" });
128
+
129
+ // Docs
130
+ const docs = await work.listDocs("my-project");
131
+ const doc = await work.getDoc("doc_xyz");
132
+ await work.addDoc("my-project", {
133
+ title: "Auth Design",
134
+ body: "# Auth Design\n\n...",
135
+ type: "detail",
136
+ });
137
+
138
+ // Search & overview
139
+ const results = await work.search("authentication");
140
+ const overview = await work.overview();
141
+ const next = await work.whatToDoNext("my-project");
142
+
143
+ // Sync docs from source via dproxy
144
+ await work.sync("my-project");
145
+ ```
146
+
106
147
  ## Authentication
107
148
 
108
149
  All dtoolkit services use unified `Authorization: Bearer <token>` authentication. Pass the token as the second constructor argument:
109
150
 
110
151
  ```ts
111
- // Both clients use the same auth mechanism
152
+ // All clients use the same auth mechanism
112
153
  const brain = new DBrainClient("http://localhost:7878", "my-token");
113
154
  const proxy = new DProxyClient("http://localhost:7880", "my-token");
155
+ const work = new DWorkClient("http://localhost:7881", "my-token");
114
156
 
115
157
  // Or use the options object
116
158
  const brain = new DBrainClient({
@@ -196,6 +238,33 @@ try {
196
238
  | `getConfigValue(key)` | Get a config value by key |
197
239
  | `setConfigValue(key, value)` | Set a config value |
198
240
 
241
+ ### DWorkClient
242
+
243
+ | Method | Description |
244
+ | --- | --- |
245
+ | `health()` | Server health check |
246
+ | `listProjects(status?)` | List projects (filter by status) |
247
+ | `getProject(slug)` | Get project details |
248
+ | `createProject(project)` | Create a new project |
249
+ | `updateProject(slug, changes)` | Update a project |
250
+ | `deleteProject(slug)` | Delete a project |
251
+ | `listTasks(project, filters?)` | List tasks (filter by status/priority) |
252
+ | `addTask(project, task)` | Add a task to a project |
253
+ | `updateTask(id, changes)` | Update a task |
254
+ | `deleteTask(id)` | Delete a task |
255
+ | `listDocs(project, type?)` | List documents (filter by type) |
256
+ | `getDoc(id)` | Get document with content |
257
+ | `addDoc(project, doc)` | Create a numbered document |
258
+ | `updateDoc(id, changes)` | Update document content |
259
+ | `deleteDoc(id)` | Delete a document |
260
+ | `search(query, options?)` | Full-text search across tasks + docs |
261
+ | `overview()` | Global stats + per-project summaries |
262
+ | `whatToDoNext(project?)` | Suggested next tasks by priority/deadline |
263
+ | `sync(project)` | Sync docs from source via dproxy |
264
+ | `createApiKey(params)` | Create a per-user API key |
265
+ | `listApiKeys()` | List API keys |
266
+ | `revokeApiKey(id)` | Revoke an API key |
267
+
199
268
  ## License
200
269
 
201
270
  MIT
@@ -0,0 +1,94 @@
1
+ import type { DWorkApiKeyCreateResponse, DWorkApiKeyListItem, DWorkDoc, DWorkHealthResponse, DWorkOverview, DWorkProject, DWorkProjectSummary, DWorkSearchResult, DWorkSyncResult, DWorkTask } from './types.js';
2
+ export interface DWorkClientOptions {
3
+ baseUrl: string;
4
+ token: string;
5
+ timeoutMs?: number;
6
+ }
7
+ export declare class DWorkClient {
8
+ private readonly http;
9
+ constructor(baseUrl: string, token: string);
10
+ constructor(options: DWorkClientOptions);
11
+ health(): Promise<DWorkHealthResponse>;
12
+ listProjects(status?: string): Promise<DWorkProjectSummary[]>;
13
+ getProject(slug: string): Promise<DWorkProject>;
14
+ createProject(project: {
15
+ slug: string;
16
+ name: string;
17
+ description?: string;
18
+ source_path?: string;
19
+ }): Promise<DWorkProject>;
20
+ updateProject(slug: string, changes: {
21
+ name?: string;
22
+ description?: string;
23
+ status?: string;
24
+ source_path?: string;
25
+ }): Promise<DWorkProject>;
26
+ deleteProject(slug: string): Promise<{
27
+ deleted: boolean;
28
+ slug: string;
29
+ }>;
30
+ listTasks(project: string, filters?: {
31
+ status?: string;
32
+ priority?: string;
33
+ }): Promise<DWorkTask[]>;
34
+ addTask(project: string, task: {
35
+ title: string;
36
+ type?: string;
37
+ priority?: string;
38
+ status?: string;
39
+ estimate?: string;
40
+ deadline?: string;
41
+ }): Promise<DWorkTask>;
42
+ updateTask(id: string, changes: {
43
+ title?: string;
44
+ status?: string;
45
+ priority?: string;
46
+ type?: string;
47
+ estimate?: string;
48
+ deadline?: string;
49
+ }): Promise<{
50
+ updated: boolean;
51
+ id: string;
52
+ }>;
53
+ deleteTask(id: string): Promise<{
54
+ deleted: boolean;
55
+ id: string;
56
+ }>;
57
+ listDocs(project: string, type?: string): Promise<DWorkDoc[]>;
58
+ getDoc(id: string): Promise<DWorkDoc>;
59
+ addDoc(project: string, doc: {
60
+ title: string;
61
+ body: string;
62
+ type: string;
63
+ }): Promise<DWorkDoc>;
64
+ updateDoc(id: string, changes: {
65
+ title?: string;
66
+ body?: string;
67
+ type?: string;
68
+ }): Promise<{
69
+ updated: boolean;
70
+ id: string;
71
+ }>;
72
+ deleteDoc(id: string): Promise<{
73
+ deleted: boolean;
74
+ id: string;
75
+ }>;
76
+ search(query: string, options?: {
77
+ project?: string;
78
+ limit?: number;
79
+ }): Promise<DWorkSearchResult[]>;
80
+ overview(): Promise<DWorkOverview>;
81
+ whatToDoNext(project?: string): Promise<DWorkTask[]>;
82
+ sync(project: string): Promise<DWorkSyncResult>;
83
+ createApiKey(params: {
84
+ userId: string;
85
+ userName: string;
86
+ permissions?: string;
87
+ }): Promise<DWorkApiKeyCreateResponse>;
88
+ listApiKeys(): Promise<DWorkApiKeyListItem[]>;
89
+ revokeApiKey(id: string): Promise<{
90
+ id: string;
91
+ revoked: boolean;
92
+ }>;
93
+ }
94
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/dwork/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { HttpClient, enc, qs } from '../http.js';
2
+ export class DWorkClient {
3
+ http;
4
+ constructor(baseUrlOrOptions, token) {
5
+ if (typeof baseUrlOrOptions === 'string') {
6
+ this.http = new HttpClient({
7
+ baseUrl: baseUrlOrOptions,
8
+ token: token ?? '',
9
+ });
10
+ }
11
+ else {
12
+ this.http = new HttpClient({
13
+ baseUrl: baseUrlOrOptions.baseUrl,
14
+ token: baseUrlOrOptions.token,
15
+ timeoutMs: baseUrlOrOptions.timeoutMs,
16
+ });
17
+ }
18
+ }
19
+ // --- Health ---
20
+ async health() {
21
+ return this.http.get('/health');
22
+ }
23
+ // --- Projects ---
24
+ async listProjects(status) {
25
+ const params = new URLSearchParams();
26
+ if (status)
27
+ params.set('status', status);
28
+ return this.http.get(`/projects${qs(params)}`);
29
+ }
30
+ async getProject(slug) {
31
+ return this.http.get(`/projects/${enc(slug)}`);
32
+ }
33
+ async createProject(project) {
34
+ return this.http.post('/projects', project);
35
+ }
36
+ async updateProject(slug, changes) {
37
+ return this.http.patch(`/projects/${enc(slug)}`, changes);
38
+ }
39
+ async deleteProject(slug) {
40
+ return this.http.del(`/projects/${enc(slug)}`);
41
+ }
42
+ // --- Tasks ---
43
+ async listTasks(project, filters) {
44
+ const params = new URLSearchParams();
45
+ if (filters?.status)
46
+ params.set('status', filters.status);
47
+ if (filters?.priority)
48
+ params.set('priority', filters.priority);
49
+ return this.http.get(`/projects/${enc(project)}/tasks${qs(params)}`);
50
+ }
51
+ async addTask(project, task) {
52
+ return this.http.post(`/projects/${enc(project)}/tasks`, task);
53
+ }
54
+ async updateTask(id, changes) {
55
+ return this.http.patch(`/tasks/${enc(id)}`, changes);
56
+ }
57
+ async deleteTask(id) {
58
+ return this.http.del(`/tasks/${enc(id)}`);
59
+ }
60
+ // --- Docs ---
61
+ async listDocs(project, type) {
62
+ const params = new URLSearchParams();
63
+ if (type)
64
+ params.set('type', type);
65
+ return this.http.get(`/projects/${enc(project)}/docs${qs(params)}`);
66
+ }
67
+ async getDoc(id) {
68
+ return this.http.get(`/docs/${enc(id)}`);
69
+ }
70
+ async addDoc(project, doc) {
71
+ return this.http.post(`/projects/${enc(project)}/docs`, doc);
72
+ }
73
+ async updateDoc(id, changes) {
74
+ return this.http.patch(`/docs/${enc(id)}`, changes);
75
+ }
76
+ async deleteDoc(id) {
77
+ return this.http.del(`/docs/${enc(id)}`);
78
+ }
79
+ // --- Search ---
80
+ async search(query, options) {
81
+ return this.http.post('/search', { query, ...options });
82
+ }
83
+ // --- Overview ---
84
+ async overview() {
85
+ return this.http.get('/overview');
86
+ }
87
+ async whatToDoNext(project) {
88
+ const params = new URLSearchParams();
89
+ if (project)
90
+ params.set('project', project);
91
+ return this.http.get(`/next${qs(params)}`);
92
+ }
93
+ // --- Sync ---
94
+ async sync(project) {
95
+ return this.http.post(`/sync/${enc(project)}`, {});
96
+ }
97
+ // --- API Keys ---
98
+ async createApiKey(params) {
99
+ return this.http.post('/keys', params);
100
+ }
101
+ async listApiKeys() {
102
+ return this.http.get('/keys');
103
+ }
104
+ async revokeApiKey(id) {
105
+ return this.http.del(`/keys/${enc(id)}`);
106
+ }
107
+ }
108
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/dwork/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { DWorkClient, type DWorkClientOptions } from './client.js';
2
+ export type { DWorkApiKeyCreateResponse, DWorkApiKeyListItem, DWorkDoc, DWorkHealthResponse, DWorkOverview, DWorkProject, DWorkProjectSummary, DWorkSearchResult, DWorkSyncResult, DWorkTask, } from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dwork/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEnE,YAAY,EACV,yBAAyB,EACzB,mBAAmB,EACnB,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,SAAS,GACV,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DWorkClient } from './client.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dwork/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC"}
@@ -0,0 +1,100 @@
1
+ export interface DWorkHealthResponse {
2
+ status: string;
3
+ version: string;
4
+ projects: number;
5
+ tasks: number;
6
+ docs: number;
7
+ }
8
+ export interface DWorkProject {
9
+ slug: string;
10
+ name: string;
11
+ description: string | null;
12
+ status: string;
13
+ path: string;
14
+ source_path: string | null;
15
+ created_at: string;
16
+ updated_at: string;
17
+ readme?: string;
18
+ tech?: string;
19
+ taskCounts?: Record<string, number>;
20
+ }
21
+ export interface DWorkProjectSummary {
22
+ slug: string;
23
+ name: string;
24
+ description: string | null;
25
+ status: string;
26
+ taskCounts: Record<string, number>;
27
+ }
28
+ export interface DWorkTask {
29
+ id: string;
30
+ project_slug: string;
31
+ title: string;
32
+ type: string;
33
+ status: string;
34
+ priority: string;
35
+ estimate: string | null;
36
+ deadline: string | null;
37
+ source: string;
38
+ detail_path: string | null;
39
+ tags: string;
40
+ line_number: number | null;
41
+ created_at: string;
42
+ updated_at: string;
43
+ }
44
+ export interface DWorkDoc {
45
+ id: string;
46
+ project_slug: string;
47
+ title: string;
48
+ type: string;
49
+ file_path: string;
50
+ body_hash: string | null;
51
+ created_at: string;
52
+ updated_at: string;
53
+ content?: string;
54
+ }
55
+ export interface DWorkSearchResult {
56
+ type: 'task' | 'doc';
57
+ id: string;
58
+ title: string;
59
+ projectSlug: string;
60
+ docType?: string;
61
+ taskStatus?: string;
62
+ taskPriority?: string;
63
+ score: number;
64
+ }
65
+ export interface DWorkOverview {
66
+ totalProjects: number;
67
+ totalTasks: number;
68
+ totalDocs: number;
69
+ projects: Array<{
70
+ slug: string;
71
+ name: string;
72
+ tasksByStatus: Record<string, number>;
73
+ tasksByPriority: Record<string, number>;
74
+ totalTasks: number;
75
+ totalDocs: number;
76
+ }>;
77
+ }
78
+ export interface DWorkSyncResult {
79
+ success: boolean;
80
+ message: string;
81
+ updatedFiles?: string[];
82
+ }
83
+ export interface DWorkApiKeyCreateResponse {
84
+ id: string;
85
+ token: string;
86
+ userId: string;
87
+ userName: string;
88
+ permissions: string;
89
+ }
90
+ export interface DWorkApiKeyListItem {
91
+ id: string;
92
+ tokenPreview: string;
93
+ userId: string;
94
+ userName: string;
95
+ permissions: string;
96
+ createdAt: string;
97
+ lastUsed: string | null;
98
+ status: string;
99
+ }
100
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dwork/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dwork/types.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  export { DBrainClient, type DBrainClientOptions } from './dbrain/index.js';
2
2
  export { DProxyClient, type DProxyClientOptions } from './dproxy/index.js';
3
+ export { DWorkClient, type DWorkClientOptions } from './dwork/index.js';
3
4
  export { SdkError } from './http.js';
4
5
  /** @deprecated Use SdkError instead */
5
6
  export { SdkError as DBrainError } from './http.js';
6
7
  export type { ApiKeyCreateResponse, ApiKeyListItem, ConnectResponse, ConnectionStatus, ConversationSummary, ConversationWithMessages, Document, DocumentListItem, EntityRow, EntityWithFacts, FactRow, FederatedSearchResponse, HealthResponse, MemorySummaryRow, Message, PendingMessages, SearchResult, ShareResult, } from './dbrain/index.js';
7
8
  export type { AskOptions, AskResponse, DProxyHealthResponse, MemorySearchResult, ProviderName, TemplateRunOptions, } from './dproxy/index.js';
9
+ export type { DWorkApiKeyCreateResponse, DWorkApiKeyListItem, DWorkDoc, DWorkHealthResponse, DWorkOverview, DWorkProject, DWorkProjectSummary, DWorkSearchResult, DWorkSyncResult, DWorkTask, } from './dwork/index.js';
8
10
  export type { AdapterResult, AdapterStreamEvent, AdapterUsage, InputFile } from '@dtoolkit/core';
9
11
  export type { HistoryEntry, TemplateDefinition } from '@dtoolkit/core';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,uCAAuC;AACvC,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAGpD,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,OAAO,EACP,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACjG,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGxE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,uCAAuC;AACvC,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAGpD,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,OAAO,EACP,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,yBAAyB,EACzB,mBAAmB,EACnB,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,SAAS,GACV,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACjG,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // --- Clients ---
2
2
  export { DBrainClient } from './dbrain/index.js';
3
3
  export { DProxyClient } from './dproxy/index.js';
4
+ export { DWorkClient } from './dwork/index.js';
4
5
  // --- Shared ---
5
6
  export { SdkError } from './http.js';
6
7
  /** @deprecated Use SdkError instead */
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAE3E,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,uCAAuC;AACvC,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAExE,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,uCAAuC;AACvC,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dtoolkit/sdk",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Typed HTTP clients for dtoolkit services (dbrain + dproxy)",
5
5
  "type": "module",
6
6
  "license": "MIT",